From da75a7c00cf8959ce7de1c5b2f905e2b11690f73 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 1 Mar 2023 15:04:05 +0100
Subject: [PATCH 001/656] nvim: config

---
 .config/nvim/init.lua                  |  1 +
 .config/nvim/lua/plugins/dap.lua       | 56 ++++++++++++++++----------
 .config/nvim/lua/plugins/misc.lua      | 18 ++++-----
 .config/nvim/lua/plugins/null-ls.lua   |  1 +
 .config/nvim/lua/plugins/telescope.lua |  2 +-
 5 files changed, 47 insertions(+), 31 deletions(-)

diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index 55b8979..74740c5 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -1 +1,2 @@
+require("config.options")
 require("config.lazy")
diff --git a/.config/nvim/lua/plugins/dap.lua b/.config/nvim/lua/plugins/dap.lua
index aeec64d..c31328f 100644
--- a/.config/nvim/lua/plugins/dap.lua
+++ b/.config/nvim/lua/plugins/dap.lua
@@ -1,8 +1,6 @@
-local M = {
+return {
 	"mfussenegger/nvim-dap",
-
 	dependencies = {
-		{ "rcarriga/nvim-dap-ui" },
 		{
 			"theHamsta/nvim-dap-virtual-text",
 			config = function()
@@ -16,24 +14,40 @@ local M = {
 			config = function()
 				require("dap-go").setup()
 			end,
-			keys = {
-				{ "<leader>y", ":lua require('dap-go').debug_test()<CR>" },
-			},
 		},
 	},
+	keys = {
+		{ "DD", ":lua require'dap'.toggle_breakpoint()<cr>", desc = "Toggle Breakpoint" },
+		{ "Dc", ":lua require'dap'.continue()<cr>", desc = "Continue" },
+		{ "Di", ":lua require'dap'.step_into()<cr>", desc = "Step Into" },
+		{ "Do", ":lua require'dap'.step_over()<cr>", desc = "Step Over" },
+		{ "DO", ":lua require'dap'.step_out()<cr>", desc = "Step Out" },
+		{ "Dh", ":lua require'dap.ui.widgets'.hover()<cr>", desc = "Hover" },
+		{ "Dr", ":lua require'dap'.repl.toggle({height = 5})<cr>", desc = "Toogle Repl" },
+	},
+	config = function()
+		require("dap")
+		require("dap.ext.vscode").load_launchjs()
+
+		vim.fn.sign_define(
+			"DapBreakpoint",
+			{ text = "", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
+		)
+		vim.fn.sign_define(
+			"DapBreakpointCondition",
+			{ text = "ﳁ", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
+		)
+		vim.fn.sign_define(
+			"DapBreakpointRejected",
+			{ text = "", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
+		)
+		vim.fn.sign_define(
+			"DapLogPoint",
+			{ text = "", texthl = "DapLogPoint", linehl = "DapLogPoint", numhl = "DapLogPoint" }
+		)
+		vim.fn.sign_define(
+			"DapStopped",
+			{ text = "", texthl = "DapStopped", linehl = "DapStopped", numhl = "DapStopped" }
+		)
+	end,
 }
-
-function M.init()
-	local silent = { silent = true }
-	vim.fn.sign_define("DapStopped", { text = "⇒", texthl = "", linehl = "debugPC", numhl = "" })
-	vim.fn.sign_define("DapBreakpoint", { text = "🧘", texthl = "", linehl = "debugPC", numhl = "" })
-	vim.keymap.set("n", "DD", ":lua require 'dap'.toggle_breakpoint()<CR>", silent)
-	vim.keymap.set("n", "Dc", ":lua require 'dap'.continue()<CR>", silent)
-	vim.keymap.set("n", "Di", ":lua require 'dap'.step_into()<CR>", silent)
-	vim.keymap.set("n", "Do", ":lua require 'dap'.step_over()<CR>", silent)
-	vim.keymap.set("n", "DO", ":lua require 'dap'.step_out()<CR>", silent)
-	vim.keymap.set("n", "Dr", ":lua require 'dap'.repl.toggle({height = 5})<CR>", silent)
-	vim.keymap.set("n", "Dh", ":lua require 'dap.ui.widgets'.hover()<CR>", silent)
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/misc.lua b/.config/nvim/lua/plugins/misc.lua
index 4689229..24391dd 100644
--- a/.config/nvim/lua/plugins/misc.lua
+++ b/.config/nvim/lua/plugins/misc.lua
@@ -104,13 +104,13 @@ return {
 		end,
 	},
 
-	{
-		url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
-		config = function()
-			require("lsp_lines").setup()
-			vim.diagnostic.config({
-				virtual_text = false,
-			})
-		end,
-	},
+	-- {
+	-- 	url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
+	-- 	config = function()
+	-- 		require("lsp_lines").setup()
+	-- 		vim.diagnostic.config({
+	-- 			virtual_text = false,
+	-- 		})
+	-- 	end,
+	-- },
 }
diff --git a/.config/nvim/lua/plugins/null-ls.lua b/.config/nvim/lua/plugins/null-ls.lua
index 1a74e9c..f8bab18 100644
--- a/.config/nvim/lua/plugins/null-ls.lua
+++ b/.config/nvim/lua/plugins/null-ls.lua
@@ -15,6 +15,7 @@ function M.config()
 			builtins.formatting.shfmt,
 			builtins.formatting.sqlfluff,
 			builtins.formatting.buildifier,
+			builtins.formatting.prettierd,
 			builtins.completion.spell,
 			builtins.code_actions.eslint_d,
 			builtins.diagnostics.buf.with({
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index 4848f50..cb54946 100644
--- a/.config/nvim/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -26,7 +26,7 @@ function M.config()
 	vim.keymap.set("n", "<leader>f", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
 	vim.keymap.set("n", "<space>", '<cmd>lua require("telescope.builtin").oldfiles({cwd_only=true})<CR>')
 	vim.keymap.set("n", "<leader><space>", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
-	vim.keymap.set("n", "<leader>d", '<cmd>lua require("telescope.builtin").diagnostics()<CR>')
+	vim.keymap.set("n", "<leader>d", '<cmd>lua require("telescope.builtin").diagnostics({bufnr=0})<CR>')
 	vim.keymap.set("n", "<leader>e", '<cmd>lua require("telescope.builtin").git_files()<CR>')
 	vim.keymap.set("n", "<leader>g", '<cmd>lua require("telescope.builtin").git_status()<CR>')
 	vim.keymap.set("n", "<leader>a", '<cmd>lua require("telescope.builtin").lsp_code_actions()<CR>')

From aae9a0f31f745c180dc26fb721415d8033a7f023 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 2 Mar 2023 14:18:25 +0100
Subject: [PATCH 002/656] dark mode experiment

---
 .config/nvim/lazy-lock.json           |  58 ++++++-----
 .config/nvim/lua/config/lazy.lua      |   6 +-
 .config/nvim/lua/config/options.lua   |   1 -
 .config/nvim/lua/plugins/lualine.lua  |   2 +-
 .config/nvim/lua/plugins/zenbones.lua | 132 --------------------------
 5 files changed, 33 insertions(+), 166 deletions(-)
 delete mode 100644 .config/nvim/lua/plugins/zenbones.lua

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index f935590..c11e5be 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,58 +1,56 @@
 {
-  "Comment.nvim": { "branch": "master", "commit": "418d3117dab2f54c4340ea73e0070dd78fc81753" },
+  "Comment.nvim": { "branch": "master", "commit": "6821b3ae27a57f1f3cf8ed030e4a55d70d0c4e43" },
+  "catppuccin": { "branch": "main", "commit": "7c392fb5f27daa6addee050f7b7522718e8d9357" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
-  "cmp-cmdline": { "branch": "main", "commit": "23c51b2a3c00f6abc4e922dbd7c3b9aca6992063" },
+  "cmp-cmdline": { "branch": "main", "commit": "8fcc934a52af96120fe26358985c10c035984b53" },
   "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" },
   "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp-tmux": { "branch": "main", "commit": "984772716f66d8ee88535a6bf3f94c4b4e1301f5" },
   "colorbuddy.vim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "copilot-cmp": { "branch": "master", "commit": "b732a58ac8b7287b981cd9f0d9c0f61e5e9d5760" },
-  "copilot.lua": { "branch": "master", "commit": "137df557486f91627b8e4708a47088f36950f12c" },
-  "gitsigns.nvim": { "branch": "main", "commit": "4bd5d7702c17643ff40c035b6b936757b99743c7" },
-  "go.nvim": { "branch": "master", "commit": "4977d3165d6ee8a06781f7b3443484fe7e91c9a3" },
-  "hlargs.nvim": { "branch": "main", "commit": "88b925d699fb39633cdda02c24f0b3ba5d0e6964" },
+  "copilot-cmp": { "branch": "master", "commit": "92535dfd9c430b49ca7d9a7da336c5db65826b65" },
+  "copilot.lua": { "branch": "master", "commit": "b41d4c9c7d4f5e0272bcf94061b88e244904c56f" },
+  "gitsigns.nvim": { "branch": "main", "commit": "76b71f74ce002119fce322df13bd21cc52c1d112" },
+  "go.nvim": { "branch": "master", "commit": "7d7b081bf3d3113d1d487d83a5436bd1e7215ff5" },
+  "hlargs.nvim": { "branch": "main", "commit": "2a7f9878326cdfd0eb8c91ad543c07680c976227" },
   "inc-rename.nvim": { "branch": "main", "commit": "21c23c379342a731a0c90f226601ec0434627b26" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "8299fe7703dfff4b1752aeed271c3b95281a952d" },
-  "lazy.nvim": { "branch": "main", "commit": "6a18404b7d1c05f0d1f35f7b78bd5c282dff7a89" },
-  "lsp_lines.nvim": { "branch": "main", "commit": "ec98b45c8280e5ef8c84028d4f38aa447276c002" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" },
+  "kanagawa": { "branch": "master", "commit": "4c8d48726621a7f3998c7ed35b2c2535abc22def" },
+  "lazy.nvim": { "branch": "main", "commit": "26d121ea13bee96b079403cee6598f04969d4983" },
   "lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
-  "lualine.nvim": { "branch": "master", "commit": "0050b308552e45f7128f399886c86afefc3eb988" },
+  "lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
   "lush.nvim": { "branch": "main", "commit": "b1e8eb1da3fee95ef31515a73c9eff9bf251088d" },
-  "marks.nvim": { "branch": "master", "commit": "c3b18b97912720a6586fb537c5c0dfc9e06a68f1" },
-  "neogen": { "branch": "main", "commit": "465af9d6c6fb7f360175991dcc23fc10917e3a06" },
+  "marks.nvim": { "branch": "master", "commit": "76aca5069c5ce5c0099e30168649e6393e494f26" },
+  "neogen": { "branch": "main", "commit": "93d997dbddfe084e77ba4541c54a7b8bfd754fb1" },
   "noice.nvim": { "branch": "main", "commit": "d8a1f3056ad713b5d471048f8d029264828e22c0" },
-  "nui.nvim": { "branch": "main", "commit": "d147222a1300901656f3ebd5b95f91732785a329" },
-  "null-ls.nvim": { "branch": "main", "commit": "9d811bb6ed44cf766f4bda8a47fd65fdfbdcaa7d" },
-  "nvim-cmp": { "branch": "main", "commit": "aae0c3e4e778ca4be6fabc52e388cbd5b844b7a5" },
-  "nvim-dap": { "branch": "master", "commit": "401f5f22b2d7f9bdbb9294d0235136091458816a" },
+  "nui.nvim": { "branch": "main", "commit": "0dc148c6ec06577fcf06cbab3b7dac96d48ba6be" },
+  "null-ls.nvim": { "branch": "main", "commit": "689cdd78f70af20a37b5309ebc287ac645ae4f76" },
+  "nvim-cmp": { "branch": "main", "commit": "01f697a68905f9dcae70960a9eb013695a17f9a2" },
+  "nvim-dap": { "branch": "master", "commit": "5b986edc95cf7b37da1db91a5c149daa3ac008d2" },
   "nvim-dap-go": { "branch": "main", "commit": "b4ded7de579b4e2a85c203388233b54bf1028816" },
-  "nvim-dap-ui": { "branch": "master", "commit": "110193102b4840be8bda6eb2358367026145ae3a" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "7f7f2af549e72a0b7bddc3b4f827beb027ea8ce3" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "8db23ea51203b5f00ad107a0cef7e0b2d7a0476c" },
   "nvim-lsp-ts-utils": { "branch": "main", "commit": "0a6a16ef292c9b61eac6dad00d52666c7f84b0e7" },
-  "nvim-lspconfig": { "branch": "master", "commit": "9b8f5260f3e793e2dcb2899e0a5b944667a95cb2" },
+  "nvim-lspconfig": { "branch": "master", "commit": "3b08f2edc461314b9051edf26348f8af3fe33e63" },
   "nvim-navic": { "branch": "master", "commit": "7e9d2b2b601149fecdccd11b516acb721e571fe6" },
-  "nvim-osc52": { "branch": "main", "commit": "27da4724a887dabed3768b41fa51c785cb62ef26" },
-  "nvim-treesitter": { "branch": "master", "commit": "f475b24c81d64d64ab213a73882b7c4f3bbbf26a" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "fcd764507f723903af5507e141ea593e855b504a" },
+  "nvim-osc52": { "branch": "main", "commit": "0abf3267090905accf348d19951640e3b95755c3" },
+  "nvim-treesitter": { "branch": "master", "commit": "9dd1b9c09707bf1cdd565b999c79ac6461602591" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "4b30081d2736e09f90c890a8a7adfe4df36f5b36" },
   "nvim-ts-autotag": { "branch": "main", "commit": "fdefe46c6807441460f11f11a167a2baf8e4534b" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "a0f89563ba36b3bacd62cf967b46beb4c2c29e52" },
-  "nvim-web-devicons": { "branch": "master", "commit": "bb6d4fd1e010300510172b173ab5205d37af084f" },
+  "nvim-web-devicons": { "branch": "master", "commit": "c2c2317f356c8b7da0252f5da758f71bb60bb6b2" },
   "packer.nvim": { "branch": "master", "commit": "1d0cf98a561f7fd654c970c49f917d74fafe1530" },
-  "playground": { "branch": "master", "commit": "c481c660fa903a0e295902b1765ecfbd6e76a556" },
-  "plenary.nvim": { "branch": "master", "commit": "9a0d3bf7b832818c042aaf30f692b081ddd58bd9" },
+  "playground": { "branch": "master", "commit": "4044b53c4d4fcd7a78eae20b8627f78ce7dc6f56" },
+  "plenary.nvim": { "branch": "master", "commit": "253d34830709d690f013daf2853a9d21ad7accab" },
   "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
-  "refactoring.nvim": { "branch": "master", "commit": "57c32c6b7a211e5a3a5e4ddc4ad2033daff5cf9a" },
   "stylua-nvim": { "branch": "main", "commit": "ce59a353f02938cba3e0285e662fcd3901cd270f" },
   "telescope-dap.nvim": { "branch": "master", "commit": "313d2ea12ae59a1ca51b62bf01fc941a983d9c9c" },
   "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
   "telescope-github.nvim": { "branch": "master", "commit": "ee95c509901c3357679e9f2f9eaac3561c811736" },
   "telescope-ui-select.nvim": { "branch": "master", "commit": "62ea5e58c7bbe191297b983a9e7e89420f581369" },
-  "telescope.nvim": { "branch": "master", "commit": "203bf5609137600d73e8ed82703d6b0e320a5f36" },
-  "trouble.nvim": { "branch": "main", "commit": "556ef3089709a6e253df1e500381fec5eb48e48a" },
+  "telescope.nvim": { "branch": "master", "commit": "a3f17d3baf70df58b9d3544ea30abe52a7a832c2" },
+  "trouble.nvim": { "branch": "main", "commit": "67337644e38144b444d026b0df2dc5fa0038930f" },
   "vim-cue": { "branch": "master", "commit": "bd1a62303d096aa24fe4160a475645087f8770b3" },
   "vim-illuminate": { "branch": "master", "commit": "49062ab1dd8fec91833a69f0a1344223dd59d643" },
-  "yanky.nvim": { "branch": "main", "commit": "100150704104db1930519eb2a05e5aee6d00f553" },
   "zenbones.nvim": { "branch": "main", "commit": "910b8c240c6aaf5263db038db81c538602c766c3" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index a5685f6..553c853 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -5,12 +5,14 @@ if not vim.loop.fs_stat(lazypath) then
 end
 vim.opt.runtimepath:prepend(lazypath)
 
--- require("lazy").setup("plugins")
-
 require("lazy").setup({
 	import = "plugins",
 	defaults = { lazy = true },
 	checker = { enabled = true },
+	install = {
+		missing = true,
+		colorscheme = { "zenbones" },
+	},
 	performance = {
 		cache = {
 			enabled = true,
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 4b80a53..462c084 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -49,7 +49,6 @@ vim.cmd("set shortmess+=c")
 vim.o.completeopt = "menuone,noinsert,noselect"
 
 --- Appearance
-vim.o.background = "light"
 vim.o.scrolloff = 7
 vim.o.showmode = false
 vim.o.sidescrolloff = 5
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
index ba2cc41..2b40678 100644
--- a/.config/nvim/lua/plugins/lualine.lua
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -14,7 +14,7 @@ function M.config()
 	lualine.setup({
 		options = {
 			globalstatus = true,
-			theme = "onelight",
+			theme = "onedark",
 			component_separators = { left = "╲", right = "╱" },
 			section_separators = { left = "", right = "" },
 		},
diff --git a/.config/nvim/lua/plugins/zenbones.lua b/.config/nvim/lua/plugins/zenbones.lua
deleted file mode 100644
index 79c2c41..0000000
--- a/.config/nvim/lua/plugins/zenbones.lua
+++ /dev/null
@@ -1,132 +0,0 @@
-local M = {
-	"mcchrish/zenbones.nvim",
-	-- event = "VeryLazy",
-	dependencies = {
-		{ "rktjmp/lush.nvim" },
-	},
-}
-
-function M.config()
-	vim.g.zenbones = {
-		style = "light",
-		lightness = "bright",
-		colorize_diagnostic_underline_text = true,
-		transparent_background = true,
-	}
-
-	local lush = require("lush")
-	local base = require("zenbones")
-
-	-- Create some specs
-	---@diagnostic disable = undefined-global
-	local specs = lush.parse(function(injected_functions)
-		-- See https://github.com/rktjmp/lush.nvim/issues/109
-		local sym = injected_functions.sym
-		return {
-			CursorLine({ bg = "#f5f5f0" }),
-			Error({ fg = "#d9534f" }),
-			CursorLineNr({ fg = "#BCAAA4", bg = "#f5f5f0" }),
-			MsgArea({ fg = "#A1887F", bg = "#f1f1f1" }),
-			String({ fg = "#5E8122", gui = "italic" }),
-			Number({ fg = "#32936F" }),
-			sym("@field")({ fg = "#6F62A7" }),
-			sym("@string")({ fg = "#5B7B3D", gui = "italic" }),
-			sym("@type.definition")({ fg = "#B6465F", gui = "bold" }),
-			sym("@function")({ fg = "#8C1831", gui = "bold" }),
-			sym("@method")(sym("@function")),
-			-- Comment({ fg = "#114499", gui = "bold,italic" }),
-			-- Comment({ fg = "#144EE1", gui = "bold,italic" }),
-			Comment({ fg = "#8F001D", gui = "bold,italic" }),
-			Todo({ fg = "#FF0000", gui = "bold,underline" }),
-			EndOfBuffer({ fg = "#CBCFE1" }),
-			CopilotSuggestion({ fg = "#0066cc", gui = "bold,italic" }),
-			LineNr({ fg = "#9FA8AC", gui = "bold,italic" }),
-			LineNrAbove({ fg = "#9F080C", gui = "bold,italic" }),
-			IndentBlanklineContextChar({ fg = "#699FB5", gui = "italic" }),
-			Indent1({ fg = "#DFDF9A", gui = "italic" }),
-			Indent2({ fg = "#BAE1FF", gui = "italic" }),
-			Indent3({ fg = "#BAFFC9", gui = "italic" }),
-			Indent4({ fg = "#FFB3BA", gui = "italic" }),
-			Indent5({ fg = "#FFDFBA", gui = "italic" }),
-			Indent6({ fg = "#F3E5F5", gui = "italic" }),
-			NormalFloat({ bg = "#FFF9C4" }),
-			FloatBorder({ fg = "#FFB74D", bg = "#FFF9C4" }),
-			TelescopeNormal({ bg = "#EFEBE9" }),
-			TelescopeBorder({ fg = "#A1887F", bg = "#EFEBE9" }),
-			TelescopeSelection({ fg = "#FFFFFF", bg = "#1976D2" }),
-			DiagnosticSignError({ fg = "#ff2200", bg = "#fff5ff", gui = "bold" }),
-			DiagnosticVirtualTextInfo({ fg = "#0033bb", bg = "#f7fcff", gui = "bold,italic" }),
-			DiagnosticVirtualTextWarn({ fg = "#bb2200", bg = "#fff9f3", gui = "bold,italic" }),
-			DiagnosticVirtualTextError({ fg = "#ff2200", bg = "#fff5f3", gui = "italic" }),
-			DiagnosticUnderlineError({ fg = "#ff0000", gui = "undercurl" }),
-			DiagnosticUnderlineWarn({ fg = "#ff7700", gui = "undercurl" }),
-			DiagnosticUnderlineInfo({ fg = "#3366cc", gui = "undercurl" }),
-			MarkSignHL({ fg = "#009688", bg = "#E0F7FA" }),
-			MarkSignNumHL({ fg = "#B2DFDB", bg = "#E0F7FA" }),
-			GitSignsAdd({ fg = "#81C784" }),
-			GitSignsAddNr({ fg = "#C8E6C9" }),
-			GitSignsDelete({ fg = "#E53935" }),
-			GitSignsDeleteNr({ fg = "#FFCDD2" }),
-			GitSignsChange({ fg = "#FFA726" }),
-			GitSignsChangeNr({ fg = "#FFE0B2" }),
-
-			Hlargs({ fg = "#2274A5" }),
-
-			IlluminatedWordText({ bg = "#FFEE99" }),
-			NotifyBackground({ bg = "#FFF8D6" }),
-
-			NavicIcons({ fg = "#cc0000" }),
-			NavicIconsFile({ fg = "#cc0000" }),
-			NavicIconsModule({ fg = "#cc0000" }),
-			NavicIconsNamespace({ fg = "#cc0000" }),
-			NavicIconsPackage({ fg = "#cc0000" }),
-			NavicIconsClass({ fg = "#cc0000" }),
-			NavicIconsMethod({ fg = "#cc0000" }),
-			NavicIconsProperty({ fg = "#cc0000" }),
-			NavicIconsField({ fg = "#cc0000" }),
-			NavicIconsConstructor({ fg = "#cc0000" }),
-			NavicIconsEnum({ fg = "#cc0000" }),
-			NavicIconsInterface({ fg = "#cc0000" }),
-			NavicIconsFunction({ fg = "#cc0000" }),
-			NavicIconsVariable({ fg = "#cc0000" }),
-			NavicIconsConstant({ fg = "#cc0000" }),
-			NavicIconsString({ fg = "#cc0000" }),
-			NavicIconsNumber({ fg = "#cc0000" }),
-			NavicIconsBoolean({ fg = "#cc0000" }),
-			NavicIconsArray({ fg = "#cc0000" }),
-			NavicIconsObject({ fg = "#cc0000" }),
-			NavicIconsKey({ fg = "#cc0000" }),
-			NavicIconsKeyword({ fg = "#cc0000" }),
-			NavicIconsNull({ fg = "#cc0000" }),
-			NavicIconsEnumMember({ fg = "#cc0000" }),
-			NavicIconsStruct({ fg = "#cc0000" }),
-			NavicIconsEvent({ fg = "#cc0000" }),
-			NavicIconsOperator({ fg = "#cc0000" }),
-			NavicIconsTypeParameter({ fg = "#cc0000" }),
-
-			NavicText({ fg = "#cc0000", gui = "italic" }),
-
-			-- LspCodeLens({ fg = "#00ff00", gui = "undercurl" }),
-			-- LspSignatureActiveParameter({ fg = "#ff0000", bg = "#ffffcc" }),
-
-			NoiceCmdlinePopup({ bg = "#E1F5FE" }),
-			NoiceMini({ bg = "#FFF9C4" }),
-
-			PMenu({ bg = "#F7F5F0" }),
-			PMenuBorder({ bg = "#F7F5F0", fg = "#886622" }),
-			PMenuSel({ fg = "#FFFFFF", bg = "#1976D2" }),
-			PMenuSbar({ bg = "#90CAF9" }),
-			PMenuThumb({ bg = "#64B5F6" }),
-			StatusLine({ base = base.VertSplit, fg = "#BCAAA4" }),
-			StatusLineNC({ base = base.VertSplit, fg = "#BCAAA4" }),
-			TreesitterContext({ bg = "#f0f0f0", fg = "#BCAAA4", gui = "bold,italic" }),
-			TreesitterContextLineNumber({ bg = "#f0f0f0", fg = "#979770", gui = "bold,italic" }),
-		}
-	end)
-
-	-- Apply specs using lush tool-chain
-	lush.apply(lush.compile(specs))
-	vim.cmd("colorscheme zenbones")
-end
-
-return M

From 75ea947fa80d5a01e583f1bcbcedc57b54c0e913 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 3 Mar 2023 09:28:42 +0100
Subject: [PATCH 003/656] onward

---
 .config/fontconfig/fonts.conf                 | 11 ++++
 .config/wezterm/wezterm.lua                   | 64 ++++---------------
 .../wezterm-dln-dev-secondary.desktop         |  3 +-
 3 files changed, 26 insertions(+), 52 deletions(-)

diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf
index 2532559..b06e4c3 100644
--- a/.config/fontconfig/fonts.conf
+++ b/.config/fontconfig/fonts.conf
@@ -32,4 +32,15 @@
   </edit>
    </match>
  -->
+ <match target="font">
+  <edit name="hinting" mode="assign">
+   <bool>true</bool>
+  </edit>
+ </match>
+ <match target="font">
+  <edit name="hintstyle" mode="assign">
+   <const>hintslight</const>
+  </edit>
+ </match>
+ <dir>~/.fonts</dir>
 </fontconfig>
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 73fd9df..6d0bf3d 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -7,8 +7,9 @@ end
 
 local themeShelmanDark = {
 	colors = {
-		foreground = "#ded9ce",
-		background = "#171a23",
+		-- foreground = "#ded9ce",
+		foreground = "#f0f0f0",
+		background = "#141619",
 		cursor_bg = "#FB8C00",
 		cursor_border = "#FB8C00",
 		split = "#444444",
@@ -21,39 +22,6 @@ local themeShelmanDark = {
 			inactive_tab_hover = { bg_color = "#333333", fg_color = "#909090", italic = true },
 		},
 	},
-
-	tab_bar_style = {
-		active_tab_left = wezterm.format({
-			{ Background = { Color = "#171a23" } },
-			{ Foreground = { Color = "#000000" } },
-			{ Text = " " },
-		}),
-		active_tab_right = wezterm.format({
-			{ Background = { Color = "#171a23" } },
-			{ Foreground = { Color = "#000000" } },
-			{ Text = " " },
-		}),
-		inactive_tab_left = wezterm.format({
-			{ Background = { Color = "#000000" } },
-			{ Foreground = { Color = "#171a23" } },
-			{ Text = " " },
-		}),
-		inactive_tab_right = wezterm.format({
-			{ Background = { Color = "#000000" } },
-			{ Foreground = { Color = "#171a23" } },
-			{ Text = "▕" },
-		}),
-		inactive_tab_hover_left = wezterm.format({
-			{ Background = { Color = "#333333" } },
-			{ Foreground = { Color = "#ffffff" } },
-			{ Text = " " },
-		}),
-		inactive_tab_hover_right = wezterm.format({
-			{ Background = { Color = "#333333" } },
-			{ Foreground = { Color = "#ffffff" } },
-			{ Text = " " },
-		}),
-	},
 }
 
 local themeShelmanLight = {
@@ -102,21 +70,18 @@ return {
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
 	allow_square_glyphs_to_overflow_width = "Always",
-
-	font_size = 10.5,
+	font_size = 14,
 	line_height = 1.0,
 	cell_width = 0.9,
-
 	initial_cols = 128,
 	initial_rows = 45,
 	use_resize_increments = false,
-
-	window_background_opacity = 0.93,
+	-- window_background_opacity = 1.0, --0.93,
 	window_padding = {
-		left = "0",
-		right = "0",
-		top = "0",
-		bottom = "0",
+		left = "20",
+		right = "20",
+		top = "20",
+		bottom = "20",
 	},
 	window_decorations = "RESIZE",
 	window_frame = {
@@ -124,16 +89,14 @@ return {
 		border_right_width = "2px",
 		border_bottom_height = "2px",
 		border_top_height = "2px",
-		border_left_color = "#cccccc",
-		border_right_color = "#cccccc",
-		border_bottom_color = "#cccccc",
-		border_top_color = "#cccccc",
+		border_left_color = "#999999",
+		border_right_color = "#999999",
+		border_bottom_color = "#999999",
+		border_top_color = "#999999",
 	},
-
 	default_cursor_style = "SteadyBlock",
 	cursor_thickness = "3px",
 	cursor_blink_rate = 300,
-
 	enable_wayland = true,
 	enable_tab_bar = false,
 	tab_bar_at_bottom = true,
@@ -145,7 +108,6 @@ return {
 	status_update_interval = 100,
 	audible_bell = "Disabled",
 	term = "wezterm",
-
 	disable_default_key_bindings = true,
 	keys = {
 		{ key = "c", mods = "ALT|SHIFT", action = wezterm.action({ CopyTo = "ClipboardAndPrimarySelection" }) },
diff --git a/.local/share/applications/wezterm-dln-dev-secondary.desktop b/.local/share/applications/wezterm-dln-dev-secondary.desktop
index 6d7b938..2b16f20 100644
--- a/.local/share/applications/wezterm-dln-dev-secondary.desktop
+++ b/.local/share/applications/wezterm-dln-dev-secondary.desktop
@@ -7,4 +7,5 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new-session", "-As1", "-t0"}' --config font_size=9 --config=window_background_opacity=0.4 start --class=wezterm-dln-dev-secondary
+#Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new-session", "-As1", "-t0"}' --config font_size=11 --config=window_background_opacity=0.4 start --class=wezterm-dln-dev-secondary
+Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new-session", "-As1", "-t0"}' --config font_size=11 start --class=wezterm-dln-dev-secondary

From 198903664ae643e1f18db9756300b9ba1e2a87b1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 1 Mar 2023 15:04:05 +0100
Subject: [PATCH 004/656] nvim: config

---
 .config/nvim/init.lua                  |  1 +
 .config/nvim/lua/plugins/dap.lua       | 56 ++++++++++++++++----------
 .config/nvim/lua/plugins/misc.lua      | 18 ++++-----
 .config/nvim/lua/plugins/null-ls.lua   |  1 +
 .config/nvim/lua/plugins/telescope.lua |  2 +-
 5 files changed, 47 insertions(+), 31 deletions(-)

diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index 55b8979..74740c5 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -1 +1,2 @@
+require("config.options")
 require("config.lazy")
diff --git a/.config/nvim/lua/plugins/dap.lua b/.config/nvim/lua/plugins/dap.lua
index aeec64d..c31328f 100644
--- a/.config/nvim/lua/plugins/dap.lua
+++ b/.config/nvim/lua/plugins/dap.lua
@@ -1,8 +1,6 @@
-local M = {
+return {
 	"mfussenegger/nvim-dap",
-
 	dependencies = {
-		{ "rcarriga/nvim-dap-ui" },
 		{
 			"theHamsta/nvim-dap-virtual-text",
 			config = function()
@@ -16,24 +14,40 @@ local M = {
 			config = function()
 				require("dap-go").setup()
 			end,
-			keys = {
-				{ "<leader>y", ":lua require('dap-go').debug_test()<CR>" },
-			},
 		},
 	},
+	keys = {
+		{ "DD", ":lua require'dap'.toggle_breakpoint()<cr>", desc = "Toggle Breakpoint" },
+		{ "Dc", ":lua require'dap'.continue()<cr>", desc = "Continue" },
+		{ "Di", ":lua require'dap'.step_into()<cr>", desc = "Step Into" },
+		{ "Do", ":lua require'dap'.step_over()<cr>", desc = "Step Over" },
+		{ "DO", ":lua require'dap'.step_out()<cr>", desc = "Step Out" },
+		{ "Dh", ":lua require'dap.ui.widgets'.hover()<cr>", desc = "Hover" },
+		{ "Dr", ":lua require'dap'.repl.toggle({height = 5})<cr>", desc = "Toogle Repl" },
+	},
+	config = function()
+		require("dap")
+		require("dap.ext.vscode").load_launchjs()
+
+		vim.fn.sign_define(
+			"DapBreakpoint",
+			{ text = "", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
+		)
+		vim.fn.sign_define(
+			"DapBreakpointCondition",
+			{ text = "ﳁ", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
+		)
+		vim.fn.sign_define(
+			"DapBreakpointRejected",
+			{ text = "", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
+		)
+		vim.fn.sign_define(
+			"DapLogPoint",
+			{ text = "", texthl = "DapLogPoint", linehl = "DapLogPoint", numhl = "DapLogPoint" }
+		)
+		vim.fn.sign_define(
+			"DapStopped",
+			{ text = "", texthl = "DapStopped", linehl = "DapStopped", numhl = "DapStopped" }
+		)
+	end,
 }
-
-function M.init()
-	local silent = { silent = true }
-	vim.fn.sign_define("DapStopped", { text = "⇒", texthl = "", linehl = "debugPC", numhl = "" })
-	vim.fn.sign_define("DapBreakpoint", { text = "🧘", texthl = "", linehl = "debugPC", numhl = "" })
-	vim.keymap.set("n", "DD", ":lua require 'dap'.toggle_breakpoint()<CR>", silent)
-	vim.keymap.set("n", "Dc", ":lua require 'dap'.continue()<CR>", silent)
-	vim.keymap.set("n", "Di", ":lua require 'dap'.step_into()<CR>", silent)
-	vim.keymap.set("n", "Do", ":lua require 'dap'.step_over()<CR>", silent)
-	vim.keymap.set("n", "DO", ":lua require 'dap'.step_out()<CR>", silent)
-	vim.keymap.set("n", "Dr", ":lua require 'dap'.repl.toggle({height = 5})<CR>", silent)
-	vim.keymap.set("n", "Dh", ":lua require 'dap.ui.widgets'.hover()<CR>", silent)
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/misc.lua b/.config/nvim/lua/plugins/misc.lua
index 4689229..24391dd 100644
--- a/.config/nvim/lua/plugins/misc.lua
+++ b/.config/nvim/lua/plugins/misc.lua
@@ -104,13 +104,13 @@ return {
 		end,
 	},
 
-	{
-		url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
-		config = function()
-			require("lsp_lines").setup()
-			vim.diagnostic.config({
-				virtual_text = false,
-			})
-		end,
-	},
+	-- {
+	-- 	url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
+	-- 	config = function()
+	-- 		require("lsp_lines").setup()
+	-- 		vim.diagnostic.config({
+	-- 			virtual_text = false,
+	-- 		})
+	-- 	end,
+	-- },
 }
diff --git a/.config/nvim/lua/plugins/null-ls.lua b/.config/nvim/lua/plugins/null-ls.lua
index 1a74e9c..f8bab18 100644
--- a/.config/nvim/lua/plugins/null-ls.lua
+++ b/.config/nvim/lua/plugins/null-ls.lua
@@ -15,6 +15,7 @@ function M.config()
 			builtins.formatting.shfmt,
 			builtins.formatting.sqlfluff,
 			builtins.formatting.buildifier,
+			builtins.formatting.prettierd,
 			builtins.completion.spell,
 			builtins.code_actions.eslint_d,
 			builtins.diagnostics.buf.with({
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index 4848f50..cb54946 100644
--- a/.config/nvim/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -26,7 +26,7 @@ function M.config()
 	vim.keymap.set("n", "<leader>f", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
 	vim.keymap.set("n", "<space>", '<cmd>lua require("telescope.builtin").oldfiles({cwd_only=true})<CR>')
 	vim.keymap.set("n", "<leader><space>", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
-	vim.keymap.set("n", "<leader>d", '<cmd>lua require("telescope.builtin").diagnostics()<CR>')
+	vim.keymap.set("n", "<leader>d", '<cmd>lua require("telescope.builtin").diagnostics({bufnr=0})<CR>')
 	vim.keymap.set("n", "<leader>e", '<cmd>lua require("telescope.builtin").git_files()<CR>')
 	vim.keymap.set("n", "<leader>g", '<cmd>lua require("telescope.builtin").git_status()<CR>')
 	vim.keymap.set("n", "<leader>a", '<cmd>lua require("telescope.builtin").lsp_code_actions()<CR>')

From 491d064414bf383cd815cd708df3be32cea0be95 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 3 Mar 2023 11:33:16 +0100
Subject: [PATCH 005/656] nvim: colorscheme

---
 .config/nvim/lua/plugins/colorscheme.lua | 208 +++++++++++++++++++++++
 1 file changed, 208 insertions(+)
 create mode 100644 .config/nvim/lua/plugins/colorscheme.lua

diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
new file mode 100644
index 0000000..c034038
--- /dev/null
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -0,0 +1,208 @@
+return {
+
+	{
+		"mcchrish/zenbones.nvim",
+		lazy = false,
+		priority = 1000,
+		dependencies = {
+			"rktjmp/lush.nvim",
+		},
+		config = function()
+			vim.g.zenbones = {
+				style = "light",
+				lightness = "bright",
+				colorize_diagnostic_underline_text = true,
+				transparent_background = true,
+			}
+
+			local lush = require("lush")
+			local base = require("zenbones")
+
+			-- Create some specs
+			---@diagnostic disable = undefined-global
+			local specs = lush.parse(function(injected_functions)
+				-- See https://github.com/rktjmp/lush.nvim/issues/109
+				local sym = injected_functions.sym
+				return {
+					Special({ fg = "#EFEBE9" }),
+					Normal({ fg = "#f0f0f0" }),
+					Statement({ fg = "#e0e0e0", gui = "bold" }),
+					Identifier({ fg = "#e7f0f7" }),
+					Type({ fg = "#E3F2FD" }),
+					CursorLine({ bg = "#102030" }),
+					Error({ fg = "#d9534f", bg = "#110000" }),
+					CursorLineNr({ fg = "#BCAAA4", bg = "#102030" }),
+					MsgArea({ fg = "#A1887F", bg = "#f1f1f1" }),
+					Number({ fg = "#32936F" }),
+					sym("@field")({ fg = "#E3F2FD" }),
+					String({ fg = "#C5E1A5", gui = "italic" }),
+					sym("@string")({ fg = "#C5E1A5", gui = "italic" }),
+					sym("@type.definition")({ fg = "#CE93D8", gui = "bold" }),
+					sym("@function")({ fg = "#FFAB91", gui = "bold" }),
+					sym("@method")(sym("@function")),
+					-- Comment({ fg = "#114499", gui = "bold,italic" }),
+					-- Comment({ fg = "#144EE1", gui = "bold,italic" }),
+					Comment({ fg = "#E0E0E0", gui = "bold,italic" }),
+					Todo({ fg = "#FF0000", gui = "bold,underline" }),
+					EndOfBuffer({ fg = "#CBCFE1" }),
+					CopilotSuggestion({ fg = "#0066cc", gui = "bold,italic" }),
+					LineNr({ fg = "#9FA8AC", gui = "bold,italic" }),
+					LineNrAbove({ fg = "#9F080C", gui = "bold,italic" }),
+					IndentBlanklineContextChar({ fg = "#699FB5", gui = "italic" }),
+					-- Indent1({ fg = "#DFDF9A", gui = "italic" }),
+					-- Indent2({ fg = "#BAE1FF", gui = "italic" }),
+					-- Indent3({ fg = "#BAFFC9", gui = "italic" }),
+					-- Indent4({ fg = "#FFB3BA", gui = "italic" }),
+					-- Indent5({ fg = "#FFDFBA", gui = "italic" }),
+					-- Indent6({ fg = "#F3E5F5", gui = "italic" }),
+					NormalFloat({ bg = "#263238" }),
+					FloatBorder({ fg = "#FFB74D", bg = "#263238" }),
+					TelescopeNormal({ bg = "#263238" }),
+					TelescopeBorder({ fg = "#78909C", bg = "#263238" }),
+					TelescopeSelection({ fg = "#FFF8E1", bg = "#01579B" }),
+					DiagnosticSignError({ fg = "#ff2200", bg = "#220000", gui = "bold" }),
+					DiagnosticVirtualTextInfo({ fg = "#0033bb", bg = "#f7fcff", gui = "bold,italic" }),
+					DiagnosticVirtualTextWarn({ fg = "#bb2200", bg = "#110000", gui = "bold,italic" }),
+					DiagnosticVirtualTextError({ fg = "#ff2200", bg = "#110000", gui = "italic" }),
+					DiagnosticUnderlineError({ fg = "#ff0000", gui = "undercurl" }),
+					DiagnosticUnderlineWarn({ fg = "#ff7700", gui = "undercurl" }),
+					DiagnosticUnderlineInfo({ fg = "#3366cc", gui = "undercurl" }),
+					MarkSignHL({ fg = "#009688", bg = "#E0F7FA" }),
+					MarkSignNumHL({ fg = "#B2DFDB", bg = "#E0F7FA" }),
+					GitSignsAdd({ fg = "#81C784" }),
+					GitSignsAddNr({ fg = "#C8E6C9" }),
+					GitSignsDelete({ fg = "#E53935" }),
+					GitSignsDeleteNr({ fg = "#FFCDD2" }),
+					GitSignsChange({ fg = "#FFA726" }),
+					GitSignsChangeNr({ fg = "#FFE0B2" }),
+
+					Hlargs({ fg = "#FFF8E1" }),
+
+					IlluminatedWordText({ fg = "#FFA000" }),
+					NotifyBackground({ bg = "#FFF8D6" }),
+
+					NavicIcons({ fg = "#cc0000" }),
+					NavicIconsFile({ fg = "#cc0000" }),
+					NavicIconsModule({ fg = "#cc0000" }),
+					NavicIconsNamespace({ fg = "#cc0000" }),
+					NavicIconsPackage({ fg = "#cc0000" }),
+					NavicIconsClass({ fg = "#cc0000" }),
+					NavicIconsMethod({ fg = "#cc0000" }),
+					NavicIconsProperty({ fg = "#cc0000" }),
+					NavicIconsField({ fg = "#cc0000" }),
+					NavicIconsConstructor({ fg = "#cc0000" }),
+					NavicIconsEnum({ fg = "#cc0000" }),
+					NavicIconsInterface({ fg = "#cc0000" }),
+					NavicIconsFunction({ fg = "#cc0000" }),
+					NavicIconsVariable({ fg = "#cc0000" }),
+					NavicIconsConstant({ fg = "#cc0000" }),
+					NavicIconsString({ fg = "#cc0000" }),
+					NavicIconsNumber({ fg = "#cc0000" }),
+					NavicIconsBoolean({ fg = "#cc0000" }),
+					NavicIconsArray({ fg = "#cc0000" }),
+					NavicIconsObject({ fg = "#cc0000" }),
+					NavicIconsKey({ fg = "#cc0000" }),
+					NavicIconsKeyword({ fg = "#cc0000" }),
+					NavicIconsNull({ fg = "#cc0000" }),
+					NavicIconsEnumMember({ fg = "#cc0000" }),
+					NavicIconsStruct({ fg = "#cc0000" }),
+					NavicIconsEvent({ fg = "#cc0000" }),
+					NavicIconsOperator({ fg = "#cc0000" }),
+					NavicIconsTypeParameter({ fg = "#cc0000" }),
+
+					NavicText({ fg = "#cc0000", gui = "italic" }),
+
+					-- LspCodeLens({ fg = "#00ff00", gui = "undercurl" }),
+					-- LspSignatureActiveParameter({ fg = "#ff0000", bg = "#ffffcc" }),
+
+					NoiceCmdlinePopup({ bg = "#263238" }),
+					NoiceMini({ bg = "#263238" }),
+
+					PMenu({ bg = "#263238" }),
+					PMenuBorder({ bg = "#F7F5F0", fg = "#886622" }),
+					PMenuSel({ fg = "#FFFFFF", bg = "#1976D2" }),
+					PMenuSbar({ bg = "#90CAF9" }),
+					PMenuThumb({ bg = "#64B5F6" }),
+					StatusLine({ base = base.VertSplit, fg = "#BCAAA4" }),
+					StatusLineNC({ base = base.VertSplit, fg = "#BCAAA4" }),
+					TreesitterContext({ bg = "#f0f0f0", fg = "#BCAAA4", gui = "bold,italic" }),
+					TreesitterContextLineNumber({ bg = "#f0f0f0", fg = "#979770", gui = "bold,italic" }),
+				}
+			end)
+
+			-- Apply specs using lush tool-chain
+			vim.cmd([[colorscheme zenbones]])
+			lush.apply(lush.compile(specs))
+		end,
+	},
+
+	-- {
+	-- 	"rebelot/kanagawa.nvim",
+	-- 	name = "kanagawa",
+	-- 	lazy = false,
+	-- 	priority = 1000,
+	-- 	config = function()
+	-- 		require("kanagawa").setup({
+	-- 			commentStyle = { bold = true, italic = true },
+	-- 			functionStyle = {},
+	-- 			keywordStyle = {},
+	-- 			statementStyle = { bold = true },
+	-- 			typeStyle = {},
+	-- 			variablebuiltinStyle = { italic = true },
+	-- 			transparent = true, -- do not set background color
+	-- 			colors = {
+	--
+	-- 				fujiWhite = "#FFFFFF",
+	-- 			},
+	-- 			overrides = {},
+	-- 			theme = "default", -- Load "default" theme or the experimental "light" theme
+	-- 		})
+	-- 		-- vim.cmd([[colorscheme kanagawa ]])
+	-- 	end,
+	-- },
+
+	-- {
+	-- 	"catppuccin/nvim",
+	-- 	name = "catppuccin",
+	-- 	lazy = false,
+	-- 	priority = 1000,
+	-- 	config = function()
+	-- 		require("catppuccin").setup({
+	-- 			flavour = "mocha", -- latte, frappe, macchiato, mocha
+	-- 			background = {
+	-- 				light = "latte",
+	-- 				dark = "latte",
+	-- 			},
+	-- 			transparent_background = true,
+	-- 			show_end_of_buffer = true,
+	-- 			styles = {
+	-- 				comments = { "bold,italic" },
+	-- 				conditionals = {},
+	-- 				loops = {},
+	-- 				functions = {},
+	-- 				keywords = {},
+	-- 				strings = { "italic" },
+	-- 				variables = {},
+	-- 				numbers = {},
+	-- 				booleans = {},
+	-- 				properties = {},
+	-- 				types = {},
+	-- 				operators = {},
+	-- 			},
+	-- 			custom_highlights = function(colors)
+	-- 				return {
+	-- 					Comment = { fg = colors.blue },
+	-- 					Keyword = { fg = colors.rosewater },
+	-- 					["@keyword"] = { fg = colors.rosewater },
+	-- 					["@keyword.operator"] = { fg = colors.rosewater },
+	-- 					["@keyword.function"] = { fg = colors.rosewater },
+	-- 					["@keyword.return"] = { fg = colors.rosewater },
+	-- 					["@constant.builtin"] = { fg = colors.peach, style = {} },
+	-- 					-- ["@comment"] = { fg = colors.blue, style = { "bold,italic" } },
+	-- 				}
+	-- 			end,
+	-- 		})
+	-- 		vim.cmd([[colorscheme catppuccin ]])
+	-- 	end,
+	-- },
+}

From b6796b88619c2a1de96919cde749bb9ef296aed7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 7 Mar 2023 10:42:16 +0100
Subject: [PATCH 006/656] wezterm magic

---
 .config/wezterm/wezterm.lua                   | 123 +++++++++++-------
 .../wezterm-dln-dev-secondary.desktop         |   3 +-
 .../applications/wezterm-dln-dev.desktop      |   2 +-
 3 files changed, 76 insertions(+), 52 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 6d0bf3d..b47d30d 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -1,45 +1,40 @@
 local wezterm = require("wezterm")
+local mux = wezterm.mux
+local act = wezterm.action
 
 function font_with_fallback(name, params)
-	local names = { name, "Noto Color Emoji", "Iosevka Nerd Font Mono" }
+	local names = { name, "Noto Color Emoji" }
 	return wezterm.font_with_fallback(names, params)
 end
 
-local themeShelmanDark = {
-	colors = {
-		-- foreground = "#ded9ce",
-		foreground = "#f0f0f0",
-		background = "#141619",
-		cursor_bg = "#FB8C00",
-		cursor_border = "#FB8C00",
-		split = "#444444",
-		ansi = { "#000000", "#ff605a", "#b1e869", "#ead89c", "#5da9f6", "#e86aff", "#82fff6", "#ded9ce" },
-		brights = { "#313131", "#f58b7f", "#dcf88f", "#eee5b2", "#a5c7ff", "#ddaaff", "#b6fff9", "#fefffe" },
-		tab_bar = {
-			background = "#000000",
-			active_tab = { bg_color = "#171a23", fg_color = "#c0b070", intensity = "Normal" },
-			inactive_tab = { bg_color = "#000000", fg_color = "#c0c0c0", intensity = "Half" },
-			inactive_tab_hover = { bg_color = "#333333", fg_color = "#909090", italic = true },
-		},
-	},
-}
+wezterm.on("mux-startup", function()
+	local tab, pane, window = mux.spawn_window({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+end)
 
-local themeShelmanLight = {
-	colors = {
-		foreground = "#000000",
-		background = "#fcfcfc",
-		cursor_bg = "#EA526F",
-		cursor_fg = "#ffffff",
-		cursor_border = "#cc0000",
-		split = "#444444",
-		selection_bg = "#FFCA28",
-		ansi = { "#212121", "#b7141e", "#457b23", "#f5971d", "#134eb2", "#550087", "#0e707c", "#eeeeee" },
-		brights = { "#424242", "#e83a3f", "#7aba39", "#fee92e", "#53a4f3", "#a94dbb", "#26bad1", "#d8d8d8" },
-	},
-}
+function scheme_for_appearance(appearance)
+	if appearance:find("Dark") then
+		-- return "Shelman Light"
+		return "Shelman Dark"
+	else
+		return "Shelman Dark"
+		-- return "Shelman Light"
+	end
+end
+
+local is_server = wezterm.hostname() == "dln-dev"
 
 return {
-	colors = themeShelmanLight.colors,
+	color_scheme = (is_server and "Shelman Dark" or scheme_for_appearance(wezterm.gui.get_appearance())),
+	color_scheme_dirs = { "/home/dln/.config/wezterm" },
 	font = font_with_fallback("Iosevka Shelman SS09", { weight = "Regular" }),
 	font_rules = {
 		{
@@ -70,18 +65,26 @@ return {
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
 	allow_square_glyphs_to_overflow_width = "Always",
-	font_size = 14,
+	font_size = 13.5,
 	line_height = 1.0,
-	cell_width = 0.9,
-	initial_cols = 128,
-	initial_rows = 45,
-	use_resize_increments = false,
-	-- window_background_opacity = 1.0, --0.93,
+	cell_width = 0.95,
+	-- initial_cols = 128,
+	-- initial_rows = 45,
+	use_resize_increments = true,
+	window_background_opacity = 1.0,
 	window_padding = {
-		left = "20",
-		right = "20",
-		top = "20",
-		bottom = "20",
+		left = "0.75cell",
+		right = "0.5cell",
+		top = "0.25cell",
+		bottom = "0cell",
+	},
+	colors = {
+		tab_bar = {
+			active_tab = {
+				fg_color = "#e0e0e0",
+				bg_color = "#374f66",
+			},
+		},
 	},
 	window_decorations = "RESIZE",
 	window_frame = {
@@ -89,17 +92,20 @@ return {
 		border_right_width = "2px",
 		border_bottom_height = "2px",
 		border_top_height = "2px",
-		border_left_color = "#999999",
-		border_right_color = "#999999",
-		border_bottom_color = "#999999",
-		border_top_color = "#999999",
+		border_left_color = "#333333",
+		border_right_color = "#333333",
+		border_bottom_color = "#333333",
+		border_top_color = "#333333",
+		inactive_titlebar_bg = "#21262e",
+		active_titlebar_bg = "#252b34",
 	},
 	default_cursor_style = "SteadyBlock",
 	cursor_thickness = "3px",
 	cursor_blink_rate = 300,
 	enable_wayland = true,
-	enable_tab_bar = false,
+	enable_tab_bar = true,
 	tab_bar_at_bottom = true,
+	use_fancy_tab_bar = true,
 	show_tab_index_in_tab_bar = true,
 	enable_scroll_bar = false,
 	scrollback_lines = 5000,
@@ -110,11 +116,30 @@ return {
 	term = "wezterm",
 	disable_default_key_bindings = true,
 	keys = {
-		{ key = "c", mods = "ALT|SHIFT", action = wezterm.action({ CopyTo = "ClipboardAndPrimarySelection" }) },
+		{ key = "c", mods = "ALT|SHIFT", action = act({ CopyTo = "ClipboardAndPrimarySelection" }) },
 		{ key = "v", mods = "ALT|SHIFT", action = "Paste" },
 		{ key = "0", mods = "CTRL", action = "ResetFontSize" },
 		{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
 		{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
 		{ key = "Enter", mods = "ALT", action = "ToggleFullScreen" },
+		{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
+		-- mux
+		{ key = "E", mods = "CTRL|SHIFT", action = act.DetachDomain({ DomainName = "dln-dev" }) },
+		{ key = "1", mods = "ALT", action = act({ ActivateTab = 0 }) },
+		{ key = "2", mods = "ALT", action = act({ ActivateTab = 1 }) },
+		{ key = "3", mods = "ALT", action = act({ ActivateTab = 2 }) },
+		{ key = "4", mods = "ALT", action = act({ ActivateTab = 3 }) },
+		{ key = "5", mods = "ALT", action = act({ ActivateTab = 4 }) },
+		{ key = "6", mods = "ALT", action = act({ ActivateTab = 5 }) },
+		{ key = "7", mods = "ALT", action = act({ ActivateTab = 6 }) },
+		{ key = "8", mods = "ALT", action = act({ ActivateTab = 7 }) },
+		{ key = "9", mods = "ALT", action = act({ ActivateTab = 8 }) },
+	},
+	unix_domains = {
+		{
+			name = "dln-dev",
+			local_echo_threshold_ms = 100,
+			proxy_command = is_server == false and { "ssh", "dln-dev", "wezterm", "cli", "proxy" } or null,
+		},
 	},
 }
diff --git a/.local/share/applications/wezterm-dln-dev-secondary.desktop b/.local/share/applications/wezterm-dln-dev-secondary.desktop
index 2b16f20..b545e9f 100644
--- a/.local/share/applications/wezterm-dln-dev-secondary.desktop
+++ b/.local/share/applications/wezterm-dln-dev-secondary.desktop
@@ -7,5 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-#Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new-session", "-As1", "-t0"}' --config font_size=11 --config=window_background_opacity=0.4 start --class=wezterm-dln-dev-secondary
-Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new-session", "-As1", "-t0"}' --config font_size=11 start --class=wezterm-dln-dev-secondary
+Exec=/usr/bin/wezterm connect dln-dev --class=wezterm-dln-dev-secondary
diff --git a/.local/share/applications/wezterm-dln-dev.desktop b/.local/share/applications/wezterm-dln-dev.desktop
index aa25828..41311a9 100644
--- a/.local/share/applications/wezterm-dln-dev.desktop
+++ b/.local/share/applications/wezterm-dln-dev.desktop
@@ -7,5 +7,5 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As0"}' start --class=wezterm-dln-dev
+Exec=/usr/bin/wezterm connect dln-dev --class=wezterm-dln-dev
 #Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev"}' start --class=wezterm-dln-dev

From dcf02aff925628d2dc55b93e6a18c35038b33987 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 7 Mar 2023 16:51:47 +0100
Subject: [PATCH 007/656] ssh: remove dbus socket forwarding

---
 .config/systemd/user/dbus-notification-proxy.service | 9 ---------
 .ssh/config                                          | 1 -
 2 files changed, 10 deletions(-)
 delete mode 100644 .config/systemd/user/dbus-notification-proxy.service

diff --git a/.config/systemd/user/dbus-notification-proxy.service b/.config/systemd/user/dbus-notification-proxy.service
deleted file mode 100644
index 1b96cce..0000000
--- a/.config/systemd/user/dbus-notification-proxy.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=dbus proxy for desktop notifications
-
-[Service]
-ExecStart=/usr/bin/xdg-dbus-proxy "$DBUS_SESSION_BUS_ADDRESS" %t/bus-notification --filter --talk=org.freedesktop.Notifications
-Restart=always
-
-[Install]
-WantedBy=default.target
diff --git a/.ssh/config b/.ssh/config
index 0f4ff61..7f7f1c4 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -28,4 +28,3 @@ LocalForward 127.0.0.1:8080 127.0.0.1:8080
 # RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.extra
 RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh
 # RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.scdaemon ${XDG_RUNTIME_DIR}/gnupg/S.scdaemon
-RemoteForward ${XDG_RUNTIME_DIR}/bus-notification ${XDG_RUNTIME_DIR}/bus-notification

From d4605f5a553b1e5e0ffa4953bac33796ae3f7ab5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 7 Mar 2023 16:53:50 +0100
Subject: [PATCH 008/656] wezterm: use multiplexer

---
 .config/wezterm/shelman-dark.toml  | 14 ++++++++++++
 .config/wezterm/shelman-light.toml | 14 ++++++++++++
 .config/wezterm/wezterm.lua        | 34 ++++++++++++++++++++++++------
 3 files changed, 55 insertions(+), 7 deletions(-)
 create mode 100644 .config/wezterm/shelman-dark.toml
 create mode 100644 .config/wezterm/shelman-light.toml

diff --git a/.config/wezterm/shelman-dark.toml b/.config/wezterm/shelman-dark.toml
new file mode 100644
index 0000000..24f0f06
--- /dev/null
+++ b/.config/wezterm/shelman-dark.toml
@@ -0,0 +1,14 @@
+[metadata]
+  name = "Shelman Dark"
+  origin_url = ""
+
+[colors]
+  ansi = ["#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#f0f0f0"]
+  brights = ["#000000", "#ffb4af", "#d2ffba", "#ffebb7", "#b1deff", "#edb5ff", "#bdf4ff", "#ffffff"]
+  background = "#1e2835"
+  foreground = "#e0e0e0"
+  cursor_bg = "#ffcc00"
+  cursor_fg = "#000000"
+  cursor_border = "#ffcc00"
+  selection_bg = "#d7d7d7"
+  selection_fg = "#000000"
diff --git a/.config/wezterm/shelman-light.toml b/.config/wezterm/shelman-light.toml
new file mode 100644
index 0000000..6b730cb
--- /dev/null
+++ b/.config/wezterm/shelman-light.toml
@@ -0,0 +1,14 @@
+[metadata]
+  name = "Shelman Light"
+  origin_url = ""
+
+[colors]
+  ansi = ["#000000", "#9e001d", "#509e00", "#ffc900", "#00669e", "#7d009e", "#008a9e", "#f0f0f0"]
+  brights = ["#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#ffffff"]
+  background = "#fefeff"
+  foreground = "#000000"
+  cursor_bg = "#aa0000"
+  cursor_fg = "#ffffff"
+  cursor_border = "#aa0000"
+  selection_bg = "#d7d7d7"
+  selection_fg = "#000000"
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index b47d30d..cd0962e 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -1,12 +1,27 @@
 local wezterm = require("wezterm")
+local io = require("io")
+local os = require("os")
 local mux = wezterm.mux
 local act = wezterm.action
 
-function font_with_fallback(name, params)
+local function font_with_fallback(name, params)
 	local names = { name, "Noto Color Emoji" }
 	return wezterm.font_with_fallback(names, params)
 end
 
+wezterm.on("gui-startup", function(cmd)
+	local tab, pane, window = mux.spawn_window(cmd or {})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+	window:spawn_tab({})
+end)
+
 wezterm.on("mux-startup", function()
 	local tab, pane, window = mux.spawn_window({})
 	window:spawn_tab({})
@@ -20,20 +35,25 @@ wezterm.on("mux-startup", function()
 	window:spawn_tab({})
 end)
 
-function scheme_for_appearance(appearance)
+local function scheme_for_appearance(appearance)
 	if appearance:find("Dark") then
-		-- return "Shelman Light"
 		return "Shelman Dark"
 	else
-		return "Shelman Dark"
-		-- return "Shelman Light"
+		return "Shelman Light"
 	end
 end
 
+local function _get_scheme()
+	-- if wezterm.gui then
+	-- return  return scheme_for_appearance(wezterm.gui.get_appearance())
+	-- end
+	return "Shelman Dark"
+end
+
 local is_server = wezterm.hostname() == "dln-dev"
 
 return {
-	color_scheme = (is_server and "Shelman Dark" or scheme_for_appearance(wezterm.gui.get_appearance())),
+	color_scheme = _get_scheme(),
 	color_scheme_dirs = { "/home/dln/.config/wezterm" },
 	font = font_with_fallback("Iosevka Shelman SS09", { weight = "Regular" }),
 	font_rules = {
@@ -139,7 +159,7 @@ return {
 		{
 			name = "dln-dev",
 			local_echo_threshold_ms = 100,
-			proxy_command = is_server == false and { "ssh", "dln-dev", "wezterm", "cli", "proxy" } or null,
+			proxy_command = is_server == false and { "ssh", "dln-dev", "wezterm", "cli", "proxy" } or nil,
 		},
 	},
 }

From 7a66f62635cf4fe79267560ece6b92bb6fcbbdc4 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 7 Mar 2023 22:39:24 +0100
Subject: [PATCH 009/656] nvim: darkness

---
 .config/nvim/lazy-lock.json              |  63 ++++---
 .config/nvim/lua/plugins/colorscheme.lua | 208 -----------------------
 .config/nvim/lua/plugins/zenbones.lua    |   4 +-
 3 files changed, 32 insertions(+), 243 deletions(-)
 delete mode 100644 .config/nvim/lua/plugins/colorscheme.lua

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index f935590..3179b01 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,58 +1,55 @@
 {
-  "Comment.nvim": { "branch": "master", "commit": "418d3117dab2f54c4340ea73e0070dd78fc81753" },
+  "Comment.nvim": { "branch": "master", "commit": "6821b3ae27a57f1f3cf8ed030e4a55d70d0c4e43" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
-  "cmp-cmdline": { "branch": "main", "commit": "23c51b2a3c00f6abc4e922dbd7c3b9aca6992063" },
+  "cmp-cmdline": { "branch": "main", "commit": "8fcc934a52af96120fe26358985c10c035984b53" },
   "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" },
   "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp-tmux": { "branch": "main", "commit": "984772716f66d8ee88535a6bf3f94c4b4e1301f5" },
   "colorbuddy.vim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "copilot-cmp": { "branch": "master", "commit": "b732a58ac8b7287b981cd9f0d9c0f61e5e9d5760" },
-  "copilot.lua": { "branch": "master", "commit": "137df557486f91627b8e4708a47088f36950f12c" },
-  "gitsigns.nvim": { "branch": "main", "commit": "4bd5d7702c17643ff40c035b6b936757b99743c7" },
-  "go.nvim": { "branch": "master", "commit": "4977d3165d6ee8a06781f7b3443484fe7e91c9a3" },
-  "hlargs.nvim": { "branch": "main", "commit": "88b925d699fb39633cdda02c24f0b3ba5d0e6964" },
+  "copilot-cmp": { "branch": "master", "commit": "92535dfd9c430b49ca7d9a7da336c5db65826b65" },
+  "copilot.lua": { "branch": "master", "commit": "b41d4c9c7d4f5e0272bcf94061b88e244904c56f" },
+  "gitsigns.nvim": { "branch": "main", "commit": "b1f9cf7c5c5639c006c937fc1819e09f358210fc" },
+  "go.nvim": { "branch": "master", "commit": "1844fd11a143aba3eec644c2e2099a20f79c1ec1" },
+  "hlargs.nvim": { "branch": "main", "commit": "a7ad6ed8d6e27ea4dd13fda63fa732e9196ba4ea" },
   "inc-rename.nvim": { "branch": "main", "commit": "21c23c379342a731a0c90f226601ec0434627b26" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "8299fe7703dfff4b1752aeed271c3b95281a952d" },
-  "lazy.nvim": { "branch": "main", "commit": "6a18404b7d1c05f0d1f35f7b78bd5c282dff7a89" },
-  "lsp_lines.nvim": { "branch": "main", "commit": "ec98b45c8280e5ef8c84028d4f38aa447276c002" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" },
+  "lazy.nvim": { "branch": "main", "commit": "e89acede13f46a5db229133cf0c87aee74938c56" },
   "lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
-  "lualine.nvim": { "branch": "master", "commit": "0050b308552e45f7128f399886c86afefc3eb988" },
+  "lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
   "lush.nvim": { "branch": "main", "commit": "b1e8eb1da3fee95ef31515a73c9eff9bf251088d" },
-  "marks.nvim": { "branch": "master", "commit": "c3b18b97912720a6586fb537c5c0dfc9e06a68f1" },
-  "neogen": { "branch": "main", "commit": "465af9d6c6fb7f360175991dcc23fc10917e3a06" },
-  "noice.nvim": { "branch": "main", "commit": "d8a1f3056ad713b5d471048f8d029264828e22c0" },
-  "nui.nvim": { "branch": "main", "commit": "d147222a1300901656f3ebd5b95f91732785a329" },
-  "null-ls.nvim": { "branch": "main", "commit": "9d811bb6ed44cf766f4bda8a47fd65fdfbdcaa7d" },
-  "nvim-cmp": { "branch": "main", "commit": "aae0c3e4e778ca4be6fabc52e388cbd5b844b7a5" },
-  "nvim-dap": { "branch": "master", "commit": "401f5f22b2d7f9bdbb9294d0235136091458816a" },
+  "marks.nvim": { "branch": "master", "commit": "76aca5069c5ce5c0099e30168649e6393e494f26" },
+  "neogen": { "branch": "main", "commit": "93d997dbddfe084e77ba4541c54a7b8bfd754fb1" },
+  "noice.nvim": { "branch": "main", "commit": "c22651651da01239fc4afac4cdb7261797d5f02e" },
+  "nui.nvim": { "branch": "main", "commit": "0dc148c6ec06577fcf06cbab3b7dac96d48ba6be" },
+  "null-ls.nvim": { "branch": "main", "commit": "900c38cfa91eb7ff2716da70f2f2c1d33741cf0a" },
+  "nvim-cmp": { "branch": "main", "commit": "feed47fd1da7a1bad2c7dca456ea19c8a5a9823a" },
+  "nvim-dap": { "branch": "master", "commit": "75a94b8b577a970c0cad25a54a64dc40fc6fa0ea" },
   "nvim-dap-go": { "branch": "main", "commit": "b4ded7de579b4e2a85c203388233b54bf1028816" },
-  "nvim-dap-ui": { "branch": "master", "commit": "110193102b4840be8bda6eb2358367026145ae3a" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "7f7f2af549e72a0b7bddc3b4f827beb027ea8ce3" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "8db23ea51203b5f00ad107a0cef7e0b2d7a0476c" },
   "nvim-lsp-ts-utils": { "branch": "main", "commit": "0a6a16ef292c9b61eac6dad00d52666c7f84b0e7" },
-  "nvim-lspconfig": { "branch": "master", "commit": "9b8f5260f3e793e2dcb2899e0a5b944667a95cb2" },
-  "nvim-navic": { "branch": "master", "commit": "7e9d2b2b601149fecdccd11b516acb721e571fe6" },
-  "nvim-osc52": { "branch": "main", "commit": "27da4724a887dabed3768b41fa51c785cb62ef26" },
-  "nvim-treesitter": { "branch": "master", "commit": "f475b24c81d64d64ab213a73882b7c4f3bbbf26a" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "fcd764507f723903af5507e141ea593e855b504a" },
+  "nvim-lspconfig": { "branch": "master", "commit": "1a2d5f5224c65b0709bf5da0ccd9cad29272083a" },
+  "nvim-navic": { "branch": "master", "commit": "cdd24539bcf114a499827e9b32869fe74836efe7" },
+  "nvim-osc52": { "branch": "main", "commit": "47ce7ee2396fa3ee4fb6b0e0ef14ba06f9c9bd31" },
+  "nvim-treesitter": { "branch": "master", "commit": "356c9db3478b1bc6d0f0eefcb397989e50fdc35f" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "f5f13206ec33e55b16c8e1a9dec301e8bead4835" },
   "nvim-ts-autotag": { "branch": "main", "commit": "fdefe46c6807441460f11f11a167a2baf8e4534b" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "a0f89563ba36b3bacd62cf967b46beb4c2c29e52" },
-  "nvim-web-devicons": { "branch": "master", "commit": "bb6d4fd1e010300510172b173ab5205d37af084f" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "729d83ecb990dc2b30272833c213cc6d49ed5214" },
+  "nvim-web-devicons": { "branch": "master", "commit": "4af94fec29f508159ceab5413383e5dedd6c24e3" },
   "packer.nvim": { "branch": "master", "commit": "1d0cf98a561f7fd654c970c49f917d74fafe1530" },
-  "playground": { "branch": "master", "commit": "c481c660fa903a0e295902b1765ecfbd6e76a556" },
-  "plenary.nvim": { "branch": "master", "commit": "9a0d3bf7b832818c042aaf30f692b081ddd58bd9" },
+  "playground": { "branch": "master", "commit": "4044b53c4d4fcd7a78eae20b8627f78ce7dc6f56" },
+  "plenary.nvim": { "branch": "master", "commit": "253d34830709d690f013daf2853a9d21ad7accab" },
   "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
-  "refactoring.nvim": { "branch": "master", "commit": "57c32c6b7a211e5a3a5e4ddc4ad2033daff5cf9a" },
   "stylua-nvim": { "branch": "main", "commit": "ce59a353f02938cba3e0285e662fcd3901cd270f" },
   "telescope-dap.nvim": { "branch": "master", "commit": "313d2ea12ae59a1ca51b62bf01fc941a983d9c9c" },
+  "telescope-env.nvim": { "branch": "master", "commit": "00a703cc7b713cdda0a981d88fddf3ce25502af5" },
   "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
   "telescope-github.nvim": { "branch": "master", "commit": "ee95c509901c3357679e9f2f9eaac3561c811736" },
   "telescope-ui-select.nvim": { "branch": "master", "commit": "62ea5e58c7bbe191297b983a9e7e89420f581369" },
-  "telescope.nvim": { "branch": "master", "commit": "203bf5609137600d73e8ed82703d6b0e320a5f36" },
-  "trouble.nvim": { "branch": "main", "commit": "556ef3089709a6e253df1e500381fec5eb48e48a" },
+  "telescope.nvim": { "branch": "master", "commit": "a3f17d3baf70df58b9d3544ea30abe52a7a832c2" },
+  "trouble.nvim": { "branch": "main", "commit": "67337644e38144b444d026b0df2dc5fa0038930f" },
   "vim-cue": { "branch": "master", "commit": "bd1a62303d096aa24fe4160a475645087f8770b3" },
   "vim-illuminate": { "branch": "master", "commit": "49062ab1dd8fec91833a69f0a1344223dd59d643" },
-  "yanky.nvim": { "branch": "main", "commit": "100150704104db1930519eb2a05e5aee6d00f553" },
   "zenbones.nvim": { "branch": "main", "commit": "910b8c240c6aaf5263db038db81c538602c766c3" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
deleted file mode 100644
index c034038..0000000
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ /dev/null
@@ -1,208 +0,0 @@
-return {
-
-	{
-		"mcchrish/zenbones.nvim",
-		lazy = false,
-		priority = 1000,
-		dependencies = {
-			"rktjmp/lush.nvim",
-		},
-		config = function()
-			vim.g.zenbones = {
-				style = "light",
-				lightness = "bright",
-				colorize_diagnostic_underline_text = true,
-				transparent_background = true,
-			}
-
-			local lush = require("lush")
-			local base = require("zenbones")
-
-			-- Create some specs
-			---@diagnostic disable = undefined-global
-			local specs = lush.parse(function(injected_functions)
-				-- See https://github.com/rktjmp/lush.nvim/issues/109
-				local sym = injected_functions.sym
-				return {
-					Special({ fg = "#EFEBE9" }),
-					Normal({ fg = "#f0f0f0" }),
-					Statement({ fg = "#e0e0e0", gui = "bold" }),
-					Identifier({ fg = "#e7f0f7" }),
-					Type({ fg = "#E3F2FD" }),
-					CursorLine({ bg = "#102030" }),
-					Error({ fg = "#d9534f", bg = "#110000" }),
-					CursorLineNr({ fg = "#BCAAA4", bg = "#102030" }),
-					MsgArea({ fg = "#A1887F", bg = "#f1f1f1" }),
-					Number({ fg = "#32936F" }),
-					sym("@field")({ fg = "#E3F2FD" }),
-					String({ fg = "#C5E1A5", gui = "italic" }),
-					sym("@string")({ fg = "#C5E1A5", gui = "italic" }),
-					sym("@type.definition")({ fg = "#CE93D8", gui = "bold" }),
-					sym("@function")({ fg = "#FFAB91", gui = "bold" }),
-					sym("@method")(sym("@function")),
-					-- Comment({ fg = "#114499", gui = "bold,italic" }),
-					-- Comment({ fg = "#144EE1", gui = "bold,italic" }),
-					Comment({ fg = "#E0E0E0", gui = "bold,italic" }),
-					Todo({ fg = "#FF0000", gui = "bold,underline" }),
-					EndOfBuffer({ fg = "#CBCFE1" }),
-					CopilotSuggestion({ fg = "#0066cc", gui = "bold,italic" }),
-					LineNr({ fg = "#9FA8AC", gui = "bold,italic" }),
-					LineNrAbove({ fg = "#9F080C", gui = "bold,italic" }),
-					IndentBlanklineContextChar({ fg = "#699FB5", gui = "italic" }),
-					-- Indent1({ fg = "#DFDF9A", gui = "italic" }),
-					-- Indent2({ fg = "#BAE1FF", gui = "italic" }),
-					-- Indent3({ fg = "#BAFFC9", gui = "italic" }),
-					-- Indent4({ fg = "#FFB3BA", gui = "italic" }),
-					-- Indent5({ fg = "#FFDFBA", gui = "italic" }),
-					-- Indent6({ fg = "#F3E5F5", gui = "italic" }),
-					NormalFloat({ bg = "#263238" }),
-					FloatBorder({ fg = "#FFB74D", bg = "#263238" }),
-					TelescopeNormal({ bg = "#263238" }),
-					TelescopeBorder({ fg = "#78909C", bg = "#263238" }),
-					TelescopeSelection({ fg = "#FFF8E1", bg = "#01579B" }),
-					DiagnosticSignError({ fg = "#ff2200", bg = "#220000", gui = "bold" }),
-					DiagnosticVirtualTextInfo({ fg = "#0033bb", bg = "#f7fcff", gui = "bold,italic" }),
-					DiagnosticVirtualTextWarn({ fg = "#bb2200", bg = "#110000", gui = "bold,italic" }),
-					DiagnosticVirtualTextError({ fg = "#ff2200", bg = "#110000", gui = "italic" }),
-					DiagnosticUnderlineError({ fg = "#ff0000", gui = "undercurl" }),
-					DiagnosticUnderlineWarn({ fg = "#ff7700", gui = "undercurl" }),
-					DiagnosticUnderlineInfo({ fg = "#3366cc", gui = "undercurl" }),
-					MarkSignHL({ fg = "#009688", bg = "#E0F7FA" }),
-					MarkSignNumHL({ fg = "#B2DFDB", bg = "#E0F7FA" }),
-					GitSignsAdd({ fg = "#81C784" }),
-					GitSignsAddNr({ fg = "#C8E6C9" }),
-					GitSignsDelete({ fg = "#E53935" }),
-					GitSignsDeleteNr({ fg = "#FFCDD2" }),
-					GitSignsChange({ fg = "#FFA726" }),
-					GitSignsChangeNr({ fg = "#FFE0B2" }),
-
-					Hlargs({ fg = "#FFF8E1" }),
-
-					IlluminatedWordText({ fg = "#FFA000" }),
-					NotifyBackground({ bg = "#FFF8D6" }),
-
-					NavicIcons({ fg = "#cc0000" }),
-					NavicIconsFile({ fg = "#cc0000" }),
-					NavicIconsModule({ fg = "#cc0000" }),
-					NavicIconsNamespace({ fg = "#cc0000" }),
-					NavicIconsPackage({ fg = "#cc0000" }),
-					NavicIconsClass({ fg = "#cc0000" }),
-					NavicIconsMethod({ fg = "#cc0000" }),
-					NavicIconsProperty({ fg = "#cc0000" }),
-					NavicIconsField({ fg = "#cc0000" }),
-					NavicIconsConstructor({ fg = "#cc0000" }),
-					NavicIconsEnum({ fg = "#cc0000" }),
-					NavicIconsInterface({ fg = "#cc0000" }),
-					NavicIconsFunction({ fg = "#cc0000" }),
-					NavicIconsVariable({ fg = "#cc0000" }),
-					NavicIconsConstant({ fg = "#cc0000" }),
-					NavicIconsString({ fg = "#cc0000" }),
-					NavicIconsNumber({ fg = "#cc0000" }),
-					NavicIconsBoolean({ fg = "#cc0000" }),
-					NavicIconsArray({ fg = "#cc0000" }),
-					NavicIconsObject({ fg = "#cc0000" }),
-					NavicIconsKey({ fg = "#cc0000" }),
-					NavicIconsKeyword({ fg = "#cc0000" }),
-					NavicIconsNull({ fg = "#cc0000" }),
-					NavicIconsEnumMember({ fg = "#cc0000" }),
-					NavicIconsStruct({ fg = "#cc0000" }),
-					NavicIconsEvent({ fg = "#cc0000" }),
-					NavicIconsOperator({ fg = "#cc0000" }),
-					NavicIconsTypeParameter({ fg = "#cc0000" }),
-
-					NavicText({ fg = "#cc0000", gui = "italic" }),
-
-					-- LspCodeLens({ fg = "#00ff00", gui = "undercurl" }),
-					-- LspSignatureActiveParameter({ fg = "#ff0000", bg = "#ffffcc" }),
-
-					NoiceCmdlinePopup({ bg = "#263238" }),
-					NoiceMini({ bg = "#263238" }),
-
-					PMenu({ bg = "#263238" }),
-					PMenuBorder({ bg = "#F7F5F0", fg = "#886622" }),
-					PMenuSel({ fg = "#FFFFFF", bg = "#1976D2" }),
-					PMenuSbar({ bg = "#90CAF9" }),
-					PMenuThumb({ bg = "#64B5F6" }),
-					StatusLine({ base = base.VertSplit, fg = "#BCAAA4" }),
-					StatusLineNC({ base = base.VertSplit, fg = "#BCAAA4" }),
-					TreesitterContext({ bg = "#f0f0f0", fg = "#BCAAA4", gui = "bold,italic" }),
-					TreesitterContextLineNumber({ bg = "#f0f0f0", fg = "#979770", gui = "bold,italic" }),
-				}
-			end)
-
-			-- Apply specs using lush tool-chain
-			vim.cmd([[colorscheme zenbones]])
-			lush.apply(lush.compile(specs))
-		end,
-	},
-
-	-- {
-	-- 	"rebelot/kanagawa.nvim",
-	-- 	name = "kanagawa",
-	-- 	lazy = false,
-	-- 	priority = 1000,
-	-- 	config = function()
-	-- 		require("kanagawa").setup({
-	-- 			commentStyle = { bold = true, italic = true },
-	-- 			functionStyle = {},
-	-- 			keywordStyle = {},
-	-- 			statementStyle = { bold = true },
-	-- 			typeStyle = {},
-	-- 			variablebuiltinStyle = { italic = true },
-	-- 			transparent = true, -- do not set background color
-	-- 			colors = {
-	--
-	-- 				fujiWhite = "#FFFFFF",
-	-- 			},
-	-- 			overrides = {},
-	-- 			theme = "default", -- Load "default" theme or the experimental "light" theme
-	-- 		})
-	-- 		-- vim.cmd([[colorscheme kanagawa ]])
-	-- 	end,
-	-- },
-
-	-- {
-	-- 	"catppuccin/nvim",
-	-- 	name = "catppuccin",
-	-- 	lazy = false,
-	-- 	priority = 1000,
-	-- 	config = function()
-	-- 		require("catppuccin").setup({
-	-- 			flavour = "mocha", -- latte, frappe, macchiato, mocha
-	-- 			background = {
-	-- 				light = "latte",
-	-- 				dark = "latte",
-	-- 			},
-	-- 			transparent_background = true,
-	-- 			show_end_of_buffer = true,
-	-- 			styles = {
-	-- 				comments = { "bold,italic" },
-	-- 				conditionals = {},
-	-- 				loops = {},
-	-- 				functions = {},
-	-- 				keywords = {},
-	-- 				strings = { "italic" },
-	-- 				variables = {},
-	-- 				numbers = {},
-	-- 				booleans = {},
-	-- 				properties = {},
-	-- 				types = {},
-	-- 				operators = {},
-	-- 			},
-	-- 			custom_highlights = function(colors)
-	-- 				return {
-	-- 					Comment = { fg = colors.blue },
-	-- 					Keyword = { fg = colors.rosewater },
-	-- 					["@keyword"] = { fg = colors.rosewater },
-	-- 					["@keyword.operator"] = { fg = colors.rosewater },
-	-- 					["@keyword.function"] = { fg = colors.rosewater },
-	-- 					["@keyword.return"] = { fg = colors.rosewater },
-	-- 					["@constant.builtin"] = { fg = colors.peach, style = {} },
-	-- 					-- ["@comment"] = { fg = colors.blue, style = { "bold,italic" } },
-	-- 				}
-	-- 			end,
-	-- 		})
-	-- 		vim.cmd([[colorscheme catppuccin ]])
-	-- 	end,
-	-- },
-}
diff --git a/.config/nvim/lua/plugins/zenbones.lua b/.config/nvim/lua/plugins/zenbones.lua
index 79c2c41..a3a6a80 100644
--- a/.config/nvim/lua/plugins/zenbones.lua
+++ b/.config/nvim/lua/plugins/zenbones.lua
@@ -125,8 +125,8 @@ function M.config()
 	end)
 
 	-- Apply specs using lush tool-chain
-	lush.apply(lush.compile(specs))
-	vim.cmd("colorscheme zenbones")
+	-- lush.apply(lush.compile(specs))
+	vim.cmd("colorscheme kanagawabones")
 end
 
 return M

From a04e268db91254af2a9bbae08df8f36a20570241 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 7 Mar 2023 22:56:45 +0100
Subject: [PATCH 010/656] replace tmux-edit-helper with equivalent wezterm
 script

---
 .config/wezterm/wezterm.lua                   | 21 +++++++++++++++++++
 .zshrc                                        |  2 +-
 bin/{tmux-edit-helper => wezterm-edit-helper} | 18 ++++++++++------
 3 files changed, 34 insertions(+), 7 deletions(-)
 rename bin/{tmux-edit-helper => wezterm-edit-helper} (59%)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index cd0962e..aa03e89 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -52,6 +52,24 @@ end
 
 local is_server = wezterm.hostname() == "dln-dev"
 
+wezterm.on("user-var-changed", function(window, pane, name, value)
+	wezterm.log_info("user-var-changed", name, value)
+
+	if name == "nvim_activate" then
+		for _, t in ipairs(window:mux_window():tabs_with_info()) do
+			for _, p in ipairs(t.tab:panes()) do
+				if p:get_title() == "nvim" then
+					window:perform_action(act.ActivateTab(t.index), p)
+					if t.index > 0 then
+						window:perform_action(act.MoveTab(0), p)
+					end
+				end
+			end
+		end
+		-- window:perform_action(act.ActivateTab(0), pane)
+	end
+end)
+
 return {
 	color_scheme = _get_scheme(),
 	color_scheme_dirs = { "/home/dln/.config/wezterm" },
@@ -154,6 +172,9 @@ return {
 		{ key = "7", mods = "ALT", action = act({ ActivateTab = 6 }) },
 		{ key = "8", mods = "ALT", action = act({ ActivateTab = 7 }) },
 		{ key = "9", mods = "ALT", action = act({ ActivateTab = 8 }) },
+		{ key = "0", mods = "ALT", action = act({ ActivateTab = 9 }) },
+		{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
+		{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
 	},
 	unix_domains = {
 		{
diff --git a/.zshrc b/.zshrc
index 43cb2f9..71995e5 100644
--- a/.zshrc
+++ b/.zshrc
@@ -105,7 +105,7 @@ export LESS="--mouse --wheel-lines=1 -nRXF"
 
 ## Aliases
 alias c='cut -c-${COLUMNS}'
-alias e='tmux-edit-helper'
+alias e='wezterm-edit-helper'
 alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
 alias l=bat
 alias lw='bat --wrap=never'
diff --git a/bin/tmux-edit-helper b/bin/wezterm-edit-helper
similarity index 59%
rename from bin/tmux-edit-helper
rename to bin/wezterm-edit-helper
index 1742e56..8b00b00 100755
--- a/bin/tmux-edit-helper
+++ b/bin/wezterm-edit-helper
@@ -14,11 +14,17 @@ else
 	fre --store_name "$_store" --add "$_file"
 fi
 
-tmux select-window -t nvim 2>/dev/null ||
-	tmux new-window -S -n nvim \
-		-e "BUILD_COMMAND=$BUILD_COMMAND" \
-		-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
-		-e "GOFLAGS=$GOFLAGS" \
-		nvim --listen "$XDG_RUNTIME_DIR/nvim.sock"
+function _nvim_setenv() {
+	nvim --server "$XDG_RUNTIME_DIR/nvim.sock" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")"
+}
+
+nvim --server "$XDG_RUNTIME_DIR/nvim.sock" --remote-expr "42" 2>/dev/null ||
+	(wezterm cli spawn --cwd "${PWD}" nvim --listen "$XDG_RUNTIME_DIR/nvim.sock" && sleep 0.5)
+
+_nvim_setenv BUILD_COMMAND "$BUILD_COMMAND"
+_nvim_setenv GOPACKAGESDRIVER "$GOPACKAGESDRIVER"
+_nvim_setenv GOFLAGS "$GOFLAGS"
 
 nvim --server "$XDG_RUNTIME_DIR/nvim.sock" --remote "$_file"
+
+printf "\033]1337;SetUserVar=%s=%s\007" nvim_activate $(date +%s | base64)

From 41b8393e6a90aac8e7f6b9a8aae0c4a0bd522eec Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 7 Mar 2023 23:04:13 +0100
Subject: [PATCH 011/656] wezterm: disable tab bar

---
 .config/wezterm/wezterm.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index aa03e89..2c90a10 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -141,7 +141,7 @@ return {
 	cursor_thickness = "3px",
 	cursor_blink_rate = 300,
 	enable_wayland = true,
-	enable_tab_bar = true,
+	enable_tab_bar = false,
 	tab_bar_at_bottom = true,
 	use_fancy_tab_bar = true,
 	show_tab_index_in_tab_bar = true,

From 3c37004e9d616689f997ccb5638d6df5a7981cd5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 8 Mar 2023 11:04:13 +0100
Subject: [PATCH 012/656] nvim: clean up cmp config

---
 .config/nvim/lua/plugins/cmp.lua | 99 ++++++++++----------------------
 1 file changed, 30 insertions(+), 69 deletions(-)

diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
index c52f363..ddba684 100644
--- a/.config/nvim/lua/plugins/cmp.lua
+++ b/.config/nvim/lua/plugins/cmp.lua
@@ -1,4 +1,4 @@
-local M = {
+return {
 	"hrsh7th/nvim-cmp",
 	dependencies = {
 		"andersevenrud/cmp-tmux",
@@ -9,75 +9,36 @@ local M = {
 		"hrsh7th/cmp-cmdline",
 		"hrsh7th/cmp-nvim-lsp-signature-help",
 		"onsails/lspkind-nvim",
+		{ "zbirenbaum/copilot-cmp", opts = {} },
 	},
 	event = "InsertEnter",
-}
+	config = function()
+		local cmp = require("cmp")
 
-function M.config()
-	local cmp = require("cmp")
-
-	local has_words_before = function()
-		local line, col = unpack(vim.api.nvim_win_get_cursor(0))
-		return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
-	end
-
-	vim.o.completeopt = "menuone,noselect"
-
-	cmp.setup({
-		completion = {
-			completeopt = "menu,menuone,noinsert",
-		},
-
-		formatting = {
-			format = require("lspkind").cmp_format(),
-		},
-
-		window = {
-			completion = cmp.config.window.bordered({
-				winhighlight = "Normal:PMenu,FloatBorder:PMenuBorder,CursorLine:PMenuSel,Search:None",
-			}),
-			documentation = cmp.config.window.bordered({
-				winhighlight = "Normal:PMenu,FloatBorder:PMenu,CursorLine:PMenuSel,Search:None",
-			}),
-		},
-
-		mapping = {
-			["<Up>"] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "c" }),
-			["<Down>"] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "c" }),
-			["<C-d>"] = cmp.mapping.scroll_docs(-2),
-			["<C-u>"] = cmp.mapping.scroll_docs(2),
-			["<C-e>"] = cmp.mapping({
-				i = cmp.mapping.abort(),
-				c = cmp.mapping.close(),
-			}),
-			-- ["<CR>"] = cmp.mapping(cmp.mapping.confirm({ select = false }), { "i", "c" }),
-			-- ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
-			["<CR>"] = cmp.mapping(cmp.mapping.confirm({ select = true })),
-			["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), {}),
-		},
-
-		-- experimental = {
-		-- 	ghost_text = {
-		-- 		hl_group = "LspCodeLens",
-		-- 	},
-		-- },
-
-		sources = cmp.config.sources({
-			{ name = "nvim_lsp" },
-			{ name = "nvim_lsp_signature_help" },
-			{ name = "buffer" },
-			{ name = "copilot" },
-			{
-				name = "tmux",
-				priority = 2,
-				option = {
-					all_panes = true,
-					trigger_characters = {},
-				},
+		cmp.setup({
+			formatting = {
+				format = require("lspkind").cmp_format(),
 			},
-			{ name = "emoji" },
-		}),
-	})
-end
-
-return M
+			window = {
+				completion = cmp.config.window.bordered(),
+				documentation = cmp.config.window.bordered(),
+			},
+			mapping = cmp.mapping.preset.insert({
+				["<Up>"] = cmp.mapping.select_prev_item(),
+				["<Down>"] = cmp.mapping.select_next_item(),
+				["<C-d>"] = cmp.mapping.scroll_docs(-2),
+				["<C-u>"] = cmp.mapping.scroll_docs(2),
+				["<C-e>"] = cmp.mapping.abort(),
+				["<CR>"] = cmp.mapping.confirm({ select = true }),
+				["<C-Space>"] = cmp.mapping.complete(),
+			}),
+			sources = cmp.config.sources({
+				{ name = "nvim_lsp" },
+				{ name = "nvim_lsp_signature_help" },
+				{ name = "buffer" },
+				{ name = "copilot" },
+				{ name = "emoji" },
+			}),
+		})
+	end,
+}

From 592b8e4b091abf39da3f885e2bd650c04b4f288a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 8 Mar 2023 11:08:27 +0100
Subject: [PATCH 013/656] nvim: C-/ works out of tmux

---
 .config/nvim/lua/plugins/misc.lua | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.config/nvim/lua/plugins/misc.lua b/.config/nvim/lua/plugins/misc.lua
index 24391dd..a76c874 100644
--- a/.config/nvim/lua/plugins/misc.lua
+++ b/.config/nvim/lua/plugins/misc.lua
@@ -70,8 +70,8 @@ return {
 	{
 		"numToStr/Comment.nvim",
 		keys = {
-			{ "<C-_>", "<Plug>(comment_toggle_linewise_current)" },
-			{ "<C-_>", "<Plug>(comment_toggle_linewise_visual)", mode = "v" },
+			{ "<C-/>", "<Plug>(comment_toggle_linewise_current)" },
+			{ "<C-/>", "<Plug>(comment_toggle_linewise_visual)", mode = "v" },
 		},
 		dependencies = {
 			"JoosepAlviste/nvim-ts-context-commentstring",

From f6fe8df9344d481ff705bb1ceedf2735a6e6d8b7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 8 Mar 2023 11:12:03 +0100
Subject: [PATCH 014/656] nvim: add stylua

---
 .config/nvim/lua/plugins/null-ls.lua | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/.config/nvim/lua/plugins/null-ls.lua b/.config/nvim/lua/plugins/null-ls.lua
index f8bab18..a3f21d4 100644
--- a/.config/nvim/lua/plugins/null-ls.lua
+++ b/.config/nvim/lua/plugins/null-ls.lua
@@ -9,15 +9,10 @@ function M.config()
 
 	null_ls.setup({
 		sources = {
-			builtins.formatting.black,
-			builtins.formatting.buf,
-			builtins.formatting.cue_fmt,
-			builtins.formatting.shfmt,
-			builtins.formatting.sqlfluff,
-			builtins.formatting.buildifier,
-			builtins.formatting.prettierd,
-			builtins.completion.spell,
 			builtins.code_actions.eslint_d,
+
+			builtins.completion.spell,
+
 			builtins.diagnostics.buf.with({
 				args = { "lint", "--disable-symlinks", "--path", "$FILENAME" },
 				cwd = function()
@@ -30,8 +25,17 @@ function M.config()
 			}),
 			builtins.diagnostics.buildifier,
 			builtins.diagnostics.cue_fmt,
-			builtins.diagnostics.golangci_lint,
 			builtins.diagnostics.eslint_d,
+			builtins.diagnostics.golangci_lint,
+
+			builtins.formatting.black,
+			builtins.formatting.buf,
+			builtins.formatting.buildifier,
+			builtins.formatting.cue_fmt,
+			builtins.formatting.prettierd,
+			builtins.formatting.shfmt,
+			builtins.formatting.sqlfluff,
+			builtins.formatting.stylua,
 		},
 		debug = true,
 	})

From de0266996cc5ff3bb932eeea68c158da6f8556ba Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 8 Mar 2023 12:58:51 +0100
Subject: [PATCH 015/656] nvim: dark modes

---
 .config/nvim/lua/config/options.lua   | 3 +--
 .config/nvim/lua/plugins/lualine.lua  | 2 +-
 .config/nvim/lua/plugins/zenbones.lua | 8 +++++---
 .gitconfig                            | 2 +-
 4 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 4b80a53..2686c4f 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -46,10 +46,9 @@ end
 
 --- Completion
 vim.cmd("set shortmess+=c")
-vim.o.completeopt = "menuone,noinsert,noselect"
+vim.opt.completeopt = { "menuone", "noselect" }
 
 --- Appearance
-vim.o.background = "light"
 vim.o.scrolloff = 7
 vim.o.showmode = false
 vim.o.sidescrolloff = 5
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
index ba2cc41..2b40678 100644
--- a/.config/nvim/lua/plugins/lualine.lua
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -14,7 +14,7 @@ function M.config()
 	lualine.setup({
 		options = {
 			globalstatus = true,
-			theme = "onelight",
+			theme = "onedark",
 			component_separators = { left = "╲", right = "╱" },
 			section_separators = { left = "", right = "" },
 		},
diff --git a/.config/nvim/lua/plugins/zenbones.lua b/.config/nvim/lua/plugins/zenbones.lua
index a3a6a80..f4a6cca 100644
--- a/.config/nvim/lua/plugins/zenbones.lua
+++ b/.config/nvim/lua/plugins/zenbones.lua
@@ -1,5 +1,7 @@
 local M = {
 	"mcchrish/zenbones.nvim",
+	lazy = false,
+	priority = 1000,
 	-- event = "VeryLazy",
 	dependencies = {
 		{ "rktjmp/lush.nvim" },
@@ -7,9 +9,9 @@ local M = {
 }
 
 function M.config()
-	vim.g.zenbones = {
-		style = "light",
-		lightness = "bright",
+	vim.g.kanagawabones = {
+		-- style = "light",
+		-- lightness = "bright",
 		colorize_diagnostic_underline_text = true,
 		transparent_background = true,
 	}
diff --git a/.gitconfig b/.gitconfig
index d5d82e1..c300397 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -69,7 +69,7 @@ threads = 0
 date = relative
 
 [delta]
-syntax-theme = GitHub
+# syntax-theme = GitHub
 hunk-header-style = line-number syntax
 
 [hub]

From fe3b0111f26f134188c5e9970a9fb1fde10af0a9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 8 Mar 2023 12:59:55 +0100
Subject: [PATCH 016/656] wezterm: add launcher shortcut

---
 .config/wezterm/wezterm.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 2c90a10..61c67eb 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -175,6 +175,7 @@ return {
 		{ key = "0", mods = "ALT", action = act({ ActivateTab = 9 }) },
 		{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
 		{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
+		{ key = "l", mods = "ALT", action = wezterm.action.ShowLauncher },
 	},
 	unix_domains = {
 		{

From 0f1e2c9baffc8a502123ead5826be39c00dedceb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 8 Mar 2023 20:58:53 +0100
Subject: [PATCH 017/656] wezterm: multi-workspace goodness

---
 .config/wezterm/wezterm.lua                   | 40 +++++++++----------
 .../wezterm-dln-dev-secondary.desktop         | 10 -----
 .../applications/wezterm-dln-dev.desktop      |  3 +-
 .../share/applications/wezterm-local.desktop  | 10 -----
 4 files changed, 21 insertions(+), 42 deletions(-)
 delete mode 100644 .local/share/applications/wezterm-dln-dev-secondary.desktop
 delete mode 100644 .local/share/applications/wezterm-local.desktop

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 61c67eb..886f09a 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -10,29 +10,28 @@ local function font_with_fallback(name, params)
 end
 
 wezterm.on("gui-startup", function(cmd)
-	local tab, pane, window = mux.spawn_window(cmd or {})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
+	local _, _, local_win = mux.spawn_window({
+		workspace = "default",
+	})
+	for _ = 1, 10 do
+		local_win:spawn_tab({})
+	end
+
+	mux.spawn_window({
+		workspace = "dln-dev",
+		domain = { DomainName = "dln-dev" },
+	})
+
+	mux.set_active_workspace("default")
 end)
 
 wezterm.on("mux-startup", function()
-	local tab, pane, window = mux.spawn_window({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
-	window:spawn_tab({})
+	local _, _, dev_win = mux.spawn_window({
+		workspace = "dln-dev",
+	})
+	for _ = 1, 10 do
+		dev_win:spawn_tab({})
+	end
 end)
 
 local function scheme_for_appearance(appearance)
@@ -176,6 +175,7 @@ return {
 		{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
 		{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
 		{ key = "l", mods = "ALT", action = wezterm.action.ShowLauncher },
+		{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
 	},
 	unix_domains = {
 		{
diff --git a/.local/share/applications/wezterm-dln-dev-secondary.desktop b/.local/share/applications/wezterm-dln-dev-secondary.desktop
deleted file mode 100644
index b545e9f..0000000
--- a/.local/share/applications/wezterm-dln-dev-secondary.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=wezterm-dln-dev-secondary
-GenericName=wezterm-dln-dev-secondary
-StartupWMClass=org.wezfurlong.wezterm
-Type=Application
-TryExec=/usr/bin/wezterm
-Icon=org.wezfurlong.wezterm
-Terminal=false
-Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm connect dln-dev --class=wezterm-dln-dev-secondary
diff --git a/.local/share/applications/wezterm-dln-dev.desktop b/.local/share/applications/wezterm-dln-dev.desktop
index 41311a9..ae83c85 100644
--- a/.local/share/applications/wezterm-dln-dev.desktop
+++ b/.local/share/applications/wezterm-dln-dev.desktop
@@ -7,5 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm connect dln-dev --class=wezterm-dln-dev
-#Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev"}' start --class=wezterm-dln-dev
+Exec=/usr/bin/wezterm start --always-new-process --class=wezterm-dln-dev
diff --git a/.local/share/applications/wezterm-local.desktop b/.local/share/applications/wezterm-local.desktop
deleted file mode 100644
index 5275fe7..0000000
--- a/.local/share/applications/wezterm-local.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=wezterm-local
-GenericName=wezterm-local
-StartupWMClass=wezterm-local
-Type=Application
-TryExec=/usr/bin/wezterm
-Icon=org.wezfurlong.wezterm
-Terminal=false
-Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm start --class=wezterm-local

From 89accda03026aa4d4a119ca8fd93e01efa4500c1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 8 Mar 2023 22:59:58 +0100
Subject: [PATCH 018/656] wezterm: permatabs on demand

---
 .config/wezterm/wezterm.lua | 90 +++++++++++++++++++++++++------------
 1 file changed, 61 insertions(+), 29 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 886f09a..eee8140 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -1,6 +1,4 @@
 local wezterm = require("wezterm")
-local io = require("io")
-local os = require("os")
 local mux = wezterm.mux
 local act = wezterm.action
 
@@ -13,9 +11,6 @@ wezterm.on("gui-startup", function(cmd)
 	local _, _, local_win = mux.spawn_window({
 		workspace = "default",
 	})
-	for _ = 1, 10 do
-		local_win:spawn_tab({})
-	end
 
 	mux.spawn_window({
 		workspace = "dln-dev",
@@ -29,9 +24,6 @@ wezterm.on("mux-startup", function()
 	local _, _, dev_win = mux.spawn_window({
 		workspace = "dln-dev",
 	})
-	for _ = 1, 10 do
-		dev_win:spawn_tab({})
-	end
 end)
 
 local function scheme_for_appearance(appearance)
@@ -51,24 +43,64 @@ end
 
 local is_server = wezterm.hostname() == "dln-dev"
 
+local function activate_nvim(window, pane)
+	wezterm.log_info("activate_nvim")
+	for _, t in ipairs(window:mux_window():tabs_with_info()) do
+		for _, p in ipairs(t.tab:panes()) do
+			if p:get_title() == "nvim" then
+				window:perform_action(
+					act.Multiple({
+						act.ActivateTab(t.index),
+						act.MoveTab(0),
+					}),
+					pane
+				)
+				return
+			end
+		end
+	end
+end
+
 wezterm.on("user-var-changed", function(window, pane, name, value)
 	wezterm.log_info("user-var-changed", name, value)
 
 	if name == "nvim_activate" then
-		for _, t in ipairs(window:mux_window():tabs_with_info()) do
-			for _, p in ipairs(t.tab:panes()) do
-				if p:get_title() == "nvim" then
-					window:perform_action(act.ActivateTab(t.index), p)
-					if t.index > 0 then
-						window:perform_action(act.MoveTab(0), p)
-					end
-				end
-			end
-		end
-		-- window:perform_action(act.ActivateTab(0), pane)
+		activate_nvim(window, pane)
 	end
 end)
 
+local function activate_tab(title, index)
+	return function(window, pane)
+		wezterm.log_info(title)
+		for _, t in ipairs(window:mux_window():tabs_with_info()) do
+			if t.tab:get_title() == title then
+				window:perform_action(
+					act.Multiple({
+						act.ActivateTab(t.index),
+						act.MoveTab(index),
+					}),
+					pane
+				)
+				return
+			end
+		end
+		local tab, _, _ = window:mux_window():spawn_tab({})
+		tab:set_title(title)
+		window:perform_action(act.MoveTab(index), pane)
+	end
+end
+
+wezterm.on("tab-1", activate_nvim)
+wezterm.on("tab-2", activate_tab("t2", 1))
+wezterm.on("tab-3", activate_tab("t3", 2))
+wezterm.on("tab-4", activate_tab("t4", 3))
+wezterm.on("tab-5", activate_tab("t5", 4))
+wezterm.on("tab-6", activate_tab("t6", 5))
+wezterm.on("tab-7", activate_tab("t7", 6))
+wezterm.on("tab-8", activate_tab("t8", 7))
+wezterm.on("tab-9", activate_tab("t9", 8))
+wezterm.on("tab-10", activate_tab("t10", 9))
+
 return {
 	color_scheme = _get_scheme(),
 	color_scheme_dirs = { "/home/dln/.config/wezterm" },
@@ -162,16 +194,16 @@ return {
 		{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
 		-- mux
 		{ key = "E", mods = "CTRL|SHIFT", action = act.DetachDomain({ DomainName = "dln-dev" }) },
-		{ key = "1", mods = "ALT", action = act({ ActivateTab = 0 }) },
-		{ key = "2", mods = "ALT", action = act({ ActivateTab = 1 }) },
-		{ key = "3", mods = "ALT", action = act({ ActivateTab = 2 }) },
-		{ key = "4", mods = "ALT", action = act({ ActivateTab = 3 }) },
-		{ key = "5", mods = "ALT", action = act({ ActivateTab = 4 }) },
-		{ key = "6", mods = "ALT", action = act({ ActivateTab = 5 }) },
-		{ key = "7", mods = "ALT", action = act({ ActivateTab = 6 }) },
-		{ key = "8", mods = "ALT", action = act({ ActivateTab = 7 }) },
-		{ key = "9", mods = "ALT", action = act({ ActivateTab = 8 }) },
-		{ key = "0", mods = "ALT", action = act({ ActivateTab = 9 }) },
+		{ key = "1", mods = "ALT", action = act.EmitEvent("tab-1") },
+		{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },
+		{ key = "3", mods = "ALT", action = act.EmitEvent("tab-3") },
+		{ key = "4", mods = "ALT", action = act.EmitEvent("tab-4") },
+		{ key = "5", mods = "ALT", action = act.EmitEvent("tab-5") },
+		{ key = "6", mods = "ALT", action = act.EmitEvent("tab-6") },
+		{ key = "7", mods = "ALT", action = act.EmitEvent("tab-7") },
+		{ key = "8", mods = "ALT", action = act.EmitEvent("tab-8") },
+		{ key = "9", mods = "ALT", action = act.EmitEvent("tab-9") },
+		{ key = "0", mods = "ALT", action = act.EmitEvent("tab-10") },
 		{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
 		{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
 		{ key = "l", mods = "ALT", action = wezterm.action.ShowLauncher },

From 21e885309ceb69adc3750598a8caa5e44d4d528e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 8 Mar 2023 23:27:35 +0100
Subject: [PATCH 019/656] non-default nvim socket for wezterm-edit-helper

---
 bin/wezterm-edit-helper | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper
index 8b00b00..b5f34c5 100755
--- a/bin/wezterm-edit-helper
+++ b/bin/wezterm-edit-helper
@@ -14,17 +14,19 @@ else
 	fre --store_name "$_store" --add "$_file"
 fi
 
+_nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
+
 function _nvim_setenv() {
-	nvim --server "$XDG_RUNTIME_DIR/nvim.sock" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")"
+	nvim --server "$_nvim_socket" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")"
 }
 
-nvim --server "$XDG_RUNTIME_DIR/nvim.sock" --remote-expr "42" 2>/dev/null ||
-	(wezterm cli spawn --cwd "${PWD}" nvim --listen "$XDG_RUNTIME_DIR/nvim.sock" && sleep 0.5)
+nvim --server "$_nvim_socket" --remote-expr "42" 2>/dev/null ||
+	(rm -f "$_nvim_socket" && wezterm cli spawn --cwd "${PWD}" nvim --listen "$_nvim_socket" && sleep 0.5)
 
 _nvim_setenv BUILD_COMMAND "$BUILD_COMMAND"
 _nvim_setenv GOPACKAGESDRIVER "$GOPACKAGESDRIVER"
 _nvim_setenv GOFLAGS "$GOFLAGS"
 
-nvim --server "$XDG_RUNTIME_DIR/nvim.sock" --remote "$_file"
+nvim --server "$_nvim_socket" --remote "$_file"
 
 printf "\033]1337;SetUserVar=%s=%s\007" nvim_activate $(date +%s | base64)

From e64f06da3d5774f7fa9187f2127da668437e42e7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 9 Mar 2023 18:11:07 +0100
Subject: [PATCH 020/656] wezterm: mousewheel scroll

---
 .config/wezterm/wezterm.lua | 30 +++++++++++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index eee8140..a065c67 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -137,8 +137,8 @@ return {
 	font_size = 13.5,
 	line_height = 1.0,
 	cell_width = 0.95,
-	-- initial_cols = 128,
-	-- initial_rows = 45,
+	initial_cols = 132,
+	initial_rows = 45,
 	use_resize_increments = true,
 	window_background_opacity = 1.0,
 	window_padding = {
@@ -178,7 +178,7 @@ return {
 	show_tab_index_in_tab_bar = true,
 	enable_scroll_bar = false,
 	scrollback_lines = 5000,
-	alternate_buffer_wheel_scroll_speed = 2,
+	alternate_buffer_wheel_scroll_speed = 1,
 	check_for_updates = false,
 	status_update_interval = 100,
 	audible_bell = "Disabled",
@@ -208,6 +208,30 @@ return {
 		{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
 		{ key = "l", mods = "ALT", action = wezterm.action.ShowLauncher },
 		{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
+		{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
+		{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
+		{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },
+		{ key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(0.5) },
+	},
+	mouse_bindings = {
+		{
+			event = { Down = { streak = 1, button = { WheelUp = 1 } } },
+			mods = "SHIFT",
+			action = act.ScrollByLine(-1),
+		},
+		{
+			event = { Down = { streak = 1, button = { WheelDown = 1 } } },
+			mods = "SHIFT",
+			action = act.ScrollByLine(1),
+		},
+		{
+			event = { Down = { streak = 1, button = { WheelUp = 1 } } },
+			action = act.ScrollByPage(-0.25),
+		},
+		{
+			event = { Down = { streak = 1, button = { WheelDown = 1 } } },
+			action = act.ScrollByPage(0.25),
+		},
 	},
 	unix_domains = {
 		{

From b0eae7695f1cba95d0b49b51957c7a1a76bcf5a2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 9 Mar 2023 18:11:46 +0100
Subject: [PATCH 021/656] wezterm: use shelman-theme

---
 .config/wezterm/wezterm.lua | 23 ++++++-----------------
 1 file changed, 6 insertions(+), 17 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index a065c67..f79a33e 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -26,21 +26,6 @@ wezterm.on("mux-startup", function()
 	})
 end)
 
-local function scheme_for_appearance(appearance)
-	if appearance:find("Dark") then
-		return "Shelman Dark"
-	else
-		return "Shelman Light"
-	end
-end
-
-local function _get_scheme()
-	-- if wezterm.gui then
-	-- return  return scheme_for_appearance(wezterm.gui.get_appearance())
-	-- end
-	return "Shelman Dark"
-end
-
 local is_server = wezterm.hostname() == "dln-dev"
 
 local function activate_nvim(window, pane)
@@ -101,9 +86,13 @@ wezterm.on("tab-8", activate_tab("t8", 7))
 wezterm.on("tab-9", activate_tab("t9", 8))
 wezterm.on("tab-10", activate_tab("t10", 9))
 
+wezterm.add_to_config_reload_watch_list("/home/dln/.config/shelman-theme/current/wezterm")
+
 return {
-	color_scheme = _get_scheme(),
-	color_scheme_dirs = { "/home/dln/.config/wezterm" },
+	color_scheme = "Shelman Theme",
+	color_scheme_dirs = {
+		"/home/dln/.config/shelman-theme/current/wezterm",
+	},
 	font = font_with_fallback("Iosevka Shelman SS09", { weight = "Regular" }),
 	font_rules = {
 		{

From f63379c1514b29d21e436deee0b34a736b5227e7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 9 Mar 2023 18:12:28 +0100
Subject: [PATCH 022/656] nvim: lazy update

---
 .config/nvim/lazy-lock.json | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 3179b01..790d213 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -15,7 +15,7 @@
   "hlargs.nvim": { "branch": "main", "commit": "a7ad6ed8d6e27ea4dd13fda63fa732e9196ba4ea" },
   "inc-rename.nvim": { "branch": "main", "commit": "21c23c379342a731a0c90f226601ec0434627b26" },
   "indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" },
-  "lazy.nvim": { "branch": "main", "commit": "e89acede13f46a5db229133cf0c87aee74938c56" },
+  "lazy.nvim": { "branch": "main", "commit": "5b4444f0d7e556deba3f7ca949a2ba0e2c3369fb" },
   "lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
   "lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
   "lush.nvim": { "branch": "main", "commit": "b1e8eb1da3fee95ef31515a73c9eff9bf251088d" },
@@ -23,17 +23,17 @@
   "neogen": { "branch": "main", "commit": "93d997dbddfe084e77ba4541c54a7b8bfd754fb1" },
   "noice.nvim": { "branch": "main", "commit": "c22651651da01239fc4afac4cdb7261797d5f02e" },
   "nui.nvim": { "branch": "main", "commit": "0dc148c6ec06577fcf06cbab3b7dac96d48ba6be" },
-  "null-ls.nvim": { "branch": "main", "commit": "900c38cfa91eb7ff2716da70f2f2c1d33741cf0a" },
+  "null-ls.nvim": { "branch": "main", "commit": "ccd6cb05b176bff65819c85b8d29096b5e0750d4" },
   "nvim-cmp": { "branch": "main", "commit": "feed47fd1da7a1bad2c7dca456ea19c8a5a9823a" },
-  "nvim-dap": { "branch": "master", "commit": "75a94b8b577a970c0cad25a54a64dc40fc6fa0ea" },
+  "nvim-dap": { "branch": "master", "commit": "73196075627a4f079c62b0dd4aff8ce0a1b7cf57" },
   "nvim-dap-go": { "branch": "main", "commit": "b4ded7de579b4e2a85c203388233b54bf1028816" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "8db23ea51203b5f00ad107a0cef7e0b2d7a0476c" },
   "nvim-lsp-ts-utils": { "branch": "main", "commit": "0a6a16ef292c9b61eac6dad00d52666c7f84b0e7" },
-  "nvim-lspconfig": { "branch": "master", "commit": "1a2d5f5224c65b0709bf5da0ccd9cad29272083a" },
+  "nvim-lspconfig": { "branch": "master", "commit": "2ba6e268d92934e14fe561fe446a49540803e57f" },
   "nvim-navic": { "branch": "master", "commit": "cdd24539bcf114a499827e9b32869fe74836efe7" },
   "nvim-osc52": { "branch": "main", "commit": "47ce7ee2396fa3ee4fb6b0e0ef14ba06f9c9bd31" },
-  "nvim-treesitter": { "branch": "master", "commit": "356c9db3478b1bc6d0f0eefcb397989e50fdc35f" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "f5f13206ec33e55b16c8e1a9dec301e8bead4835" },
+  "nvim-treesitter": { "branch": "master", "commit": "fc1ca10bfbdee17e29374d0d1bac8ea030539dc3" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "4c97996c449483ee9bcb1869d99e37620cd87cd4" },
   "nvim-ts-autotag": { "branch": "main", "commit": "fdefe46c6807441460f11f11a167a2baf8e4534b" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "729d83ecb990dc2b30272833c213cc6d49ed5214" },
   "nvim-web-devicons": { "branch": "master", "commit": "4af94fec29f508159ceab5413383e5dedd6c24e3" },
@@ -43,7 +43,6 @@
   "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
   "stylua-nvim": { "branch": "main", "commit": "ce59a353f02938cba3e0285e662fcd3901cd270f" },
   "telescope-dap.nvim": { "branch": "master", "commit": "313d2ea12ae59a1ca51b62bf01fc941a983d9c9c" },
-  "telescope-env.nvim": { "branch": "master", "commit": "00a703cc7b713cdda0a981d88fddf3ce25502af5" },
   "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
   "telescope-github.nvim": { "branch": "master", "commit": "ee95c509901c3357679e9f2f9eaac3561c811736" },
   "telescope-ui-select.nvim": { "branch": "master", "commit": "62ea5e58c7bbe191297b983a9e7e89420f581369" },

From ffb96e6e39112bdcf59e1b9ed3acfecf45c87d83 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 12 Mar 2023 19:44:30 +0100
Subject: [PATCH 023/656] wezterm fixings

---
 .config/wezterm/wezterm.lua | 83 +++++++++++++++++++++----------------
 1 file changed, 47 insertions(+), 36 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index f79a33e..aa17cc5 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -8,22 +8,31 @@ local function font_with_fallback(name, params)
 end
 
 wezterm.on("gui-startup", function(cmd)
-	local _, _, local_win = mux.spawn_window({
-		workspace = "default",
-	})
+	local args = {}
+	if cmd then
+		args = cmd.args
+	end
 
-	mux.spawn_window({
-		workspace = "dln-dev",
-		domain = { DomainName = "dln-dev" },
+	local _, _, window = mux.spawn_window({
+		workspace = "local",
+		args = args,
 	})
+	-- spawn 10 tabs
+	for _ = 1, 10 do
+		window:spawn_tab({})
+	end
 
-	mux.set_active_workspace("default")
+	mux.set_active_workspace("local")
 end)
 
 wezterm.on("mux-startup", function()
-	local _, _, dev_win = mux.spawn_window({
+	local _, _, window = mux.spawn_window({
 		workspace = "dln-dev",
 	})
+	-- Spawn 10 mux tabs (on dev server)
+	for _ = 1, 10 do
+		window:spawn_tab({})
+	end
 end)
 
 local is_server = wezterm.hostname() == "dln-dev"
@@ -54,37 +63,38 @@ wezterm.on("user-var-changed", function(window, pane, name, value)
 	end
 end)
 
-local function activate_tab(title, index)
+local function activate_tab(index)
 	return function(window, pane)
-		wezterm.log_info(title)
-		for _, t in ipairs(window:mux_window():tabs_with_info()) do
-			if t.tab:get_title() == title then
-				window:perform_action(
-					act.Multiple({
-						act.ActivateTab(t.index),
-						act.MoveTab(index),
-					}),
-					pane
-				)
-				return
-			end
-		end
-		local tab, _, _ = window:mux_window():spawn_tab({})
-		tab:set_title(title)
-		window:perform_action(act.MoveTab(index), pane)
+		window:perform_action(act.ActivateTab(index), pane)
+		-- wezterm.log_info(title)
+		-- for _, t in ipairs(window:mux_window():tabs_with_info()) do
+		-- 	if t.tab:get_title() == title then
+		-- 		window:perform_action(
+		-- 			act.Multiple({
+		-- 				act.ActivateTab(t.index),
+		-- 				act.MoveTab(index),
+		-- 			}),
+		-- 			pane
+		-- 		)
+		-- 		return
+		-- 	end
+		-- end
+		-- local tab, _, _ = window:mux_window():spawn_tab({})
+		-- tab:set_title(title)
+		-- window:perform_action(act.MoveTab(index), pane)
 	end
 end
 
 wezterm.on("tab-1", activate_nvim)
-wezterm.on("tab-2", activate_tab("t2", 1))
-wezterm.on("tab-3", activate_tab("t3", 2))
-wezterm.on("tab-4", activate_tab("t4", 3))
-wezterm.on("tab-5", activate_tab("t5", 4))
-wezterm.on("tab-6", activate_tab("t6", 5))
-wezterm.on("tab-7", activate_tab("t7", 6))
-wezterm.on("tab-8", activate_tab("t8", 7))
-wezterm.on("tab-9", activate_tab("t9", 8))
-wezterm.on("tab-10", activate_tab("t10", 9))
+wezterm.on("tab-2", activate_tab(1))
+wezterm.on("tab-3", activate_tab(2))
+wezterm.on("tab-4", activate_tab(3))
+wezterm.on("tab-5", activate_tab(4))
+wezterm.on("tab-6", activate_tab(5))
+wezterm.on("tab-7", activate_tab(6))
+wezterm.on("tab-8", activate_tab(7))
+wezterm.on("tab-9", activate_tab(8))
+wezterm.on("tab-10", activate_tab(9))
 
 wezterm.add_to_config_reload_watch_list("/home/dln/.config/shelman-theme/current/wezterm")
 
@@ -161,7 +171,7 @@ return {
 	cursor_thickness = "3px",
 	cursor_blink_rate = 300,
 	enable_wayland = true,
-	enable_tab_bar = false,
+	enable_tab_bar = true,
 	tab_bar_at_bottom = true,
 	use_fancy_tab_bar = true,
 	show_tab_index_in_tab_bar = true,
@@ -182,7 +192,8 @@ return {
 		{ key = "Enter", mods = "ALT", action = "ToggleFullScreen" },
 		{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
 		-- mux
-		{ key = "E", mods = "CTRL|SHIFT", action = act.DetachDomain({ DomainName = "dln-dev" }) },
+		{ key = "A", mods = "ALT", action = act.AttachDomain("dln-dev") },
+		{ key = "E", mods = "ALT", action = act.DetachDomain({ DomainName = "dln-dev" }) },
 		{ key = "1", mods = "ALT", action = act.EmitEvent("tab-1") },
 		{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },
 		{ key = "3", mods = "ALT", action = act.EmitEvent("tab-3") },

From add4e0a218c01f4cdf176bc4be94f8b2ada9b57d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 12 Mar 2023 21:56:21 +0100
Subject: [PATCH 024/656] zsh: rg shelman theme

---
 .config/nvim/lazy-lock.json | 16 ++++++++--------
 .zshrc                      |  2 +-
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 790d213..7cab44d 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,5 +1,5 @@
 {
-  "Comment.nvim": { "branch": "master", "commit": "6821b3ae27a57f1f3cf8ed030e4a55d70d0c4e43" },
+  "Comment.nvim": { "branch": "master", "commit": "8d3aa5c22c2d45e788c7a5fe13ad77368b783c20" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-cmdline": { "branch": "main", "commit": "8fcc934a52af96120fe26358985c10c035984b53" },
   "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
@@ -11,29 +11,29 @@
   "copilot-cmp": { "branch": "master", "commit": "92535dfd9c430b49ca7d9a7da336c5db65826b65" },
   "copilot.lua": { "branch": "master", "commit": "b41d4c9c7d4f5e0272bcf94061b88e244904c56f" },
   "gitsigns.nvim": { "branch": "main", "commit": "b1f9cf7c5c5639c006c937fc1819e09f358210fc" },
-  "go.nvim": { "branch": "master", "commit": "1844fd11a143aba3eec644c2e2099a20f79c1ec1" },
+  "go.nvim": { "branch": "master", "commit": "063bf059e31f226c525415769bf3c312c8468566" },
   "hlargs.nvim": { "branch": "main", "commit": "a7ad6ed8d6e27ea4dd13fda63fa732e9196ba4ea" },
   "inc-rename.nvim": { "branch": "main", "commit": "21c23c379342a731a0c90f226601ec0434627b26" },
   "indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" },
   "lazy.nvim": { "branch": "main", "commit": "5b4444f0d7e556deba3f7ca949a2ba0e2c3369fb" },
   "lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
   "lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
-  "lush.nvim": { "branch": "main", "commit": "b1e8eb1da3fee95ef31515a73c9eff9bf251088d" },
+  "lush.nvim": { "branch": "main", "commit": "62180850d230e1650fe5543048bb15c4452916d6" },
   "marks.nvim": { "branch": "master", "commit": "76aca5069c5ce5c0099e30168649e6393e494f26" },
   "neogen": { "branch": "main", "commit": "93d997dbddfe084e77ba4541c54a7b8bfd754fb1" },
-  "noice.nvim": { "branch": "main", "commit": "c22651651da01239fc4afac4cdb7261797d5f02e" },
+  "noice.nvim": { "branch": "main", "commit": "e2a04d480a9fba6b698c01998582ea17aa213ba3" },
   "nui.nvim": { "branch": "main", "commit": "0dc148c6ec06577fcf06cbab3b7dac96d48ba6be" },
-  "null-ls.nvim": { "branch": "main", "commit": "ccd6cb05b176bff65819c85b8d29096b5e0750d4" },
+  "null-ls.nvim": { "branch": "main", "commit": "09e99259f4cdd929e7fb5487bf9d92426ccf7cc1" },
   "nvim-cmp": { "branch": "main", "commit": "feed47fd1da7a1bad2c7dca456ea19c8a5a9823a" },
   "nvim-dap": { "branch": "master", "commit": "73196075627a4f079c62b0dd4aff8ce0a1b7cf57" },
   "nvim-dap-go": { "branch": "main", "commit": "b4ded7de579b4e2a85c203388233b54bf1028816" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "8db23ea51203b5f00ad107a0cef7e0b2d7a0476c" },
   "nvim-lsp-ts-utils": { "branch": "main", "commit": "0a6a16ef292c9b61eac6dad00d52666c7f84b0e7" },
-  "nvim-lspconfig": { "branch": "master", "commit": "2ba6e268d92934e14fe561fe446a49540803e57f" },
+  "nvim-lspconfig": { "branch": "master", "commit": "4bb0f1845c5cc6465aecedc773fc2d619fcd8faf" },
   "nvim-navic": { "branch": "master", "commit": "cdd24539bcf114a499827e9b32869fe74836efe7" },
   "nvim-osc52": { "branch": "main", "commit": "47ce7ee2396fa3ee4fb6b0e0ef14ba06f9c9bd31" },
-  "nvim-treesitter": { "branch": "master", "commit": "fc1ca10bfbdee17e29374d0d1bac8ea030539dc3" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "4c97996c449483ee9bcb1869d99e37620cd87cd4" },
+  "nvim-treesitter": { "branch": "master", "commit": "e3ebc8ec5d586162f3c408417621daa59ba8ea62" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "542e0879d524ba717234fcba049b6c2da7989d5a" },
   "nvim-ts-autotag": { "branch": "main", "commit": "fdefe46c6807441460f11f11a167a2baf8e4534b" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "729d83ecb990dc2b30272833c213cc6d49ed5214" },
   "nvim-web-devicons": { "branch": "master", "commit": "4af94fec29f508159ceab5413383e5dedd6c24e3" },
diff --git a/.zshrc b/.zshrc
index 71995e5..216a4a6 100644
--- a/.zshrc
+++ b/.zshrc
@@ -119,7 +119,7 @@ alias xc=clip
 alias w="history -1 | sed -e 's/[0-9]*  //' | xargs viddy -n1"
 
 ## ripgrep 
-export RIPGREP_CONFIG_PATH=${HOME}/.config/rg/rg.conf
+export RIPGREP_CONFIG_PATH=${HOME}/.config/shelman-theme/current/rg/rg.conf
 
 # "auto paging"
 rg() {

From 4a13cbcd13cde440508767553e1da907b843c53b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 12 Mar 2023 21:56:50 +0100
Subject: [PATCH 025/656] nvim: add shelman-theme

---
 .config/nvim/lua/plugins/shelman-theme.lua | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 .config/nvim/lua/plugins/shelman-theme.lua

diff --git a/.config/nvim/lua/plugins/shelman-theme.lua b/.config/nvim/lua/plugins/shelman-theme.lua
new file mode 100644
index 0000000..eb28066
--- /dev/null
+++ b/.config/nvim/lua/plugins/shelman-theme.lua
@@ -0,0 +1,4 @@
+return {
+	name = "shelman-theme",
+	dir = "~/.config/shelman-theme/current/neovim",
+}

From 09f3cb6b3f0b6fbae068ca0ae0807dd51ff995d3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 17 Mar 2023 11:27:56 +0100
Subject: [PATCH 026/656] ssh: private config

---
 .ssh/config | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.ssh/config b/.ssh/config
index 7f7f1c4..6aec36a 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -9,6 +9,8 @@ AddressFamily inet
 RequestTty yes
 PreferredAuthentications=publickey
 
+Include ~/.ssh/private_config
+
 Host gitlab.com
 IdentityAgent /dev/null
 PKCS11Provider /usr/lib/pkcs11/libtpm2_pkcs11.so

From c8f8a268a655bcd0c64f57fd1ca7557a33d90d39 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 17 Mar 2023 11:31:45 +0100
Subject: [PATCH 027/656] prompt: no git

---
 .config/starship.toml | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/.config/starship.toml b/.config/starship.toml
index b3b8fbf..79ff744 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -1,13 +1,14 @@
 add_newline = false
 
+# $git_branch\
+# $git_commit\
+# $git_state\
+# $git_status\
+# ${custom.sl_status}\
+
 format = """\
 $hostname\
 $directory\
-$git_branch\
-$git_commit\
-$git_state\
-$git_status\
-${custom.sl_status}\
 ($character)\
 """
 

From 5637a9e614883c4a857348d3f3b89f2f2293b087 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 24 Mar 2023 09:19:10 +0100
Subject: [PATCH 028/656] wezterm update

---
 .config/wezterm/wezterm.lua | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index aa17cc5..19d3d4e 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -134,6 +134,7 @@ return {
 	bold_brightens_ansi_colors = false,
 	allow_square_glyphs_to_overflow_width = "Always",
 	font_size = 13.5,
+	command_palette_font_size = 13.5,
 	line_height = 1.0,
 	cell_width = 0.95,
 	initial_cols = 132,
@@ -184,8 +185,8 @@ return {
 	term = "wezterm",
 	disable_default_key_bindings = true,
 	keys = {
-		{ key = "c", mods = "ALT|SHIFT", action = act({ CopyTo = "ClipboardAndPrimarySelection" }) },
-		{ key = "v", mods = "ALT|SHIFT", action = "Paste" },
+		{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
+		{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("PrimarySelection") },
 		{ key = "0", mods = "CTRL", action = "ResetFontSize" },
 		{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
 		{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
@@ -206,7 +207,7 @@ return {
 		{ key = "0", mods = "ALT", action = act.EmitEvent("tab-10") },
 		{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
 		{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
-		{ key = "l", mods = "ALT", action = wezterm.action.ShowLauncher },
+		{ key = "l", mods = "ALT", action = wezterm.action.ActivateCommandPalette },
 		{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
 		{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
 		{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },

From 2df09ac4fbfaace2acda83b1fe40184cc170b328 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 25 Mar 2023 17:14:05 +0100
Subject: [PATCH 029/656] neovim: theme juggling

---
 .config/nvim/lazy-lock.json                |  36 +++---
 .config/nvim/lua/config/options.lua        |   4 +
 .config/nvim/lua/plugins/shelman-theme.lua |   6 +
 .config/nvim/lua/plugins/zenbones.lua      | 134 ---------------------
 4 files changed, 27 insertions(+), 153 deletions(-)
 delete mode 100644 .config/nvim/lua/plugins/zenbones.lua

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 7cab44d..d116230 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -9,34 +9,33 @@
   "cmp-tmux": { "branch": "main", "commit": "984772716f66d8ee88535a6bf3f94c4b4e1301f5" },
   "colorbuddy.vim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
   "copilot-cmp": { "branch": "master", "commit": "92535dfd9c430b49ca7d9a7da336c5db65826b65" },
-  "copilot.lua": { "branch": "master", "commit": "b41d4c9c7d4f5e0272bcf94061b88e244904c56f" },
-  "gitsigns.nvim": { "branch": "main", "commit": "b1f9cf7c5c5639c006c937fc1819e09f358210fc" },
-  "go.nvim": { "branch": "master", "commit": "063bf059e31f226c525415769bf3c312c8468566" },
+  "copilot.lua": { "branch": "master", "commit": "db62371b6eac73954c194f3c8faee36cffee8135" },
+  "gitsigns.nvim": { "branch": "main", "commit": "ca473e28382f1524aa3d2b6f04bcf54f2e6a64cb" },
+  "go.nvim": { "branch": "master", "commit": "c02634a8350d559eeed94f78c67016fa6d80a8bf" },
   "hlargs.nvim": { "branch": "main", "commit": "a7ad6ed8d6e27ea4dd13fda63fa732e9196ba4ea" },
   "inc-rename.nvim": { "branch": "main", "commit": "21c23c379342a731a0c90f226601ec0434627b26" },
   "indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" },
-  "lazy.nvim": { "branch": "main", "commit": "5b4444f0d7e556deba3f7ca949a2ba0e2c3369fb" },
+  "lazy.nvim": { "branch": "main", "commit": "a80422f21750fcbf0e90b26da877d4024d76f116" },
   "lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
   "lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
-  "lush.nvim": { "branch": "main", "commit": "62180850d230e1650fe5543048bb15c4452916d6" },
   "marks.nvim": { "branch": "master", "commit": "76aca5069c5ce5c0099e30168649e6393e494f26" },
   "neogen": { "branch": "main", "commit": "93d997dbddfe084e77ba4541c54a7b8bfd754fb1" },
-  "noice.nvim": { "branch": "main", "commit": "e2a04d480a9fba6b698c01998582ea17aa213ba3" },
+  "noice.nvim": { "branch": "main", "commit": "f8b1a72a7bce56d9e9ed054708dc855d57dec085" },
   "nui.nvim": { "branch": "main", "commit": "0dc148c6ec06577fcf06cbab3b7dac96d48ba6be" },
-  "null-ls.nvim": { "branch": "main", "commit": "09e99259f4cdd929e7fb5487bf9d92426ccf7cc1" },
-  "nvim-cmp": { "branch": "main", "commit": "feed47fd1da7a1bad2c7dca456ea19c8a5a9823a" },
-  "nvim-dap": { "branch": "master", "commit": "73196075627a4f079c62b0dd4aff8ce0a1b7cf57" },
+  "null-ls.nvim": { "branch": "main", "commit": "0180603b6f3cee40f83c6fc226b9ac5f85e691c4" },
+  "nvim-cmp": { "branch": "main", "commit": "777450fd0ae289463a14481673e26246b5e38bf2" },
+  "nvim-dap": { "branch": "master", "commit": "7e81998e31277c7a33b6c34423640900c5c2c776" },
   "nvim-dap-go": { "branch": "main", "commit": "b4ded7de579b4e2a85c203388233b54bf1028816" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "8db23ea51203b5f00ad107a0cef7e0b2d7a0476c" },
   "nvim-lsp-ts-utils": { "branch": "main", "commit": "0a6a16ef292c9b61eac6dad00d52666c7f84b0e7" },
-  "nvim-lspconfig": { "branch": "master", "commit": "4bb0f1845c5cc6465aecedc773fc2d619fcd8faf" },
-  "nvim-navic": { "branch": "master", "commit": "cdd24539bcf114a499827e9b32869fe74836efe7" },
+  "nvim-lspconfig": { "branch": "master", "commit": "c6105c449683b944b5d2138fcf82f18c657249e9" },
+  "nvim-navic": { "branch": "master", "commit": "ca34afcd15c7f6dd0836fc4fca2e37024bfa5019" },
   "nvim-osc52": { "branch": "main", "commit": "47ce7ee2396fa3ee4fb6b0e0ef14ba06f9c9bd31" },
-  "nvim-treesitter": { "branch": "master", "commit": "e3ebc8ec5d586162f3c408417621daa59ba8ea62" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "542e0879d524ba717234fcba049b6c2da7989d5a" },
-  "nvim-ts-autotag": { "branch": "main", "commit": "fdefe46c6807441460f11f11a167a2baf8e4534b" },
+  "nvim-treesitter": { "branch": "master", "commit": "1f087c91f5ca76a2257b855d72d371a2b5302986" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "582cbb5a4cb50f6161cac8cc01f55aeaff6d836a" },
+  "nvim-ts-autotag": { "branch": "main", "commit": "25698e4033cd6cd3745454bfc837dd670eba0480" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "729d83ecb990dc2b30272833c213cc6d49ed5214" },
-  "nvim-web-devicons": { "branch": "master", "commit": "4af94fec29f508159ceab5413383e5dedd6c24e3" },
+  "nvim-web-devicons": { "branch": "master", "commit": "95b1e300699be8eb6b5be1758a9d4d69fe93cc7f" },
   "packer.nvim": { "branch": "master", "commit": "1d0cf98a561f7fd654c970c49f917d74fafe1530" },
   "playground": { "branch": "master", "commit": "4044b53c4d4fcd7a78eae20b8627f78ce7dc6f56" },
   "plenary.nvim": { "branch": "master", "commit": "253d34830709d690f013daf2853a9d21ad7accab" },
@@ -46,9 +45,8 @@
   "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
   "telescope-github.nvim": { "branch": "master", "commit": "ee95c509901c3357679e9f2f9eaac3561c811736" },
   "telescope-ui-select.nvim": { "branch": "master", "commit": "62ea5e58c7bbe191297b983a9e7e89420f581369" },
-  "telescope.nvim": { "branch": "master", "commit": "a3f17d3baf70df58b9d3544ea30abe52a7a832c2" },
-  "trouble.nvim": { "branch": "main", "commit": "67337644e38144b444d026b0df2dc5fa0038930f" },
+  "telescope.nvim": { "branch": "master", "commit": "942fe5faef47b21241e970551eba407bc10d9547" },
+  "trouble.nvim": { "branch": "main", "commit": "7915277a259fdff5d46c6f1d2e100df2ec384d3b" },
   "vim-cue": { "branch": "master", "commit": "bd1a62303d096aa24fe4160a475645087f8770b3" },
-  "vim-illuminate": { "branch": "master", "commit": "49062ab1dd8fec91833a69f0a1344223dd59d643" },
-  "zenbones.nvim": { "branch": "main", "commit": "910b8c240c6aaf5263db038db81c538602c766c3" }
+  "vim-illuminate": { "branch": "master", "commit": "a2907275a6899c570d16e95b9db5fd921c167502" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 2686c4f..fb8d091 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -69,3 +69,7 @@ vim.g.netrw_dirhistmax = 0
 --- Key mappings
 vim.keymap.set("n", "<C-l>", ':let @/=""<CR>') -- clear search
 vim.keymap.set("n", ",L", ":luafile %<CR>") -- Reload lua file
+
+-- AutoCommand OSC7 workaround for tmux
+-- see https://github.com/neovim/neovim/issues/21771
+vim.cmd([[autocmd DirChanged * call chansend(v:stderr, printf("\033]7;file://%s\033\\", v:event.cwd))]])
diff --git a/.config/nvim/lua/plugins/shelman-theme.lua b/.config/nvim/lua/plugins/shelman-theme.lua
index eb28066..5c55c5b 100644
--- a/.config/nvim/lua/plugins/shelman-theme.lua
+++ b/.config/nvim/lua/plugins/shelman-theme.lua
@@ -1,4 +1,10 @@
 return {
 	name = "shelman-theme",
 	dir = "~/.config/shelman-theme/current/neovim",
+	dev = true,
+	lazy = false,
+	priority = 1000,
+	config = function()
+		vim.cmd([[colorscheme shelman]])
+	end,
 }
diff --git a/.config/nvim/lua/plugins/zenbones.lua b/.config/nvim/lua/plugins/zenbones.lua
deleted file mode 100644
index f4a6cca..0000000
--- a/.config/nvim/lua/plugins/zenbones.lua
+++ /dev/null
@@ -1,134 +0,0 @@
-local M = {
-	"mcchrish/zenbones.nvim",
-	lazy = false,
-	priority = 1000,
-	-- event = "VeryLazy",
-	dependencies = {
-		{ "rktjmp/lush.nvim" },
-	},
-}
-
-function M.config()
-	vim.g.kanagawabones = {
-		-- style = "light",
-		-- lightness = "bright",
-		colorize_diagnostic_underline_text = true,
-		transparent_background = true,
-	}
-
-	local lush = require("lush")
-	local base = require("zenbones")
-
-	-- Create some specs
-	---@diagnostic disable = undefined-global
-	local specs = lush.parse(function(injected_functions)
-		-- See https://github.com/rktjmp/lush.nvim/issues/109
-		local sym = injected_functions.sym
-		return {
-			CursorLine({ bg = "#f5f5f0" }),
-			Error({ fg = "#d9534f" }),
-			CursorLineNr({ fg = "#BCAAA4", bg = "#f5f5f0" }),
-			MsgArea({ fg = "#A1887F", bg = "#f1f1f1" }),
-			String({ fg = "#5E8122", gui = "italic" }),
-			Number({ fg = "#32936F" }),
-			sym("@field")({ fg = "#6F62A7" }),
-			sym("@string")({ fg = "#5B7B3D", gui = "italic" }),
-			sym("@type.definition")({ fg = "#B6465F", gui = "bold" }),
-			sym("@function")({ fg = "#8C1831", gui = "bold" }),
-			sym("@method")(sym("@function")),
-			-- Comment({ fg = "#114499", gui = "bold,italic" }),
-			-- Comment({ fg = "#144EE1", gui = "bold,italic" }),
-			Comment({ fg = "#8F001D", gui = "bold,italic" }),
-			Todo({ fg = "#FF0000", gui = "bold,underline" }),
-			EndOfBuffer({ fg = "#CBCFE1" }),
-			CopilotSuggestion({ fg = "#0066cc", gui = "bold,italic" }),
-			LineNr({ fg = "#9FA8AC", gui = "bold,italic" }),
-			LineNrAbove({ fg = "#9F080C", gui = "bold,italic" }),
-			IndentBlanklineContextChar({ fg = "#699FB5", gui = "italic" }),
-			Indent1({ fg = "#DFDF9A", gui = "italic" }),
-			Indent2({ fg = "#BAE1FF", gui = "italic" }),
-			Indent3({ fg = "#BAFFC9", gui = "italic" }),
-			Indent4({ fg = "#FFB3BA", gui = "italic" }),
-			Indent5({ fg = "#FFDFBA", gui = "italic" }),
-			Indent6({ fg = "#F3E5F5", gui = "italic" }),
-			NormalFloat({ bg = "#FFF9C4" }),
-			FloatBorder({ fg = "#FFB74D", bg = "#FFF9C4" }),
-			TelescopeNormal({ bg = "#EFEBE9" }),
-			TelescopeBorder({ fg = "#A1887F", bg = "#EFEBE9" }),
-			TelescopeSelection({ fg = "#FFFFFF", bg = "#1976D2" }),
-			DiagnosticSignError({ fg = "#ff2200", bg = "#fff5ff", gui = "bold" }),
-			DiagnosticVirtualTextInfo({ fg = "#0033bb", bg = "#f7fcff", gui = "bold,italic" }),
-			DiagnosticVirtualTextWarn({ fg = "#bb2200", bg = "#fff9f3", gui = "bold,italic" }),
-			DiagnosticVirtualTextError({ fg = "#ff2200", bg = "#fff5f3", gui = "italic" }),
-			DiagnosticUnderlineError({ fg = "#ff0000", gui = "undercurl" }),
-			DiagnosticUnderlineWarn({ fg = "#ff7700", gui = "undercurl" }),
-			DiagnosticUnderlineInfo({ fg = "#3366cc", gui = "undercurl" }),
-			MarkSignHL({ fg = "#009688", bg = "#E0F7FA" }),
-			MarkSignNumHL({ fg = "#B2DFDB", bg = "#E0F7FA" }),
-			GitSignsAdd({ fg = "#81C784" }),
-			GitSignsAddNr({ fg = "#C8E6C9" }),
-			GitSignsDelete({ fg = "#E53935" }),
-			GitSignsDeleteNr({ fg = "#FFCDD2" }),
-			GitSignsChange({ fg = "#FFA726" }),
-			GitSignsChangeNr({ fg = "#FFE0B2" }),
-
-			Hlargs({ fg = "#2274A5" }),
-
-			IlluminatedWordText({ bg = "#FFEE99" }),
-			NotifyBackground({ bg = "#FFF8D6" }),
-
-			NavicIcons({ fg = "#cc0000" }),
-			NavicIconsFile({ fg = "#cc0000" }),
-			NavicIconsModule({ fg = "#cc0000" }),
-			NavicIconsNamespace({ fg = "#cc0000" }),
-			NavicIconsPackage({ fg = "#cc0000" }),
-			NavicIconsClass({ fg = "#cc0000" }),
-			NavicIconsMethod({ fg = "#cc0000" }),
-			NavicIconsProperty({ fg = "#cc0000" }),
-			NavicIconsField({ fg = "#cc0000" }),
-			NavicIconsConstructor({ fg = "#cc0000" }),
-			NavicIconsEnum({ fg = "#cc0000" }),
-			NavicIconsInterface({ fg = "#cc0000" }),
-			NavicIconsFunction({ fg = "#cc0000" }),
-			NavicIconsVariable({ fg = "#cc0000" }),
-			NavicIconsConstant({ fg = "#cc0000" }),
-			NavicIconsString({ fg = "#cc0000" }),
-			NavicIconsNumber({ fg = "#cc0000" }),
-			NavicIconsBoolean({ fg = "#cc0000" }),
-			NavicIconsArray({ fg = "#cc0000" }),
-			NavicIconsObject({ fg = "#cc0000" }),
-			NavicIconsKey({ fg = "#cc0000" }),
-			NavicIconsKeyword({ fg = "#cc0000" }),
-			NavicIconsNull({ fg = "#cc0000" }),
-			NavicIconsEnumMember({ fg = "#cc0000" }),
-			NavicIconsStruct({ fg = "#cc0000" }),
-			NavicIconsEvent({ fg = "#cc0000" }),
-			NavicIconsOperator({ fg = "#cc0000" }),
-			NavicIconsTypeParameter({ fg = "#cc0000" }),
-
-			NavicText({ fg = "#cc0000", gui = "italic" }),
-
-			-- LspCodeLens({ fg = "#00ff00", gui = "undercurl" }),
-			-- LspSignatureActiveParameter({ fg = "#ff0000", bg = "#ffffcc" }),
-
-			NoiceCmdlinePopup({ bg = "#E1F5FE" }),
-			NoiceMini({ bg = "#FFF9C4" }),
-
-			PMenu({ bg = "#F7F5F0" }),
-			PMenuBorder({ bg = "#F7F5F0", fg = "#886622" }),
-			PMenuSel({ fg = "#FFFFFF", bg = "#1976D2" }),
-			PMenuSbar({ bg = "#90CAF9" }),
-			PMenuThumb({ bg = "#64B5F6" }),
-			StatusLine({ base = base.VertSplit, fg = "#BCAAA4" }),
-			StatusLineNC({ base = base.VertSplit, fg = "#BCAAA4" }),
-			TreesitterContext({ bg = "#f0f0f0", fg = "#BCAAA4", gui = "bold,italic" }),
-			TreesitterContextLineNumber({ bg = "#f0f0f0", fg = "#979770", gui = "bold,italic" }),
-		}
-	end)
-
-	-- Apply specs using lush tool-chain
-	-- lush.apply(lush.compile(specs))
-	vim.cmd("colorscheme kanagawabones")
-end
-
-return M

From d701d27fd45ffeced109b5275bc6fd44729b4857 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 28 Mar 2023 11:09:23 +0200
Subject: [PATCH 030/656] wezterm: paste from clipboard

---
 .config/wezterm/wezterm.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 19d3d4e..348ed55 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -186,7 +186,7 @@ return {
 	disable_default_key_bindings = true,
 	keys = {
 		{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
-		{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("PrimarySelection") },
+		{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
 		{ key = "0", mods = "CTRL", action = "ResetFontSize" },
 		{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
 		{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },

From 49f92613ce213e03bdec31dc82560cebb6c428ad Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 28 Mar 2023 11:09:51 +0200
Subject: [PATCH 031/656] sapling: dark mode

---
 .config/sapling/sapling.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/sapling/sapling.conf b/.config/sapling/sapling.conf
index c5a3c75..f6bbe26 100644
--- a/.config/sapling/sapling.conf
+++ b/.config/sapling/sapling.conf
@@ -9,7 +9,7 @@ l = ll
 ll = log -G -T '\033[31m{node|short} \033[3;32m{date|age} \033[35;1;3mby {author|person}\n  \033[0;34;3m{desc|firstline}\033[0m\n\n'
 
 [pager]
-pager = delta --hunk-header-style "line-number file" --line-numbers --max-line-distance 0.9 --syntax-theme GitHub --inspect-raw-lines=false
+pager = delta --hunk-header-style "line-number file" --line-numbers --max-line-distance 0.9 --inspect-raw-lines=false
 
 [color]
 sl.public = color70  bold

From 03994d4f04cedc8a2a0f77df539557711ead5c92 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 28 Mar 2023 11:10:21 +0200
Subject: [PATCH 032/656] starship: sl prompt

---
 .config/starship.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/starship.toml b/.config/starship.toml
index 79ff744..2b70e5a 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -4,11 +4,11 @@ add_newline = false
 # $git_commit\
 # $git_state\
 # $git_status\
-# ${custom.sl_status}\
 
 format = """\
 $hostname\
 $directory\
+${custom.sl_status}\
 ($character)\
 """
 

From 259776e89890398d680df7797fa2bd99c4902bea Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 28 Mar 2023 11:10:30 +0200
Subject: [PATCH 033/656] nvim: lazy update

---
 .config/nvim/lazy-lock.json | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index d116230..b9fa55e 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -12,30 +12,30 @@
   "copilot.lua": { "branch": "master", "commit": "db62371b6eac73954c194f3c8faee36cffee8135" },
   "gitsigns.nvim": { "branch": "main", "commit": "ca473e28382f1524aa3d2b6f04bcf54f2e6a64cb" },
   "go.nvim": { "branch": "master", "commit": "c02634a8350d559eeed94f78c67016fa6d80a8bf" },
-  "hlargs.nvim": { "branch": "main", "commit": "a7ad6ed8d6e27ea4dd13fda63fa732e9196ba4ea" },
+  "hlargs.nvim": { "branch": "main", "commit": "07771b0e802dd11d788a5de3ef84778a63f93802" },
   "inc-rename.nvim": { "branch": "main", "commit": "21c23c379342a731a0c90f226601ec0434627b26" },
   "indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" },
-  "lazy.nvim": { "branch": "main", "commit": "a80422f21750fcbf0e90b26da877d4024d76f116" },
+  "lazy.nvim": { "branch": "main", "commit": "57cce98dfdb2f2dd05a0567d89811e6d0505e13b" },
   "lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
   "lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
   "marks.nvim": { "branch": "master", "commit": "76aca5069c5ce5c0099e30168649e6393e494f26" },
-  "neogen": { "branch": "main", "commit": "93d997dbddfe084e77ba4541c54a7b8bfd754fb1" },
-  "noice.nvim": { "branch": "main", "commit": "f8b1a72a7bce56d9e9ed054708dc855d57dec085" },
+  "neogen": { "branch": "main", "commit": "9c17225aac94bdbf93baf16e1b2d2c6dcffb0901" },
+  "noice.nvim": { "branch": "main", "commit": "1da4edfba3e9278e98fc9723d7235d9ab3889744" },
   "nui.nvim": { "branch": "main", "commit": "0dc148c6ec06577fcf06cbab3b7dac96d48ba6be" },
   "null-ls.nvim": { "branch": "main", "commit": "0180603b6f3cee40f83c6fc226b9ac5f85e691c4" },
   "nvim-cmp": { "branch": "main", "commit": "777450fd0ae289463a14481673e26246b5e38bf2" },
-  "nvim-dap": { "branch": "master", "commit": "7e81998e31277c7a33b6c34423640900c5c2c776" },
+  "nvim-dap": { "branch": "master", "commit": "7389e85233e3483b31b6a1c4ba69cda77336b7a8" },
   "nvim-dap-go": { "branch": "main", "commit": "b4ded7de579b4e2a85c203388233b54bf1028816" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "8db23ea51203b5f00ad107a0cef7e0b2d7a0476c" },
   "nvim-lsp-ts-utils": { "branch": "main", "commit": "0a6a16ef292c9b61eac6dad00d52666c7f84b0e7" },
-  "nvim-lspconfig": { "branch": "master", "commit": "c6105c449683b944b5d2138fcf82f18c657249e9" },
-  "nvim-navic": { "branch": "master", "commit": "ca34afcd15c7f6dd0836fc4fca2e37024bfa5019" },
+  "nvim-lspconfig": { "branch": "master", "commit": "c5505c70571b094663745167d40388edd40f6450" },
+  "nvim-navic": { "branch": "master", "commit": "35731604fb5adab5fe939975879d22994aa8b575" },
   "nvim-osc52": { "branch": "main", "commit": "47ce7ee2396fa3ee4fb6b0e0ef14ba06f9c9bd31" },
-  "nvim-treesitter": { "branch": "master", "commit": "1f087c91f5ca76a2257b855d72d371a2b5302986" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "582cbb5a4cb50f6161cac8cc01f55aeaff6d836a" },
+  "nvim-treesitter": { "branch": "master", "commit": "5a7a2ad172bcc40c53aa274dff05aacb5074b509" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "b55fe6175f0001347a433c9df358c8cbf8a4e90f" },
   "nvim-ts-autotag": { "branch": "main", "commit": "25698e4033cd6cd3745454bfc837dd670eba0480" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "729d83ecb990dc2b30272833c213cc6d49ed5214" },
-  "nvim-web-devicons": { "branch": "master", "commit": "95b1e300699be8eb6b5be1758a9d4d69fe93cc7f" },
+  "nvim-web-devicons": { "branch": "master", "commit": "9c5f71eec6004d43f8e14330a6edb6dbddfe0a68" },
   "packer.nvim": { "branch": "master", "commit": "1d0cf98a561f7fd654c970c49f917d74fafe1530" },
   "playground": { "branch": "master", "commit": "4044b53c4d4fcd7a78eae20b8627f78ce7dc6f56" },
   "plenary.nvim": { "branch": "master", "commit": "253d34830709d690f013daf2853a9d21ad7accab" },
@@ -46,7 +46,7 @@
   "telescope-github.nvim": { "branch": "master", "commit": "ee95c509901c3357679e9f2f9eaac3561c811736" },
   "telescope-ui-select.nvim": { "branch": "master", "commit": "62ea5e58c7bbe191297b983a9e7e89420f581369" },
   "telescope.nvim": { "branch": "master", "commit": "942fe5faef47b21241e970551eba407bc10d9547" },
-  "trouble.nvim": { "branch": "main", "commit": "7915277a259fdff5d46c6f1d2e100df2ec384d3b" },
+  "trouble.nvim": { "branch": "main", "commit": "2ae7237c2917d661f458443c9a88680f8ca2d7b2" },
   "vim-cue": { "branch": "master", "commit": "bd1a62303d096aa24fe4160a475645087f8770b3" },
   "vim-illuminate": { "branch": "master", "commit": "a2907275a6899c570d16e95b9db5fd921c167502" }
 }
\ No newline at end of file

From 3fc07fbbe563ae7bd939045e36106dc11359adfe Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 10 Apr 2023 21:06:24 +0200
Subject: [PATCH 034/656] wezterm-edit-helper: hide escape code output

---
 bin/wezterm-edit-helper | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper
index b5f34c5..457ba05 100755
--- a/bin/wezterm-edit-helper
+++ b/bin/wezterm-edit-helper
@@ -17,10 +17,11 @@ fi
 _nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
 
 function _nvim_setenv() {
-	nvim --server "$_nvim_socket" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")"
+	nvim --server "$_nvim_socket" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")" 2>&1 >/dev/null
 }
 
-nvim --server "$_nvim_socket" --remote-expr "42" 2>/dev/null ||
+
+nvim --server "$_nvim_socket" --remote-expr "42" 2>&1 >/dev/null ||
 	(rm -f "$_nvim_socket" && wezterm cli spawn --cwd "${PWD}" nvim --listen "$_nvim_socket" && sleep 0.5)
 
 _nvim_setenv BUILD_COMMAND "$BUILD_COMMAND"

From 8aa51d08ee3ca712109f748bbf8d4ffbb85ddcec Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 10 Apr 2023 21:07:19 +0200
Subject: [PATCH 035/656] remove unused binaries

---
 bin/gren              | 16 ---------------
 bin/ktail             |  5 -----
 bin/pw                | 46 -------------------------------------------
 bin/tmux-build-helper |  4 ----
 bin/tmux-nvr          |  5 -----
 5 files changed, 76 deletions(-)
 delete mode 100755 bin/gren
 delete mode 100755 bin/ktail
 delete mode 100755 bin/pw
 delete mode 100755 bin/tmux-build-helper
 delete mode 100755 bin/tmux-nvr

diff --git a/bin/gren b/bin/gren
deleted file mode 100755
index 2dff535..0000000
--- a/bin/gren
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-set -ex
-
-if [[ -z "$1" ]]; then
-  echo "Usage: $0 <branch name>"
-  exit 1
-fi
-
-hub sync
-
-if git rev-parse --verify --quiet $1; then
-  git checkout $1
-else
-  git checkout -b $1 main
-  git push -u origin $1
-fi
diff --git a/bin/ktail b/bin/ktail
deleted file mode 100755
index 2969226..0000000
--- a/bin/ktail
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-kubectl get pod --output json \
-  | jq -r '[.items[].metadata.labels]|map(to_entries[]|(.key) + "=" + .value)|unique|.[]' \
-  | fzf \
-  | xargs kubectl tail "$@" -l  
diff --git a/bin/pw b/bin/pw
deleted file mode 100755
index 642ad2a..0000000
--- a/bin/pw
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/bash
-#
-# Author: Daniel Lundin <dln@arity.se>
-#
-# Convenience script to hide sensitive variables on the command line.
-# Uses keyctl to store secrets in the keyring.
-#
-# Example usage: mycommand --user=foo --password=$(pw mypass)
-
-set -eo pipefail
-
-purge=0
-ttl=${PW_TTL:-259200}
-
-usage() { echo "Usage: $0 [-t SECONDS] [-f] SECRET_NAME" 1>&2; exit 1; }
-
-while getopts ":ft:" o; do
-  case "${o}" in
-    f)
-      purge=1
-      ;;
-    t)
-      ttl=${OPTARG}
-      ;;
-    *)
-      usage
-      ;;
-  esac
-done
-shift $((OPTIND-1))
-
-var="$1"
-shift || usage
-[ -z "$1" ] || usage
-
-key="pw.${var}"
-
-if [ "${purge}" == "1" ]; then
-  keyctl purge user "${key}" >>/dev/null 2>&1 || true
-fi
-
-out=$(systemd-ask-password --accept-cached --keyname="${key}" "${var}:")
-key_id=$(keyctl request user "${key}" 2>/dev/null)
-keyctl timeout "$key_id" "$ttl"
-
-printf "%s" "$out"
diff --git a/bin/tmux-build-helper b/bin/tmux-build-helper
deleted file mode 100755
index e27347c..0000000
--- a/bin/tmux-build-helper
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-set -ef -o pipefail
-eval "$(direnv export bash)"
-eval "${BUILD_COMMAND:-echo 'BUILD_COMMAND not set'}" | bat --paging=always
diff --git a/bin/tmux-nvr b/bin/tmux-nvr
deleted file mode 100755
index 12e869f..0000000
--- a/bin/tmux-nvr
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-tmux select-window -t1
-FILE="$1"
-shift
-exec nvr --remote "$@" $(readlink -f "$FILE")

From 1b05f7e138d88bcee945951f2e4315d4fcff3cdb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 10 Apr 2023 21:07:59 +0200
Subject: [PATCH 036/656] remove GOPROXY

---
 .zshrc | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index 216a4a6..0fd8bc7 100644
--- a/.zshrc
+++ b/.zshrc
@@ -219,7 +219,6 @@ fi
 
 ## Golang
 export PATH=$HOME/go/bin:$PATH
-GOPROXY=https://athens.aarn.shelman.io
 
 ## Ansible
 export ANSIBLE_NOCOWS=1

From ad881d32282f53cde38d0310a83291e1899530df Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 10 Apr 2023 21:22:34 +0200
Subject: [PATCH 037/656] untrack lazys lockfile

---
 .config/nvim/lazy-lock.json | 52 -------------------------------------
 1 file changed, 52 deletions(-)
 delete mode 100644 .config/nvim/lazy-lock.json

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
deleted file mode 100644
index b9fa55e..0000000
--- a/.config/nvim/lazy-lock.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-  "Comment.nvim": { "branch": "master", "commit": "8d3aa5c22c2d45e788c7a5fe13ad77368b783c20" },
-  "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
-  "cmp-cmdline": { "branch": "main", "commit": "8fcc934a52af96120fe26358985c10c035984b53" },
-  "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
-  "cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" },
-  "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" },
-  "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
-  "cmp-tmux": { "branch": "main", "commit": "984772716f66d8ee88535a6bf3f94c4b4e1301f5" },
-  "colorbuddy.vim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "copilot-cmp": { "branch": "master", "commit": "92535dfd9c430b49ca7d9a7da336c5db65826b65" },
-  "copilot.lua": { "branch": "master", "commit": "db62371b6eac73954c194f3c8faee36cffee8135" },
-  "gitsigns.nvim": { "branch": "main", "commit": "ca473e28382f1524aa3d2b6f04bcf54f2e6a64cb" },
-  "go.nvim": { "branch": "master", "commit": "c02634a8350d559eeed94f78c67016fa6d80a8bf" },
-  "hlargs.nvim": { "branch": "main", "commit": "07771b0e802dd11d788a5de3ef84778a63f93802" },
-  "inc-rename.nvim": { "branch": "main", "commit": "21c23c379342a731a0c90f226601ec0434627b26" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "018bd04d80c9a73d399c1061fa0c3b14a7614399" },
-  "lazy.nvim": { "branch": "main", "commit": "57cce98dfdb2f2dd05a0567d89811e6d0505e13b" },
-  "lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
-  "lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
-  "marks.nvim": { "branch": "master", "commit": "76aca5069c5ce5c0099e30168649e6393e494f26" },
-  "neogen": { "branch": "main", "commit": "9c17225aac94bdbf93baf16e1b2d2c6dcffb0901" },
-  "noice.nvim": { "branch": "main", "commit": "1da4edfba3e9278e98fc9723d7235d9ab3889744" },
-  "nui.nvim": { "branch": "main", "commit": "0dc148c6ec06577fcf06cbab3b7dac96d48ba6be" },
-  "null-ls.nvim": { "branch": "main", "commit": "0180603b6f3cee40f83c6fc226b9ac5f85e691c4" },
-  "nvim-cmp": { "branch": "main", "commit": "777450fd0ae289463a14481673e26246b5e38bf2" },
-  "nvim-dap": { "branch": "master", "commit": "7389e85233e3483b31b6a1c4ba69cda77336b7a8" },
-  "nvim-dap-go": { "branch": "main", "commit": "b4ded7de579b4e2a85c203388233b54bf1028816" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "8db23ea51203b5f00ad107a0cef7e0b2d7a0476c" },
-  "nvim-lsp-ts-utils": { "branch": "main", "commit": "0a6a16ef292c9b61eac6dad00d52666c7f84b0e7" },
-  "nvim-lspconfig": { "branch": "master", "commit": "c5505c70571b094663745167d40388edd40f6450" },
-  "nvim-navic": { "branch": "master", "commit": "35731604fb5adab5fe939975879d22994aa8b575" },
-  "nvim-osc52": { "branch": "main", "commit": "47ce7ee2396fa3ee4fb6b0e0ef14ba06f9c9bd31" },
-  "nvim-treesitter": { "branch": "master", "commit": "5a7a2ad172bcc40c53aa274dff05aacb5074b509" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "b55fe6175f0001347a433c9df358c8cbf8a4e90f" },
-  "nvim-ts-autotag": { "branch": "main", "commit": "25698e4033cd6cd3745454bfc837dd670eba0480" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "729d83ecb990dc2b30272833c213cc6d49ed5214" },
-  "nvim-web-devicons": { "branch": "master", "commit": "9c5f71eec6004d43f8e14330a6edb6dbddfe0a68" },
-  "packer.nvim": { "branch": "master", "commit": "1d0cf98a561f7fd654c970c49f917d74fafe1530" },
-  "playground": { "branch": "master", "commit": "4044b53c4d4fcd7a78eae20b8627f78ce7dc6f56" },
-  "plenary.nvim": { "branch": "master", "commit": "253d34830709d690f013daf2853a9d21ad7accab" },
-  "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
-  "stylua-nvim": { "branch": "main", "commit": "ce59a353f02938cba3e0285e662fcd3901cd270f" },
-  "telescope-dap.nvim": { "branch": "master", "commit": "313d2ea12ae59a1ca51b62bf01fc941a983d9c9c" },
-  "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
-  "telescope-github.nvim": { "branch": "master", "commit": "ee95c509901c3357679e9f2f9eaac3561c811736" },
-  "telescope-ui-select.nvim": { "branch": "master", "commit": "62ea5e58c7bbe191297b983a9e7e89420f581369" },
-  "telescope.nvim": { "branch": "master", "commit": "942fe5faef47b21241e970551eba407bc10d9547" },
-  "trouble.nvim": { "branch": "main", "commit": "2ae7237c2917d661f458443c9a88680f8ca2d7b2" },
-  "vim-cue": { "branch": "master", "commit": "bd1a62303d096aa24fe4160a475645087f8770b3" },
-  "vim-illuminate": { "branch": "master", "commit": "a2907275a6899c570d16e95b9db5fd921c167502" }
-}
\ No newline at end of file

From 11886d2ce88ddab55eba8d9cea89bec7f11575ce Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 17 Apr 2023 12:57:02 +0200
Subject: [PATCH 038/656] wezterm: remove window decorations and padding

---
 .config/wezterm/wezterm.lua | 39 ++-----------------------------------
 1 file changed, 2 insertions(+), 37 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 348ed55..9df4394 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -66,22 +66,6 @@ end)
 local function activate_tab(index)
 	return function(window, pane)
 		window:perform_action(act.ActivateTab(index), pane)
-		-- wezterm.log_info(title)
-		-- for _, t in ipairs(window:mux_window():tabs_with_info()) do
-		-- 	if t.tab:get_title() == title then
-		-- 		window:perform_action(
-		-- 			act.Multiple({
-		-- 				act.ActivateTab(t.index),
-		-- 				act.MoveTab(index),
-		-- 			}),
-		-- 			pane
-		-- 		)
-		-- 		return
-		-- 	end
-		-- end
-		-- local tab, _, _ = window:mux_window():spawn_tab({})
-		-- tab:set_title(title)
-		-- window:perform_action(act.MoveTab(index), pane)
 	end
 end
 
@@ -141,12 +125,6 @@ return {
 	initial_rows = 45,
 	use_resize_increments = true,
 	window_background_opacity = 1.0,
-	window_padding = {
-		left = "0.75cell",
-		right = "0.5cell",
-		top = "0.25cell",
-		bottom = "0cell",
-	},
 	colors = {
 		tab_bar = {
 			active_tab = {
@@ -155,24 +133,11 @@ return {
 			},
 		},
 	},
-	window_decorations = "RESIZE",
-	window_frame = {
-		border_left_width = "2px",
-		border_right_width = "2px",
-		border_bottom_height = "2px",
-		border_top_height = "2px",
-		border_left_color = "#333333",
-		border_right_color = "#333333",
-		border_bottom_color = "#333333",
-		border_top_color = "#333333",
-		inactive_titlebar_bg = "#21262e",
-		active_titlebar_bg = "#252b34",
-	},
 	default_cursor_style = "SteadyBlock",
 	cursor_thickness = "3px",
-	cursor_blink_rate = 300,
+	cursor_blink_rate = 0,
 	enable_wayland = true,
-	enable_tab_bar = true,
+	enable_tab_bar = false,
 	tab_bar_at_bottom = true,
 	use_fancy_tab_bar = true,
 	show_tab_index_in_tab_bar = true,

From 6e6afdbe56cf535933fa7ae94b5cf626545680c2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 17 Apr 2023 12:57:34 +0200
Subject: [PATCH 039/656] wezterm: user webgpu renderer

---
 .config/wezterm/wezterm.lua | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 9df4394..b3549ac 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -109,11 +109,7 @@ return {
 			font = font_with_fallback("Iosevka Shelman SS09", { weight = "DemiBold" }),
 		},
 	},
-	freetype_load_target = "Light",
-	freetype_render_target = "HorizontalLcd",
-	--freetype_load_flags = "NO_HINTING",
-	--custom_block_glyphs = false,
-
+	front_end = "WebGpu",
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
 	allow_square_glyphs_to_overflow_width = "Always",

From acaac626024e50f9f683744b8fd8259892343c82 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 27 Apr 2023 15:40:04 +0200
Subject: [PATCH 040/656] disable sapling prompt for now

---
 .config/starship.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/starship.toml b/.config/starship.toml
index 2b70e5a..be93261 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -17,7 +17,7 @@ right_format = """\
 
 [custom.sl_status]
 command = '''~/bin/starship-sl-status'''
-when = true
+when = false
 style = "italic fg:#79AE6F"
 format = '[(🌱 $output )]($style)'
 

From 037dc7029a37974029f73e63cbac4fa18a82b3ea Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 27 Apr 2023 15:40:49 +0200
Subject: [PATCH 041/656] wezterm: stop using muxer since it was too slow

---
 .config/wezterm/wezterm.lua | 103 ++++++++++++++++--------------------
 1 file changed, 45 insertions(+), 58 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index b3549ac..3239f30 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -2,6 +2,9 @@ local wezterm = require("wezterm")
 local mux = wezterm.mux
 local act = wezterm.action
 
+local dev_host = "dln-dev"
+local spawn_dev_nvim = { "ssh", dev_host, "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
+
 local function font_with_fallback(name, params)
 	local names = { name, "Noto Color Emoji" }
 	return wezterm.font_with_fallback(names, params)
@@ -13,35 +16,34 @@ wezterm.on("gui-startup", function(cmd)
 		args = cmd.args
 	end
 
-	local _, _, window = mux.spawn_window({
+	local tab, pane, window = mux.spawn_window({
 		workspace = "local",
-		args = args,
+		args = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" },
 	})
-	-- spawn 10 tabs
-	for _ = 1, 10 do
+	tab:set_title("nvim")
+
+	for _ = 1, 9 do
 		window:spawn_tab({})
 	end
+	window:gui_window():perform_action(act.ActivateTab(1), pane)
+
+	local tab, pane, window = mux.spawn_window({
+		workspace = dev_host,
+		args = spawn_dev_nvim,
+	})
+	tab:set_title("nvim")
+
+	for _ = 1, 9 do
+		window:spawn_tab({ args = { "ssh", dev_host } })
+	end
 
 	mux.set_active_workspace("local")
 end)
 
-wezterm.on("mux-startup", function()
-	local _, _, window = mux.spawn_window({
-		workspace = "dln-dev",
-	})
-	-- Spawn 10 mux tabs (on dev server)
-	for _ = 1, 10 do
-		window:spawn_tab({})
-	end
-end)
-
-local is_server = wezterm.hostname() == "dln-dev"
-
 local function activate_nvim(window, pane)
-	wezterm.log_info("activate_nvim")
 	for _, t in ipairs(window:mux_window():tabs_with_info()) do
 		for _, p in ipairs(t.tab:panes()) do
-			if p:get_title() == "nvim" then
+			if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
 				window:perform_action(
 					act.Multiple({
 						act.ActivateTab(t.index),
@@ -53,39 +55,31 @@ local function activate_nvim(window, pane)
 			end
 		end
 	end
+
+	local nvim = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
+	if window:mux_window():get_workspace() == dev_host then
+		nvim = spawn_dev_nvim
+	end
+
+	local tab, pane, _ = window:mux_window():spawn_tab({ args = nvim })
+	window:perform_action(act.MoveTab(0), pane)
+	tab:set_title("nvim")
 end
 
 wezterm.on("user-var-changed", function(window, pane, name, value)
-	wezterm.log_info("user-var-changed", name, value)
-
 	if name == "nvim_activate" then
 		activate_nvim(window, pane)
 	end
 end)
 
-local function activate_tab(index)
-	return function(window, pane)
-		window:perform_action(act.ActivateTab(index), pane)
-	end
-end
+wezterm.on("activate-nvim", activate_nvim)
 
-wezterm.on("tab-1", activate_nvim)
-wezterm.on("tab-2", activate_tab(1))
-wezterm.on("tab-3", activate_tab(2))
-wezterm.on("tab-4", activate_tab(3))
-wezterm.on("tab-5", activate_tab(4))
-wezterm.on("tab-6", activate_tab(5))
-wezterm.on("tab-7", activate_tab(6))
-wezterm.on("tab-8", activate_tab(7))
-wezterm.on("tab-9", activate_tab(8))
-wezterm.on("tab-10", activate_tab(9))
-
-wezterm.add_to_config_reload_watch_list("/home/dln/.config/shelman-theme/current/wezterm")
+wezterm.add_to_config_reload_watch_list(os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm")
 
 return {
 	color_scheme = "Shelman Theme",
 	color_scheme_dirs = {
-		"/home/dln/.config/shelman-theme/current/wezterm",
+		os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm",
 	},
 	font = font_with_fallback("Iosevka Shelman SS09", { weight = "Regular" }),
 	font_rules = {
@@ -110,6 +104,7 @@ return {
 		},
 	},
 	front_end = "WebGpu",
+	webgpu_power_preference = "HighPerformance",
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
 	allow_square_glyphs_to_overflow_width = "Always",
@@ -135,7 +130,7 @@ return {
 	enable_wayland = true,
 	enable_tab_bar = false,
 	tab_bar_at_bottom = true,
-	use_fancy_tab_bar = true,
+	use_fancy_tab_bar = false,
 	show_tab_index_in_tab_bar = true,
 	enable_scroll_bar = false,
 	scrollback_lines = 5000,
@@ -153,19 +148,18 @@ return {
 		{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
 		{ key = "Enter", mods = "ALT", action = "ToggleFullScreen" },
 		{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
+		{ key = "L", mods = "CTRL", action = wezterm.action.ShowDebugOverlay },
 		-- mux
-		{ key = "A", mods = "ALT", action = act.AttachDomain("dln-dev") },
-		{ key = "E", mods = "ALT", action = act.DetachDomain({ DomainName = "dln-dev" }) },
-		{ key = "1", mods = "ALT", action = act.EmitEvent("tab-1") },
-		{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },
-		{ key = "3", mods = "ALT", action = act.EmitEvent("tab-3") },
-		{ key = "4", mods = "ALT", action = act.EmitEvent("tab-4") },
-		{ key = "5", mods = "ALT", action = act.EmitEvent("tab-5") },
-		{ key = "6", mods = "ALT", action = act.EmitEvent("tab-6") },
-		{ key = "7", mods = "ALT", action = act.EmitEvent("tab-7") },
-		{ key = "8", mods = "ALT", action = act.EmitEvent("tab-8") },
-		{ key = "9", mods = "ALT", action = act.EmitEvent("tab-9") },
-		{ key = "0", mods = "ALT", action = act.EmitEvent("tab-10") },
+		{ key = "1", mods = "ALT", action = act.EmitEvent("activate-nvim") },
+		{ key = "2", mods = "ALT", action = act.ActivateTab(1) },
+		{ key = "3", mods = "ALT", action = act.ActivateTab(2) },
+		{ key = "4", mods = "ALT", action = act.ActivateTab(3) },
+		{ key = "5", mods = "ALT", action = act.ActivateTab(4) },
+		{ key = "6", mods = "ALT", action = act.ActivateTab(5) },
+		{ key = "7", mods = "ALT", action = act.ActivateTab(6) },
+		{ key = "8", mods = "ALT", action = act.ActivateTab(7) },
+		{ key = "9", mods = "ALT", action = act.ActivateTab(8) },
+		{ key = "0", mods = "ALT", action = act.ActivateTab(9) },
 		{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
 		{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
 		{ key = "l", mods = "ALT", action = wezterm.action.ActivateCommandPalette },
@@ -195,11 +189,4 @@ return {
 			action = act.ScrollByPage(0.25),
 		},
 	},
-	unix_domains = {
-		{
-			name = "dln-dev",
-			local_echo_threshold_ms = 100,
-			proxy_command = is_server == false and { "ssh", "dln-dev", "wezterm", "cli", "proxy" } or nil,
-		},
-	},
 }

From e9e059660c9a0084587b659e49908f45167b5d1c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 27 Apr 2023 15:59:43 +0200
Subject: [PATCH 042/656] edit-helper: do not spawn nvim

---
 bin/wezterm-edit-helper | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper
index 457ba05..714b3d2 100755
--- a/bin/wezterm-edit-helper
+++ b/bin/wezterm-edit-helper
@@ -20,10 +20,6 @@ function _nvim_setenv() {
 	nvim --server "$_nvim_socket" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")" 2>&1 >/dev/null
 }
 
-
-nvim --server "$_nvim_socket" --remote-expr "42" 2>&1 >/dev/null ||
-	(rm -f "$_nvim_socket" && wezterm cli spawn --cwd "${PWD}" nvim --listen "$_nvim_socket" && sleep 0.5)
-
 _nvim_setenv BUILD_COMMAND "$BUILD_COMMAND"
 _nvim_setenv GOPACKAGESDRIVER "$GOPACKAGESDRIVER"
 _nvim_setenv GOFLAGS "$GOFLAGS"

From 6dfd7d5f8ef7c924af96b81e2aaf72d319f3d927 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 27 Apr 2023 16:05:18 +0200
Subject: [PATCH 043/656] zsh: clean up completion

---
 .zshrc | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/.zshrc b/.zshrc
index 0fd8bc7..a56a3ea 100644
--- a/.zshrc
+++ b/.zshrc
@@ -172,6 +172,11 @@ pyenv() {
   esac
 }
 
+
+autoload -Uz compdef
+autoload -U +X bashcompinit && bashcompinit
+autoload -U +X compinit && compinit
+
 ## eksctl
 if [ ! -f "${fpath[1]}/_eksctl" ]; then
 	command -v eksctl >/dev/null 2>&1 && eksctl completion zsh > "${fpath[1]}/_eksctl"
@@ -214,8 +219,13 @@ if [ ! -f "${fpath[1]}/_talosctl" ]; then
 	command -v talosctl >/dev/null 2>&1 && talosctl completion zsh > "${fpath[1]}/_talosctl"
 fi
 
+## vault
+complete -o nospace -C /usr/bin/vault vault
+
 ## Google Cloud
 [ -f /opt/google-cloud-sdk/completion.zsh.inc ] && source /opt/google-cloud-sdk/completion.zsh.inc
+if [ -f '/home/dln/google-cloud-sdk/path.zsh.inc' ]; then . '/home/dln/google-cloud-sdk/path.zsh.inc'; fi
+if [ -f '/home/dln/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/dln/google-cloud-sdk/completion.zsh.inc'; fi
 
 ## Golang
 export PATH=$HOME/go/bin:$PATH
@@ -226,21 +236,8 @@ export ANSIBLE_NOCOWS=1
 ## Docker
 export DOCKER_BUILDKIT=1
 
-autoload -Uz compinit
-compinit
-
-autoload -Uz compdef
-
 PROG=tea _CLI_ZSH_AUTOCOMPLETE_HACK=1 source "/home/dln/.config/tea/autocomplete.zsh"
 
 ## AWS
-autoload -U +X bashcompinit && bashcompinit
 complete -o nospace -C /usr/bin/mcli mcli
 complete -C '/usr/bin/aws_completer' aws
-
-
-# The next line updates PATH for the Google Cloud SDK.
-if [ -f '/home/dln/google-cloud-sdk/path.zsh.inc' ]; then . '/home/dln/google-cloud-sdk/path.zsh.inc'; fi
-
-# The next line enables shell command completion for gcloud.
-if [ -f '/home/dln/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/dln/google-cloud-sdk/completion.zsh.inc'; fi

From 1a1acba0e78274a69f0797b2e9dfd3d00e75f6a2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 29 Apr 2023 11:33:39 +0200
Subject: [PATCH 044/656] Return of the tmux

---
 .config/starship.toml                         | 14 +++-
 .config/wezterm/wezterm.lua                   | 79 +------------------
 .../applications/wezterm-dln-dev.desktop      |  2 +-
 .../share/applications/wezterm-local.desktop  | 11 +++
 .tmux.conf                                    | 24 +++---
 .zshrc                                        |  2 +-
 bin/tmux-build-helper                         |  4 +
 bin/{wezterm-edit-helper => tmux-edit-helper} | 15 ++--
 8 files changed, 47 insertions(+), 104 deletions(-)
 create mode 100644 .local/share/applications/wezterm-local.desktop
 create mode 100755 bin/tmux-build-helper
 rename bin/{wezterm-edit-helper => tmux-edit-helper} (70%)

diff --git a/.config/starship.toml b/.config/starship.toml
index be93261..ab1eeda 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -1,20 +1,26 @@
 add_newline = false
 
-# $git_branch\
-# $git_commit\
-# $git_state\
-# $git_status\
 
 format = """\
+${env_var.TMUX_WINDOW}\
 $hostname\
 $directory\
 ${custom.sl_status}\
+$git_branch\
+$git_commit\
+$git_state\
+$git_status\
 ($character)\
 """
 
 right_format = """\
 """
 
+[env_var.TMUX_WINDOW]
+default = ""
+format = '[ $env_value ]($style)[](fg:#d1002f) '
+style = 'italic bg:#d1002f fg:#ffffff'
+
 [custom.sl_status]
 command = '''~/bin/starship-sl-status'''
 when = false
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 3239f30..25aef7c 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -10,70 +10,6 @@ local function font_with_fallback(name, params)
 	return wezterm.font_with_fallback(names, params)
 end
 
-wezterm.on("gui-startup", function(cmd)
-	local args = {}
-	if cmd then
-		args = cmd.args
-	end
-
-	local tab, pane, window = mux.spawn_window({
-		workspace = "local",
-		args = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" },
-	})
-	tab:set_title("nvim")
-
-	for _ = 1, 9 do
-		window:spawn_tab({})
-	end
-	window:gui_window():perform_action(act.ActivateTab(1), pane)
-
-	local tab, pane, window = mux.spawn_window({
-		workspace = dev_host,
-		args = spawn_dev_nvim,
-	})
-	tab:set_title("nvim")
-
-	for _ = 1, 9 do
-		window:spawn_tab({ args = { "ssh", dev_host } })
-	end
-
-	mux.set_active_workspace("local")
-end)
-
-local function activate_nvim(window, pane)
-	for _, t in ipairs(window:mux_window():tabs_with_info()) do
-		for _, p in ipairs(t.tab:panes()) do
-			if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
-				window:perform_action(
-					act.Multiple({
-						act.ActivateTab(t.index),
-						act.MoveTab(0),
-					}),
-					pane
-				)
-				return
-			end
-		end
-	end
-
-	local nvim = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
-	if window:mux_window():get_workspace() == dev_host then
-		nvim = spawn_dev_nvim
-	end
-
-	local tab, pane, _ = window:mux_window():spawn_tab({ args = nvim })
-	window:perform_action(act.MoveTab(0), pane)
-	tab:set_title("nvim")
-end
-
-wezterm.on("user-var-changed", function(window, pane, name, value)
-	if name == "nvim_activate" then
-		activate_nvim(window, pane)
-	end
-end)
-
-wezterm.on("activate-nvim", activate_nvim)
-
 wezterm.add_to_config_reload_watch_list(os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm")
 
 return {
@@ -115,6 +51,7 @@ return {
 	initial_cols = 132,
 	initial_rows = 45,
 	use_resize_increments = true,
+	window_decorations = "RESIZE",
 	window_background_opacity = 1.0,
 	colors = {
 		tab_bar = {
@@ -127,6 +64,7 @@ return {
 	default_cursor_style = "SteadyBlock",
 	cursor_thickness = "3px",
 	cursor_blink_rate = 0,
+	hide_mouse_cursor_when_typing = false,
 	enable_wayland = true,
 	enable_tab_bar = false,
 	tab_bar_at_bottom = true,
@@ -149,19 +87,6 @@ return {
 		{ key = "Enter", mods = "ALT", action = "ToggleFullScreen" },
 		{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
 		{ key = "L", mods = "CTRL", action = wezterm.action.ShowDebugOverlay },
-		-- mux
-		{ key = "1", mods = "ALT", action = act.EmitEvent("activate-nvim") },
-		{ key = "2", mods = "ALT", action = act.ActivateTab(1) },
-		{ key = "3", mods = "ALT", action = act.ActivateTab(2) },
-		{ key = "4", mods = "ALT", action = act.ActivateTab(3) },
-		{ key = "5", mods = "ALT", action = act.ActivateTab(4) },
-		{ key = "6", mods = "ALT", action = act.ActivateTab(5) },
-		{ key = "7", mods = "ALT", action = act.ActivateTab(6) },
-		{ key = "8", mods = "ALT", action = act.ActivateTab(7) },
-		{ key = "9", mods = "ALT", action = act.ActivateTab(8) },
-		{ key = "0", mods = "ALT", action = act.ActivateTab(9) },
-		{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
-		{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
 		{ key = "l", mods = "ALT", action = wezterm.action.ActivateCommandPalette },
 		{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
 		{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
diff --git a/.local/share/applications/wezterm-dln-dev.desktop b/.local/share/applications/wezterm-dln-dev.desktop
index ae83c85..8f8a4e7 100644
--- a/.local/share/applications/wezterm-dln-dev.desktop
+++ b/.local/share/applications/wezterm-dln-dev.desktop
@@ -7,4 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm start --always-new-process --class=wezterm-dln-dev
+Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As0"}' start --class=wezterm-dln-dev
diff --git a/.local/share/applications/wezterm-local.desktop b/.local/share/applications/wezterm-local.desktop
new file mode 100644
index 0000000..c425874
--- /dev/null
+++ b/.local/share/applications/wezterm-local.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=wezterm-local
+GenericName=wezterm-local
+StartupWMClass=wezterm-local
+Type=Application
+TryExec=/usr/bin/wezterm
+Icon=org.wezfurlong.wezterm
+Terminal=false
+Categories=System;TerminalEmulator;
+Exec=/usr/bin/wezterm --config 'default_prog={"tmux", "-u", "new", "-As0"}' start
+
diff --git a/.tmux.conf b/.tmux.conf
index 297c1f2..11ef005 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -53,9 +53,9 @@ bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-d
 bind-key / copy-mode \; send-key ?
 bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
 bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
-bind -n M-g display-popup -S 'bg=#F1F8E9,fg=#689F38' -s 'bg=#F1F8E9' -h '90%' -w '90%' -b rounded -d '#{pane_current_path}' -E "gitui"
-bind -n M-e display-popup -S 'bg=#E3F2FD,fg=#0288D1' -s 'bg=#E3F2FD' -h '40%' -w '90%' -y 0 -b rounded -d '#{pane_current_path}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
-bind -n M-m display-popup -S 'bg=#FFF8E1,fg=#FF6F00' -s 'bg=#FFF8E1' -h '90%' -w '90%' -b rounded -d '#{pane_current_path}' -E "~/bin/tmux-build-helper"
+bind -n M-g display-popup -h '90%' -w '90%' -b rounded -d '#{pane_current_path}' -E "gitui"
+bind -n M-e display-popup -h '40%' -w '90%' -y 0 -b rounded -d '#{pane_current_path}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
+bind -n M-m display-popup -h '90%' -w '90%' -b rounded -d '#{pane_current_path}' -E "~/bin/tmux-build-helper"
 
 setw -g window-status-format ""
 setw -g window-status-current-format ""
@@ -71,14 +71,14 @@ set -g set-titles on
 set -g set-titles-string "#H - #T"
 
 new -s0 -n 1  nvim --listen $XDG_RUNTIME_DIR/nvim.sock
-new-window -n 2
-new-window -n 3
-new-window -n 4
-new-window -n 5
-new-window -n 6
-new-window -n 7
-new-window -n 8
-new-window -n 9
-new-window -n 0
+new-window -n 2 -e TMUX_WINDOW=2
+new-window -n 3 -e TMUX_WINDOW=3
+new-window -n 4 -e TMUX_WINDOW=4
+new-window -n 5 -e TMUX_WINDOW=5
+new-window -n 6 -e TMUX_WINDOW=6
+new-window -n 7 -e TMUX_WINDOW=7
+new-window -n 8 -e TMUX_WINDOW=8
+new-window -n 9 -e TMUX_WINDOW=9
+new-window -n 0 -e TMUX_WINDOW=0
 
 # vim:set ft=tmux:
diff --git a/.zshrc b/.zshrc
index a56a3ea..409fd34 100644
--- a/.zshrc
+++ b/.zshrc
@@ -105,7 +105,7 @@ export LESS="--mouse --wheel-lines=1 -nRXF"
 
 ## Aliases
 alias c='cut -c-${COLUMNS}'
-alias e='wezterm-edit-helper'
+alias e='tmux-edit-helper'
 alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
 alias l=bat
 alias lw='bat --wrap=never'
diff --git a/bin/tmux-build-helper b/bin/tmux-build-helper
new file mode 100755
index 0000000..e27347c
--- /dev/null
+++ b/bin/tmux-build-helper
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -ef -o pipefail
+eval "$(direnv export bash)"
+eval "${BUILD_COMMAND:-echo 'BUILD_COMMAND not set'}" | bat --paging=always
diff --git a/bin/wezterm-edit-helper b/bin/tmux-edit-helper
similarity index 70%
rename from bin/wezterm-edit-helper
rename to bin/tmux-edit-helper
index 714b3d2..efe3e07 100755
--- a/bin/wezterm-edit-helper
+++ b/bin/tmux-edit-helper
@@ -16,14 +16,11 @@ fi
 
 _nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
 
-function _nvim_setenv() {
-	nvim --server "$_nvim_socket" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")" 2>&1 >/dev/null
-}
-
-_nvim_setenv BUILD_COMMAND "$BUILD_COMMAND"
-_nvim_setenv GOPACKAGESDRIVER "$GOPACKAGESDRIVER"
-_nvim_setenv GOFLAGS "$GOFLAGS"
+tmux select-window -t nvim 2>/dev/null ||
+	tmux new-window -S -n nvim \
+		-e "BUILD_COMMAND=$BUILD_COMMAND" \
+		-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
+		-e "GOFLAGS=$GOFLAGS" \
+		nvim --listen "$_nvim_socket"
 
 nvim --server "$_nvim_socket" --remote "$_file"
-
-printf "\033]1337;SetUserVar=%s=%s\007" nvim_activate $(date +%s | base64)

From c4439324dbf10f2f37d0d8a37c09145017be2153 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 29 Apr 2023 15:18:46 +0200
Subject: [PATCH 045/656] ssh: send locale env vars

---
 .ssh/config | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.ssh/config b/.ssh/config
index 6aec36a..d8b018d 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -8,6 +8,7 @@ Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.
 AddressFamily inet
 RequestTty yes
 PreferredAuthentications=publickey
+SendEnv LC_* LANG
 
 Include ~/.ssh/private_config
 

From bbca481fc49169728104c18b0c4dc727b9581013 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 29 Apr 2023 15:23:07 +0200
Subject: [PATCH 046/656] zsh: locale kludge

---
 .zshrc | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/.zshrc b/.zshrc
index 409fd34..32b07f4 100644
--- a/.zshrc
+++ b/.zshrc
@@ -51,6 +51,10 @@ setopt null_glob
 # ZSH_AUTOSUGGEST_USE_ASYNC=1
 # ZSH_AUTOSUGGEST_STRATEGY=(history completion)
 
+# FIXME: Why does this work? Otherwise zshrc gets the wrong prompt length for unicode chars.
+export LC_ALL=en_US.UTF-8
+export LC_ALL=en_SE.UTF-8
+
 export PATH=$HOME/bin:$PATH
 
 redraw-prompt() {

From 58e973e0f17ce0f72182da86f2e6d4e4e324d7e0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 3 May 2023 10:21:44 +0200
Subject: [PATCH 047/656] nvim: fix tmux key bindings

---
 .config/nvim/lua/plugins/misc.lua | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.config/nvim/lua/plugins/misc.lua b/.config/nvim/lua/plugins/misc.lua
index a76c874..24391dd 100644
--- a/.config/nvim/lua/plugins/misc.lua
+++ b/.config/nvim/lua/plugins/misc.lua
@@ -70,8 +70,8 @@ return {
 	{
 		"numToStr/Comment.nvim",
 		keys = {
-			{ "<C-/>", "<Plug>(comment_toggle_linewise_current)" },
-			{ "<C-/>", "<Plug>(comment_toggle_linewise_visual)", mode = "v" },
+			{ "<C-_>", "<Plug>(comment_toggle_linewise_current)" },
+			{ "<C-_>", "<Plug>(comment_toggle_linewise_visual)", mode = "v" },
 		},
 		dependencies = {
 			"JoosepAlviste/nvim-ts-context-commentstring",

From e80c94955d838175dfb3385e02b35006f6f7da83 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 3 May 2023 10:22:07 +0200
Subject: [PATCH 048/656] zsh: use en_DK locale

---
 .zshrc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/.zshrc b/.zshrc
index 32b07f4..f86e07a 100644
--- a/.zshrc
+++ b/.zshrc
@@ -53,7 +53,7 @@ setopt null_glob
 
 # FIXME: Why does this work? Otherwise zshrc gets the wrong prompt length for unicode chars.
 export LC_ALL=en_US.UTF-8
-export LC_ALL=en_SE.UTF-8
+export LC_ALL=en_DK.UTF-8
 
 export PATH=$HOME/bin:$PATH
 
@@ -193,9 +193,9 @@ fi
 export PATH=$HOME/.krew/bin:$PATH
 
 ## bazel
-if [ ! -f "${fpath[1]}/_bazel" ]; then
-  curl -sLo "${fpath[1]}/_bazel" https://raw.githubusercontent.com/bazelbuild/bazel/master/scripts/zsh_completion/_bazel
-fi
+#if [ ! -f "${fpath[1]}/_bazel" ]; then
+#  curl -sLo "${fpath[1]}/_bazel" https://raw.githubusercontent.com/bazelbuild/bazel/master/scripts/zsh_completion/_bazel
+#fi
 
 ## sapling
 if [ ! -f "${fpath[1]}/_sl" ]; then

From 8df9e883a1603cf2e4502871e2d4e5db447d9dd2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 3 May 2023 10:33:36 +0200
Subject: [PATCH 049/656] nvim: uncomment comment textobject

---
 .config/nvim/lua/plugins/treesitter.lua | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
index 662c3c3..7ec330a 100644
--- a/.config/nvim/lua/plugins/treesitter.lua
+++ b/.config/nvim/lua/plugins/treesitter.lua
@@ -112,6 +112,12 @@ return {
 							["[M"] = "@class.outer",
 						},
 					},
+					select = {
+						enable = true,
+						keymaps = {
+							["uc"] = "@comment.outer",
+						},
+					},
 				},
 				--- nvim-ts-autotag ---
 				autotag = {

From 474a89b198a3e890a7753f11e3207c49c3c3644f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 3 May 2023 10:39:06 +0200
Subject: [PATCH 050/656] nvim:  nvim and tmux cwd fix

---
 .config/nvim/lua/config/options.lua | 7 +++++--
 .tmux.conf                          | 7 ++++---
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index fb8d091..7532f9f 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -9,7 +9,7 @@ vim.o.splitright = true
 vim.o.ttimeout = true
 vim.o.ttimeoutlen = 50
 vim.o.updatetime = 100
-vim.o.autochdir = false
+vim.o.autochdir = true
 vim.o.backupdir = "/home/dln/.local/share/nvim/backup/"
 vim.o.backup = true
 vim.g.netrw_dirhistmax = 0
@@ -72,4 +72,7 @@ vim.keymap.set("n", ",L", ":luafile %<CR>") -- Reload lua file
 
 -- AutoCommand OSC7 workaround for tmux
 -- see https://github.com/neovim/neovim/issues/21771
-vim.cmd([[autocmd DirChanged * call chansend(v:stderr, printf("\033]7;file://%s\033\\", v:event.cwd))]])
+vim.api.nvim_create_autocmd("dirchanged", {
+	pattern = "*",
+	command = 'call chansend(v:stderr, printf("\\033]7;%s\\033", v:event.cwd))',
+})
diff --git a/.tmux.conf b/.tmux.conf
index 11ef005..bb50935 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -53,9 +53,10 @@ bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-d
 bind-key / copy-mode \; send-key ?
 bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
 bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
-bind -n M-g display-popup -h '90%' -w '90%' -b rounded -d '#{pane_current_path}' -E "gitui"
-bind -n M-e display-popup -h '40%' -w '90%' -y 0 -b rounded -d '#{pane_current_path}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
-bind -n M-m display-popup -h '90%' -w '90%' -b rounded -d '#{pane_current_path}' -E "~/bin/tmux-build-helper"
+bind -n M-g display-popup -h '90%' -w '90%' -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "gitui"
+bind -n M-e display-popup -h '40%' -w '90%' -y 0 -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
+bind -n M-m display-popup -h '90%' -w '90%' -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "~/bin/tmux-build-helper"
+
 
 setw -g window-status-format ""
 setw -g window-status-current-format ""

From 334331080048e4f7b251cd6d06431b9ea020e134 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 7 May 2023 10:42:53 +0200
Subject: [PATCH 051/656] nvim: disable lazy auto check for updates

---
 .config/nvim/lua/config/lazy.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index a5685f6..32e6454 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -10,7 +10,7 @@ vim.opt.runtimepath:prepend(lazypath)
 require("lazy").setup({
 	import = "plugins",
 	defaults = { lazy = true },
-	checker = { enabled = true },
+	checker = { enabled = false },
 	performance = {
 		cache = {
 			enabled = true,

From 7826d193f65a0f2e82dae47c1c6dbeb78ed7a6ee Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 7 May 2023 10:43:13 +0200
Subject: [PATCH 052/656] nvim: put hostname in lualine

---
 .config/nvim/lua/plugins/lualine.lua | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
index 2b40678..65f272c 100644
--- a/.config/nvim/lua/plugins/lualine.lua
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -15,10 +15,12 @@ function M.config()
 		options = {
 			globalstatus = true,
 			theme = "onedark",
+			-- theme = "wombat",
 			component_separators = { left = "╲", right = "╱" },
 			section_separators = { left = "", right = "" },
 		},
 		sections = {
+			lualine_a = { "hostname" },
 			lualine_c = {
 				{
 					"filename",

From 2df6c93955c13a4f2205d24dd40afb57fed42f26 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 8 May 2023 00:15:03 +0200
Subject: [PATCH 053/656] wezterm: cleaning up the typography

---
 .config/wezterm/wezterm.lua                   | 19 ++++++++++++-------
 .../share/applications/wezterm-local.desktop  |  3 +--
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 25aef7c..b76e5ca 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -17,26 +17,26 @@ return {
 	color_scheme_dirs = {
 		os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm",
 	},
-	font = font_with_fallback("Iosevka Shelman SS09", { weight = "Regular" }),
+	font = font_with_fallback("Iosevka Term SS09", { weight = "Light" }),
 	font_rules = {
 		{
 			italic = false,
 			intensity = "Half",
-			font = font_with_fallback("Iosevka Shelman SS09", { weight = "Thin" }),
+			font = font_with_fallback("Iosevka Term SS09", { weight = "Thin" }),
 		},
 		{
 			italic = true,
 			intensity = "Normal",
-			font = font_with_fallback("Iosevka Shelman Curly Slab", { weight = "Light", italic = true }),
+			font = font_with_fallback("Iosevka Term Curly Slab", { weight = "Light", italic = true }),
 		},
 		{
 			italic = true,
 			intensity = "Bold",
-			font = font_with_fallback("Iosevka Shelman SS15", { weight = "ExtraLight", italic = true }),
+			font = font_with_fallback("Iosevka Term SS15", { weight = "ExtraLight", italic = true }),
 		},
 		{
 			intensity = "Bold",
-			font = font_with_fallback("Iosevka Shelman SS09", { weight = "DemiBold" }),
+			font = font_with_fallback("Iosevka Term SS09", { weight = "DemiBold" }),
 		},
 	},
 	front_end = "WebGpu",
@@ -46,13 +46,18 @@ return {
 	allow_square_glyphs_to_overflow_width = "Always",
 	font_size = 13.5,
 	command_palette_font_size = 13.5,
-	line_height = 1.0,
-	cell_width = 0.95,
+	line_height = 1.065,
 	initial_cols = 132,
 	initial_rows = 45,
 	use_resize_increments = true,
 	window_decorations = "RESIZE",
 	window_background_opacity = 1.0,
+	window_padding = {
+		left = 0,
+		right = 0,
+		top = 0,
+		bottom = 0,
+	},
 	colors = {
 		tab_bar = {
 			active_tab = {
diff --git a/.local/share/applications/wezterm-local.desktop b/.local/share/applications/wezterm-local.desktop
index c425874..773565d 100644
--- a/.local/share/applications/wezterm-local.desktop
+++ b/.local/share/applications/wezterm-local.desktop
@@ -7,5 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"tmux", "-u", "new", "-As0"}' start
-
+Exec=/usr/bin/wezterm --config 'default_prog={"tmux", "-u", "new", "-As0"}' start --class=wezterm-local

From faaaf6cf8408680b7689b13341299d7699bfc836 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 8 May 2023 09:44:25 +0200
Subject: [PATCH 054/656] nvim: telescope oldfiles all dirs by default

---
 .config/nvim/lua/plugins/telescope.lua | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index cb54946..a74ea03 100644
--- a/.config/nvim/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -24,8 +24,8 @@ function M.config()
 
 	vim.keymap.set("n", "<leader>b", '<cmd>lua require("telescope.builtin").buffers()<CR>')
 	vim.keymap.set("n", "<leader>f", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
-	vim.keymap.set("n", "<space>", '<cmd>lua require("telescope.builtin").oldfiles({cwd_only=true})<CR>')
-	vim.keymap.set("n", "<leader><space>", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
+	vim.keymap.set("n", "<space>", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
+	vim.keymap.set("n", "<leader><space>", '<cmd>lua require("telescope.builtin").oldfiles({cwd_only=true})<CR>')
 	vim.keymap.set("n", "<leader>d", '<cmd>lua require("telescope.builtin").diagnostics({bufnr=0})<CR>')
 	vim.keymap.set("n", "<leader>e", '<cmd>lua require("telescope.builtin").git_files()<CR>')
 	vim.keymap.set("n", "<leader>g", '<cmd>lua require("telescope.builtin").git_status()<CR>')

From 712769d7cd327129c97a39a4f47a90c3a035947d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 8 May 2023 09:44:49 +0200
Subject: [PATCH 055/656] nvim: no clipboard sync

---
 .config/nvim/lua/config/options.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 7532f9f..3368d0c 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -13,7 +13,7 @@ vim.o.autochdir = true
 vim.o.backupdir = "/home/dln/.local/share/nvim/backup/"
 vim.o.backup = true
 vim.g.netrw_dirhistmax = 0
-vim.o.clipboard = "unnamedplus"
+-- vim.o.clipboard = "unnamedplus"
 vim.g.do_filetype_lua = 1
 vim.o.spell = false
 vim.o.spelllang = "en_us"

From 9d6880a7338a4cf87d1c429fff9d2c11c33ee712 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 9 May 2023 22:19:50 +0200
Subject: [PATCH 056/656] nvim: cmp tweaks

---
 .config/nvim/lua/plugins/cmp.lua | 85 +++++++++++++++++---------------
 1 file changed, 44 insertions(+), 41 deletions(-)

diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
index ddba684..6bb7800 100644
--- a/.config/nvim/lua/plugins/cmp.lua
+++ b/.config/nvim/lua/plugins/cmp.lua
@@ -1,44 +1,47 @@
 return {
-	"hrsh7th/nvim-cmp",
-	dependencies = {
-		"andersevenrud/cmp-tmux",
-		"hrsh7th/cmp-nvim-lsp",
-		"hrsh7th/cmp-buffer",
-		"hrsh7th/cmp-emoji",
-		"hrsh7th/cmp-path",
-		"hrsh7th/cmp-cmdline",
-		"hrsh7th/cmp-nvim-lsp-signature-help",
-		"onsails/lspkind-nvim",
-		{ "zbirenbaum/copilot-cmp", opts = {} },
-	},
-	event = "InsertEnter",
-	config = function()
-		local cmp = require("cmp")
+  "hrsh7th/nvim-cmp",
+  dependencies = {
+    "andersevenrud/cmp-tmux",
+    "hrsh7th/cmp-nvim-lsp",
+    "hrsh7th/cmp-buffer",
+    "hrsh7th/cmp-emoji",
+    "hrsh7th/cmp-path",
+    "hrsh7th/cmp-cmdline",
+    "hrsh7th/cmp-nvim-lsp-signature-help",
+    "onsails/lspkind-nvim",
+    { "zbirenbaum/copilot-cmp", opts = {} },
+  },
+  event = "InsertEnter",
+  config = function()
+    local cmp = require("cmp")
 
-		cmp.setup({
-			formatting = {
-				format = require("lspkind").cmp_format(),
-			},
-			window = {
-				completion = cmp.config.window.bordered(),
-				documentation = cmp.config.window.bordered(),
-			},
-			mapping = cmp.mapping.preset.insert({
-				["<Up>"] = cmp.mapping.select_prev_item(),
-				["<Down>"] = cmp.mapping.select_next_item(),
-				["<C-d>"] = cmp.mapping.scroll_docs(-2),
-				["<C-u>"] = cmp.mapping.scroll_docs(2),
-				["<C-e>"] = cmp.mapping.abort(),
-				["<CR>"] = cmp.mapping.confirm({ select = true }),
-				["<C-Space>"] = cmp.mapping.complete(),
-			}),
-			sources = cmp.config.sources({
-				{ name = "nvim_lsp" },
-				{ name = "nvim_lsp_signature_help" },
-				{ name = "buffer" },
-				{ name = "copilot" },
-				{ name = "emoji" },
-			}),
-		})
-	end,
+    cmp.setup({
+      formatting = {
+        format = require("lspkind").cmp_format(),
+      },
+      window = {
+        completion = cmp.config.window.bordered(),
+        documentation = cmp.config.window.bordered(),
+      },
+      mapping = cmp.mapping.preset.insert({
+        ["<Up>"] = cmp.mapping.select_prev_item(),
+        ["<Down>"] = cmp.mapping.select_next_item(),
+        ["<C-d>"] = cmp.mapping.scroll_docs(-2),
+        ["<C-u>"] = cmp.mapping.scroll_docs(2),
+        ["<C-e>"] = cmp.mapping.abort(),
+        ["<CR>"] = cmp.mapping.confirm({ select = false }),
+        ["<Tab>"] = cmp.mapping.confirm({ select = true }),
+        ["<C-Space>"] = cmp.mapping.complete(),
+      }),
+
+
+      sources = cmp.config.sources({
+        { name = "nvim_lsp",                priority = 3 },
+        { name = "nvim_lsp_signature_help", priority = 10 },
+        { name = "buffer",                  keyword_length = 3 },
+        { name = "copilot" },
+        { name = "emoji" },
+      }),
+    })
+  end,
 }

From a4e102f94445b1b8ed844c8c8625eb1e750095b9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 19 May 2023 21:12:51 +0200
Subject: [PATCH 057/656] git: nice tag alias "t"

---
 .gitconfig | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.gitconfig b/.gitconfig
index c300397..1c2c441 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -29,6 +29,7 @@ patch = !git --no-pager diff --no-color
 co = checkout
 st = status -sb
 pullr = pull --rebase
+t = tag --sort=-v:refname --format='%(color:bold italic)%(objectname:short)%(color:noitalic) %(refname:short)'
 
 sl = branchless smartlog
 sync = branchless sync
@@ -121,3 +122,5 @@ concurrenttransfers = 32
 	repo = /tmp/k2/src
 [fetch]
 	showForcedUpdates = true
+[tag]
+	sort = -v:refname

From 264fa64323339abbfdfb0dc97cc62ce73821049b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 26 May 2023 14:12:44 +0200
Subject: [PATCH 058/656] zsh: paging goodness

---
 .zshrc | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/.zshrc b/.zshrc
index f86e07a..032b9d1 100644
--- a/.zshrc
+++ b/.zshrc
@@ -103,6 +103,8 @@ export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
 
 ## Pager
 export LESS="--mouse --wheel-lines=1 -nRXF"
+export PAGER="bat"
+export BAT_PAGER="less -r"
 
 ## Clipboard OSC 52
  function clip { echo -en "\x1b]52;c;$(base64 -w0)\x07" }
@@ -111,12 +113,10 @@ export LESS="--mouse --wheel-lines=1 -nRXF"
 alias c='cut -c-${COLUMNS}'
 alias e='tmux-edit-helper'
 alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
-alias l=bat
-alias lw='bat --wrap=never'
+alias l='bat --wrap=never'
 alias ls=exa
 alias tail='tail -n $LINES'
 alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"'
-alias tree='exa --tree'
 alias v=vgrep
 alias ve='env EDITOR= vgrep -s'
 alias xc=clip
@@ -125,6 +125,11 @@ alias w="history -1 | sed -e 's/[0-9]*  //' | xargs viddy -n1"
 ## ripgrep 
 export RIPGREP_CONFIG_PATH=${HOME}/.config/shelman-theme/current/rg/rg.conf
 
+
+tree() {
+   exa --tree --color=always "$@" | bat --wrap=never
+}
+
 # "auto paging"
 rg() {
   /usr/bin/rg -p "$@" | bat

From 783f94ecf3274d3e654d7211396454a71498c136 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 26 May 2023 14:13:02 +0200
Subject: [PATCH 059/656] git: branchless goodies

---
 .gitconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitconfig b/.gitconfig
index 1c2c441..f7a8586 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -34,6 +34,8 @@ t = tag --sort=-v:refname --format='%(color:bold italic)%(objectname:short)%(col
 sl = branchless smartlog
 sync = branchless sync
 sw = branchless switch
+s = branchless switch -i
+n = branchless switch -d main
 
 gerrit-new = !git fetch origin main && git checkout --detach origin/main
 gerrit-push = !git push origin HEAD:refs/for/main

From 2e54a9eef2d6c625f1d7c6f8f082eca976bf2f2f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 2 Jun 2023 10:04:45 +0200
Subject: [PATCH 060/656] zsh: use btm instead of top

---
 .zshrc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index 032b9d1..3df74fa 100644
--- a/.zshrc
+++ b/.zshrc
@@ -113,10 +113,11 @@ export BAT_PAGER="less -r"
 alias c='cut -c-${COLUMNS}'
 alias e='tmux-edit-helper'
 alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
-alias l='bat --wrap=never'
+alias l='bat --wrap=never --pager="less -S"'
 alias ls=exa
 alias tail='tail -n $LINES'
 alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"'
+alias top='btm --basic --enable_cache_memory --enable_gpu_memory --battery'
 alias v=vgrep
 alias ve='env EDITOR= vgrep -s'
 alias xc=clip

From 4dcc64952f1338afe9d36263d1e838699d2af6e1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 2 Jun 2023 10:05:03 +0200
Subject: [PATCH 061/656] wezterm: resize fix

---
 .config/wezterm/wezterm.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index b76e5ca..b4b0514 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -50,6 +50,7 @@ return {
 	initial_cols = 132,
 	initial_rows = 45,
 	use_resize_increments = true,
+	adjust_window_size_when_changing_font_size = false,
 	window_decorations = "RESIZE",
 	window_background_opacity = 1.0,
 	window_padding = {

From b1a7aec7b7c3c8a33d404eccd45dd96adc76c3ae Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 2 Jun 2023 12:43:10 +0200
Subject: [PATCH 062/656] wezterm: no webgpu

---
 .config/wezterm/wezterm.lua | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index b4b0514..2deeafe 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -39,8 +39,8 @@ return {
 			font = font_with_fallback("Iosevka Term SS09", { weight = "DemiBold" }),
 		},
 	},
-	front_end = "WebGpu",
-	webgpu_power_preference = "HighPerformance",
+	-- front_end = "WebGpu",
+	-- webgpu_power_preference = "HighPerformance",
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
 	allow_square_glyphs_to_overflow_width = "Always",

From 980107874e799d8cfe51b2f25475acbc7d9f6cd2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 3 Jun 2023 11:13:25 +0200
Subject: [PATCH 063/656] zsh: fzf tab goodness and better syntax highlighting

---
 .zshrc | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index 3df74fa..813d841 100644
--- a/.zshrc
+++ b/.zshrc
@@ -13,9 +13,12 @@ autoload -Uz _zinit
 zi ice wait lucid
 zi load zsh-users/zsh-completions
 zi ice wait lucid
-zi load zsh-users/zsh-syntax-highlighting
+zi load zdharma-continuum/fast-syntax-highlighting
 zi ice wait lucid
 zi load zsh-users/zsh-history-substring-search
+zi ice wait lucid
+zi load Aloxaf/fzf-tab
+zi ice wait lucid
 
 ## History
 HISTSIZE=50000

From a687516aedd7cc5e864a561633b0d64f1455041f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 3 Jun 2023 11:13:58 +0200
Subject: [PATCH 064/656] nvim: theme fixery

---
 .config/nvim/lua/plugins/misc.lua          | 81 ++++++++++++++++++++++
 .config/nvim/lua/plugins/shelman-theme.lua | 21 +++---
 2 files changed, 92 insertions(+), 10 deletions(-)

diff --git a/.config/nvim/lua/plugins/misc.lua b/.config/nvim/lua/plugins/misc.lua
index 24391dd..2740b3d 100644
--- a/.config/nvim/lua/plugins/misc.lua
+++ b/.config/nvim/lua/plugins/misc.lua
@@ -6,6 +6,87 @@ return {
 	"jjo/vim-cue",
 	"ckipp01/stylua-nvim",
 
+	{
+		"jesseleite/nvim-noirbuddy",
+		dependencies = { "tjdevries/colorbuddy.nvim" },
+		config = function()
+			require("noirbuddy").setup({
+				styles = {
+					italic = true,
+					bold = true,
+					underline = true,
+					undercurl = true,
+				},
+				colors = {
+					primary = "#FFECB3",
+					secondary = "#B0BEC5",
+					-- background = "#1d2229",
+					background = "#0d1219",
+				},
+			})
+			local Color, colors, Group, groups, styles = require("colorbuddy").setup()
+			Color.new("string", "#D7CCC8")
+			Color.new("symbol", "#ECEFF1")
+
+			Color.new("comment", "#E57373")
+			Color.new("hlargs", "#FFF8E1")
+
+			Color.new("illuminate_bg", "#112210")
+			Color.new("illuminate_fg", "#66FFEE")
+
+			-- Color.new("search_bg", "#554411")
+			-- Color.new("search_fg", "#FFF0C0")
+			--
+			Color.new("search_bg", "#223311")
+			Color.new("search_fg", "#CCFF33")
+
+			Group.new("TelescopeTitle", colors.primary)
+			Group.new("TelescopeBorder", colors.secondary)
+			Group.new("@comment", colors.comment, nil, styles.bold + styles.italic)
+			Group.new("@string", colors.string, nil, styles.italic)
+
+			Group.new("@keyword", colors.noir_2)
+			Group.new("@keyword.function", colors.noir_2)
+			Group.new("@keyword.return", colors.noir_1)
+
+			Group.new("@operator", colors.noir_1)
+			Group.new("@keyword.operator", colors.noir_1)
+			-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
+			Group.new("@type.builtin", colors.noir_2)
+
+			Group.new("@variable", colors.symbol, nil, styles.italic)
+			Group.new("Hlargs", colors.hlargs, nil, styles.italic)
+
+			Group.new("@function", colors.noir_1, nil, styles.bold)
+			Group.new("@method", colors.noir_1, nil, styles.bold)
+
+			Group.new("@punctuation", colors.noir_4)
+			Group.new("@punctuation.bracket", colors.noir_4)
+			Group.new("@punctuation.delimiter", colors.noir_4)
+
+			Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
+
+			Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
+			Group.new("IncSearch", colors.search_fg, colors.search_bg)
+		end,
+	},
+
+	{
+		"lukas-reineke/headlines.nvim",
+		--     config = {
+		--       ft = { "go" },
+		--       go = {
+		--         query = vim.treesitter.parse_query(
+		--           "go",
+		--           [[
+		--             (function_declaration @headline)
+		--           ]]
+		--         ),
+		--         -- treesitter_language = "go",
+		--       },
+		--     },
+	},
+
 	{
 		"m-demare/hlargs.nvim",
 		event = "VeryLazy",
diff --git a/.config/nvim/lua/plugins/shelman-theme.lua b/.config/nvim/lua/plugins/shelman-theme.lua
index 5c55c5b..112653e 100644
--- a/.config/nvim/lua/plugins/shelman-theme.lua
+++ b/.config/nvim/lua/plugins/shelman-theme.lua
@@ -1,10 +1,11 @@
-return {
-	name = "shelman-theme",
-	dir = "~/.config/shelman-theme/current/neovim",
-	dev = true,
-	lazy = false,
-	priority = 1000,
-	config = function()
-		vim.cmd([[colorscheme shelman]])
-	end,
-}
+return {}
+-- return {
+-- 	name = "shelman-theme",
+-- 	dir = "~/.config/shelman-theme/current/neovim",
+-- 	dev = true,
+-- 	lazy = false,
+-- 	priority = 1000,
+-- 	config = function()
+-- 		vim.cmd([[colorscheme shelman]])
+-- 	end,
+-- }

From a2d6c90dcb7b62142765b5af236bdb7a7bfbe94c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 3 Jun 2023 11:46:30 +0200
Subject: [PATCH 065/656] add paru config

---
 .config/paru/paru.conf | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 .config/paru/paru.conf

diff --git a/.config/paru/paru.conf b/.config/paru/paru.conf
new file mode 100644
index 0000000..2d4fc99
--- /dev/null
+++ b/.config/paru/paru.conf
@@ -0,0 +1,8 @@
+Include = /etc/paru.conf
+
+
+[options]
+SkipReview
+
+[bin]
+Sudo = doas

From 4b264db47135ce951547b24b770ce596b7b5585c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 3 Jun 2023 12:44:31 +0200
Subject: [PATCH 066/656] zsh: zsh-tab goodness

---
 .lessfilter | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 .zshrc      |  9 +++++++++
 2 files changed, 55 insertions(+)
 create mode 100755 .lessfilter

diff --git a/.lessfilter b/.lessfilter
new file mode 100755
index 0000000..43d2942
--- /dev/null
+++ b/.lessfilter
@@ -0,0 +1,46 @@
+#! /usr/bin/env bash
+mime=$(file -Lbs --mime-type "$1")
+category=${mime%%/*}
+kind=${mime##*/}
+ext=${1##*.}
+if [ "$kind" = json ]; then
+	if [ "$(command -v jq)" ]; then
+		jq -Cr . "$1"
+	fi
+elif [ "$kind" = vnd.sqlite3 ]; then
+	if [ "$(command -v yes)" ] && [ "$(command -v sqlite3)" ] && [ "$(command -v bat)" ]; then
+		yes .q | sqlite3 "$1" | bat --color=always -plsql
+	fi
+# https://github.com/wofr06/lesspipe/pull/107
+elif [ -d "$1" ]; then
+	if [ "$(command -v exa)" ]; then
+		exa --git -hl --color=always --icons "$1"
+	fi
+# https://github.com/wofr06/lesspipe/pull/110
+elif [ "$kind" = pdf ]; then
+	if [ "$(command -v pdftotext)" ] && [ "$(command -v sed)" ]; then
+		pdftotext -q "$1" - | sed "s/\f/$(hr ─)\n/g"
+	fi
+# https://github.com/wofr06/lesspipe/pull/115
+elif [ "$kind" = rfc822 ]; then
+	if [ "$(command -v bat)" ]; then
+		bat --color=always -lEmail "$1"
+	fi
+# https://github.com/wofr06/lesspipe/pull/106
+elif [ "$category" = image ]; then
+	if [ "$(command -v chafa)" ]; then
+		chafa -f symbols "$1"
+	fi
+	if [ "$(command -v exiftool)" ]; then
+		exiftool "$1" | bat --color=always -plyaml
+	fi
+# https://github.com/wofr06/lesspipe/pull/117
+elif [ "$category" = text ]; then
+	if [ "$(command -v bat)" ]; then
+		bat --color=always "$1"
+	elif [ "$(command -v pygmentize)" ]; then
+		pygmentize "$1" | less
+	fi
+else
+	exit 1
+fi
diff --git a/.zshrc b/.zshrc
index 813d841..fde0e43 100644
--- a/.zshrc
+++ b/.zshrc
@@ -19,7 +19,14 @@ zi load zsh-users/zsh-history-substring-search
 zi ice wait lucid
 zi load Aloxaf/fzf-tab
 zi ice wait lucid
+zi load Freed-Wu/fzf-tab-source
+zi ice wait lucid
 
+## fzf-tab
+zstyle ':fzf-tab:*' fzf-bindings 'tab:accept'
+zstyle ':fzf-tab:*' continuous-trigger '/'
+zstyle ':fzf-tab:*' fzf-min-height 30
+ 
 ## History
 HISTSIZE=50000
 SAVEHIST=50000
@@ -106,6 +113,8 @@ export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
 
 ## Pager
 export LESS="--mouse --wheel-lines=1 -nRXF"
+export LESSCOLORIZER="bat"
+export LESSOPEN="|lesspipe.sh %s"
 export PAGER="bat"
 export BAT_PAGER="less -r"
 

From 4eee6eabfdb8206c01871a754551deec2713779f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 3 Jun 2023 13:06:08 +0200
Subject: [PATCH 067/656] zsh: emoji fun

---
 .zshrc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/.zshrc b/.zshrc
index fde0e43..d18bc83 100644
--- a/.zshrc
+++ b/.zshrc
@@ -22,6 +22,11 @@ zi ice wait lucid
 zi load Freed-Wu/fzf-tab-source
 zi ice wait lucid
 
+export EMOJI_CLI_FILTER="fzf-tmux -p 50%:fzf:peco:percol:fzy"
+export EMOJI_CLI_KEYBIND="^_"
+export EMOJI_CLI_USE_EMOJI="true"
+zi load b4b4r07/emoji-cli
+
 ## fzf-tab
 zstyle ':fzf-tab:*' fzf-bindings 'tab:accept'
 zstyle ':fzf-tab:*' continuous-trigger '/'

From 742b149306e4fdff78e0ab212f1fb4b66a3135d7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 4 Jun 2023 10:57:41 +0200
Subject: [PATCH 068/656] zshrc: enable kubecolor

---
 .zshrc | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/.zshrc b/.zshrc
index d18bc83..db93b9c 100644
--- a/.zshrc
+++ b/.zshrc
@@ -20,12 +20,6 @@ zi ice wait lucid
 zi load Aloxaf/fzf-tab
 zi ice wait lucid
 zi load Freed-Wu/fzf-tab-source
-zi ice wait lucid
-
-export EMOJI_CLI_FILTER="fzf-tmux -p 50%:fzf:peco:percol:fzy"
-export EMOJI_CLI_KEYBIND="^_"
-export EMOJI_CLI_USE_EMOJI="true"
-zi load b4b4r07/emoji-cli
 
 ## fzf-tab
 zstyle ':fzf-tab:*' fzf-bindings 'tab:accept'
@@ -214,6 +208,8 @@ if [ ! -f "${fpath[1]}/_kubectl" ]; then
   command -v kubectl >/dev/null 2>&1 && kubectl completion zsh > "${fpath[1]}/_kubectl"
 fi
 export PATH=$HOME/.krew/bin:$PATH
+alias kubectl=kubecolor
+compdef kubecolor=kubectl
 
 ## bazel
 #if [ ! -f "${fpath[1]}/_bazel" ]; then

From d9039fa3f6e1e28bbe502250816d242fd18527a3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 10:38:58 +0200
Subject: [PATCH 069/656] zsh: hello -sk ssh keys

---
 .zshrc | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/.zshrc b/.zshrc
index db93b9c..3ddb739 100644
--- a/.zshrc
+++ b/.zshrc
@@ -106,10 +106,6 @@ bindkey '^g' _jump
 bindkey '^_' _cwd_gitroot
 
 
-## Gnupg  / gpg / ssh / yubikey
-export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
-
-
 ## Pager
 export LESS="--mouse --wheel-lines=1 -nRXF"
 export LESSCOLORIZER="bat"

From a941385823e3f555859c7212cdee3ec9b19190f5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 12:18:49 +0200
Subject: [PATCH 070/656] ssh fixings

---
 .config/environment.d/ssh.conf         |  1 +
 .config/systemd/user/ssh-agent.service | 14 ++++++++++++++
 .ssh/config                            |  7 +------
 .ssh/rc                                |  2 +-
 .tmux.conf                             |  2 +-
 5 files changed, 18 insertions(+), 8 deletions(-)
 create mode 100644 .config/environment.d/ssh.conf
 create mode 100644 .config/systemd/user/ssh-agent.service

diff --git a/.config/environment.d/ssh.conf b/.config/environment.d/ssh.conf
new file mode 100644
index 0000000..bbfcca2
--- /dev/null
+++ b/.config/environment.d/ssh.conf
@@ -0,0 +1 @@
+SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/ssh-agent.socket
diff --git a/.config/systemd/user/ssh-agent.service b/.config/systemd/user/ssh-agent.service
new file mode 100644
index 0000000..9d71206
--- /dev/null
+++ b/.config/systemd/user/ssh-agent.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=SSH key agent
+
+[Service]
+Type=simple
+Restart=on-failure
+Environment=DISPLAY=:0
+Environment=WAYLAND_DISPLAY=wayland-0
+Environment=SSH_ASKPASS=/usr/bin/ksshaskpass
+Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
+ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
+
+[Install]
+WantedBy=default.target
diff --git a/.ssh/config b/.ssh/config
index d8b018d..981024c 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -1,4 +1,4 @@
-ForwardAgent yes
+ForwardAgent no
 ServerAliveInterval 15
 ServerAliveCountMax 3
 ControlMaster auto
@@ -19,15 +19,10 @@ PKCS11Provider /usr/lib/pkcs11/libtpm2_pkcs11.so
 Host 10.1.100.16
 Host dln-dev
 Hostname 10.1.100.16
-IdentityAgent ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh
 ForwardAgent yes
-ForwardX11 no
 ExitOnForwardFailure yes
 Compression yes
 LocalForward 127.0.0.1:3000 127.0.0.1:3000
 LocalForward 127.0.0.1:3011 127.0.0.1:3011
 LocalForward 127.0.0.1:8000 127.0.0.1:8000
 LocalForward 127.0.0.1:8080 127.0.0.1:8080
-# RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.extra
-RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh
-# RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.scdaemon ${XDG_RUNTIME_DIR}/gnupg/S.scdaemon
diff --git a/.ssh/rc b/.ssh/rc
index 7cdde35..61b9390 100755
--- a/.ssh/rc
+++ b/.ssh/rc
@@ -1,3 +1,3 @@
 if [[ -S "$SSH_AUTH_SOCK" && ! -h "$SSH_AUTH_SOCK" ]]; then
-    ln -sf "$SSH_AUTH_SOCK" $HOME/.ssh/ssh_auth_sock;
+  ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/ssh-agent.sock";
 fi
diff --git a/.tmux.conf b/.tmux.conf
index bb50935..637f407 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -17,7 +17,7 @@ set-option -g mouse on
 set -g set-clipboard on
 bind-key ] paste-buffer -p
 
-set -g update-environment "BUILDCOMMAND GOPACKAGESDRIVER XAUTHORITY DISPLAY WINDOWID SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION"
+set -g update-environment "BUILDCOMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION"
 set -g default-command zsh
 set -g history-limit 10000
 

From 3ae7467ed5d85a97baabc33ed59678e9d6a01879 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 12:20:24 +0200
Subject: [PATCH 071/656] zsh: colorful kubectl using grc

---
 .zshrc | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/.zshrc b/.zshrc
index 3ddb739..42b8c34 100644
--- a/.zshrc
+++ b/.zshrc
@@ -204,8 +204,7 @@ if [ ! -f "${fpath[1]}/_kubectl" ]; then
   command -v kubectl >/dev/null 2>&1 && kubectl completion zsh > "${fpath[1]}/_kubectl"
 fi
 export PATH=$HOME/.krew/bin:$PATH
-alias kubectl=kubecolor
-compdef kubecolor=kubectl
+alias kubectl='grc kubectl'
 
 ## bazel
 #if [ ! -f "${fpath[1]}/_bazel" ]; then
@@ -260,3 +259,10 @@ PROG=tea _CLI_ZSH_AUTOCOMPLETE_HACK=1 source "/home/dln/.config/tea/autocomplete
 ## AWS
 complete -o nospace -C /usr/bin/mcli mcli
 complete -C '/usr/bin/aws_completer' aws
+
+function _grc() {
+  shift words
+  (( CURRENT-- ))
+  _normal
+}
+compdef _grc grc

From fff394bf5e87b51e14bdb1752bd5b3a229fba279 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 12:20:52 +0200
Subject: [PATCH 072/656] zsh: add jujutsu completion

---
 .zshrc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.zshrc b/.zshrc
index 42b8c34..0ed5dd6 100644
--- a/.zshrc
+++ b/.zshrc
@@ -217,6 +217,9 @@ if [ ! -f "${fpath[1]}/_sl" ]; then
   curl -sLo "${fpath[1]}/_sl" https://github.com/facebook/sapling/raw/d6157db1ebc0868cf70805756e32541bd681bac2/eden/scm/contrib/zsh_completion_sl
 fi
 
+## jujutsu
+source <(jj util completion --zsh)
+
 ## Tekton cli
 if [ ! -f "${fpath[1]}/_tkn" ]; then
 	command -v tkn >/dev/null 2>&1 && tkn completion zsh > "${fpath[1]}/_tkn"

From b4db1c4887e7f7b61a61941421d474a2c1d29c0f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 12:49:24 +0200
Subject: [PATCH 073/656] ssh: reorder config to get defaults right

---
 .ssh/config | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/.ssh/config b/.ssh/config
index 981024c..341d13d 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -1,3 +1,14 @@
+Host 10.1.100.16
+Host dln-dev
+Hostname 10.1.100.16
+ForwardAgent yes
+ExitOnForwardFailure yes
+Compression yes
+LocalForward 127.0.0.1:3000 127.0.0.1:3000
+LocalForward 127.0.0.1:3011 127.0.0.1:3011
+LocalForward 127.0.0.1:8000 127.0.0.1:8000
+LocalForward 127.0.0.1:8080 127.0.0.1:8080
+
 ForwardAgent no
 ServerAliveInterval 15
 ServerAliveCountMax 3
@@ -15,14 +26,3 @@ Include ~/.ssh/private_config
 Host gitlab.com
 IdentityAgent /dev/null
 PKCS11Provider /usr/lib/pkcs11/libtpm2_pkcs11.so
-
-Host 10.1.100.16
-Host dln-dev
-Hostname 10.1.100.16
-ForwardAgent yes
-ExitOnForwardFailure yes
-Compression yes
-LocalForward 127.0.0.1:3000 127.0.0.1:3000
-LocalForward 127.0.0.1:3011 127.0.0.1:3011
-LocalForward 127.0.0.1:8000 127.0.0.1:8000
-LocalForward 127.0.0.1:8080 127.0.0.1:8080

From ebcced2c1238900b0b20e6f5b562ea217eb91cbb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 12:49:24 +0200
Subject: [PATCH 074/656] ssh: config to get defaults right

---
 .ssh/config | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/.ssh/config b/.ssh/config
index 341d13d..342b554 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -1,3 +1,16 @@
+ServerAliveInterval 15
+ServerAliveCountMax 3
+ControlMaster auto
+ControlPath ${XDG_RUNTIME_DIR}/ssh_control:%h:%p:%r
+ControlPersist 1200
+Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
+AddressFamily inet
+RequestTty yes
+PreferredAuthentications=publickey
+SendEnv LC_* LANG
+
+Include ~/.ssh/private_config
+
 Host 10.1.100.16
 Host dln-dev
 Hostname 10.1.100.16
@@ -9,20 +22,9 @@ LocalForward 127.0.0.1:3011 127.0.0.1:3011
 LocalForward 127.0.0.1:8000 127.0.0.1:8000
 LocalForward 127.0.0.1:8080 127.0.0.1:8080
 
-ForwardAgent no
-ServerAliveInterval 15
-ServerAliveCountMax 3
-ControlMaster auto
-ControlPath ~/.ssh/control:%h:%p:%r
-ControlPersist 1200
-Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
-AddressFamily inet
-RequestTty yes
-PreferredAuthentications=publickey
-SendEnv LC_* LANG
-
-Include ~/.ssh/private_config
-
 Host gitlab.com
 IdentityAgent /dev/null
 PKCS11Provider /usr/lib/pkcs11/libtpm2_pkcs11.so
+
+Host *
+ForwardAgent no

From 571c3503796221677c4d45fcb526dec67a71f72e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 13:02:35 +0200
Subject: [PATCH 075/656] ssh fixings

---
 .ssh/rc    | 2 +-
 .tmux.conf | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/.ssh/rc b/.ssh/rc
index 61b9390..f782092 100755
--- a/.ssh/rc
+++ b/.ssh/rc
@@ -1,3 +1,3 @@
 if [[ -S "$SSH_AUTH_SOCK" && ! -h "$SSH_AUTH_SOCK" ]]; then
-  ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/ssh-agent.sock";
+  ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/ssh-agent.socket";
 fi
diff --git a/.tmux.conf b/.tmux.conf
index 637f407..e1ca4e7 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -17,6 +17,7 @@ set-option -g mouse on
 set -g set-clipboard on
 bind-key ] paste-buffer -p
 
+set-environment -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/ssh-agent.socket"
 set -g update-environment "BUILDCOMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION"
 set -g default-command zsh
 set -g history-limit 10000

From e969503d7aa2ea8cc8ab291e63c1fe663f11e1b9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 16:20:27 +0200
Subject: [PATCH 076/656] zsh: set WORDCHARS for better delimiters

---
 .zshrc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.zshrc b/.zshrc
index 0ed5dd6..722805f 100644
--- a/.zshrc
+++ b/.zshrc
@@ -44,6 +44,7 @@ setopt hist_subst_pattern
 setopt hist_verify
 setopt share_history
 export HISTORY_IGNORE="(ls *|cd *|rm *|pwd|reboot|exit|e *|*AWS*|*SECRET*|*PASSWORD*|*TOKEN*|*API*|*KEY*|*PASS*|*SECRETS*|*SECRET_KEY*|*SECRET_TOKEN*|*SECRET_KEY_BASE*|*SECRET_TOKEN_BASE*)"
+export WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
 
 
 ## zsh settings

From 4120076cb0b5960d262e7aa23a426fbf4b21ff04 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 16:29:42 +0200
Subject: [PATCH 077/656] ssh fixings

---
 .config/environment.d/ssh.conf         | 1 +
 .config/systemd/user/ssh-agent.service | 1 +
 2 files changed, 2 insertions(+)

diff --git a/.config/environment.d/ssh.conf b/.config/environment.d/ssh.conf
index bbfcca2..de556f5 100644
--- a/.config/environment.d/ssh.conf
+++ b/.config/environment.d/ssh.conf
@@ -1 +1,2 @@
+SSH_ASKPASS=/usr/bin/ksshaskpass
 SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/ssh-agent.socket
diff --git a/.config/systemd/user/ssh-agent.service b/.config/systemd/user/ssh-agent.service
index 9d71206..c8187e0 100644
--- a/.config/systemd/user/ssh-agent.service
+++ b/.config/systemd/user/ssh-agent.service
@@ -6,6 +6,7 @@ Type=simple
 Restart=on-failure
 Environment=DISPLAY=:0
 Environment=WAYLAND_DISPLAY=wayland-0
+Environment=QT_QPA_PLATFORM=wayland
 Environment=SSH_ASKPASS=/usr/bin/ksshaskpass
 Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
 ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

From 85b4158cf676641c009e89bacb877b53d3c12b65 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 6 Jun 2023 16:31:10 +0200
Subject: [PATCH 078/656] zsh: better completion for jj

---
 .zshrc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index 722805f..77ac0ca 100644
--- a/.zshrc
+++ b/.zshrc
@@ -219,7 +219,9 @@ if [ ! -f "${fpath[1]}/_sl" ]; then
 fi
 
 ## jujutsu
-source <(jj util completion --zsh)
+if [ ! -f "${fpath[1]}/_jj" ]; then
+	command -v jj >/dev/null 2>&1 && jj util completion --zsh > "${fpath[1]}/_jj"
+fi
 
 ## Tekton cli
 if [ ! -f "${fpath[1]}/_tkn" ]; then

From 91a3eaed94a9af143e4edffd1659f3dbe52a8225 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 8 Jun 2023 09:51:36 +0200
Subject: [PATCH 079/656] Add jujtusu config

---
 .jjconfig.toml | 7 +++++++
 1 file changed, 7 insertions(+)
 create mode 100644 .jjconfig.toml

diff --git a/.jjconfig.toml b/.jjconfig.toml
new file mode 100644
index 0000000..521bd0b
--- /dev/null
+++ b/.jjconfig.toml
@@ -0,0 +1,7 @@
+[user]
+name = "Daniel Lundin"
+email = "daniel@arity.se"
+
+[ui]
+default-command = "log"
+diff-editor = "vimdiff"

From 8f8147374047b719dfa9445e26d26b404c4eb791 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 8 Jun 2023 21:02:52 +0200
Subject: [PATCH 080/656] Fix up the tmux helpers for jj

---
 .zshrc               | 2 +-
 bin/tmux-edit-helper | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/.zshrc b/.zshrc
index 77ac0ca..2830c55 100644
--- a/.zshrc
+++ b/.zshrc
@@ -90,7 +90,7 @@ typeset -gaU chpwd_functions
 chpwd_functions+=fre_chpwd
 
 _cwd_gitroot() {
-  _gitroot=$(git rev-parse --show-toplevel 2>/dev/null || sl root 2>/dev/null || pwd)
+  _gitroot=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
   _dir=$((echo "$_gitroot" && fd -td . "$_gitroot") | fzf-tmux -p 90%,40% -y 0)
   [ -n "$_dir" ] && cd $_dir
   zle && zle redraw-prompt
diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper
index efe3e07..2a12394 100755
--- a/bin/tmux-edit-helper
+++ b/bin/tmux-edit-helper
@@ -1,15 +1,17 @@
 #!/usr/bin/env bash
 set -fe -o pipefail
 
-eval "$(direnv export bash)"
+eval "$(direnv export bash 2>/dev/null)"
+
+PATH="$HOME/bin:$PATH"
 
 if [ -n "$1" ]; then
 	_file=$(readlink -f "$@")
 else
 	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0"}
-	_root=$(git rev-parse --show-toplevel 2>/dev/null || sl root 2>/dev/null || pwd)
+	_root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
 	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
-	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .sl --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
+	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
 	_file="${_root}/${_file}"
 	fre --store_name "$_store" --add "$_file"
 fi

From 2c730982ed6fdfaff8ec3047d93bbc56c905d710 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 13 Jun 2023 22:57:25 +0200
Subject: [PATCH 081/656] ssh fixings

---
 .config/autostart/gnome-keyring-ssh.desktop | 157 ++++++++++++++++++++
 .config/environment.d/ssh.conf              |   3 +-
 .config/systemd/user/ssh-agent.service      |  15 --
 3 files changed, 158 insertions(+), 17 deletions(-)
 create mode 100644 .config/autostart/gnome-keyring-ssh.desktop
 delete mode 100644 .config/systemd/user/ssh-agent.service

diff --git a/.config/autostart/gnome-keyring-ssh.desktop b/.config/autostart/gnome-keyring-ssh.desktop
new file mode 100644
index 0000000..d0cbed2
--- /dev/null
+++ b/.config/autostart/gnome-keyring-ssh.desktop
@@ -0,0 +1,157 @@
+[Desktop Entry]
+Type=Application
+Name[af]=SSH-sleutelagent
+Name[ar]=عميل مفاتيح SSH
+Name[as]=SSH কি সহায়ক
+Name[ast]=Axente de claves SSH
+Name[be]=SSH-агент ключоў
+Name[bg]=Агентът на SSH за ключове
+Name[bn]=SSH কী এজেন্ট
+Name[bn_IN]=SSH কি এজেন্ট
+Name[bs]=Agent za SSH ključeve
+Name[ca]=Agent de claus SSH
+Name[ca@valencia]=Agent de claus SSH
+Name[cs]=Agent klíčů SSH
+Name[da]=SSH-nøgleagent
+Name[de]=SSH-Schlüsselagent
+Name[el]=Πράκτορας κλειδιού SSH
+Name[en_GB]=SSH Key Agent
+Name[eo]=SSH-ŝlosila agento
+Name[es]=Agente de claves SSH
+Name[et]=SSH-võtmete agent
+Name[eu]=SSH gako-agentea
+Name[fa]=عامل کلید SSH
+Name[fi]=SSH-avainten agentti
+Name[fr]=Agent de clés SSH
+Name[fur]=Agjent clâfs SSH
+Name[gd]=Àidseant iuchair SSH
+Name[gl]=Axente de chave SSH
+Name[gu]=SSH કી ઍજન્ટ
+Name[he]=סוכן מפתחות SSH
+Name[hi]=AFS कुँजी प्रतिनिधि
+Name[hr]=Agent SSH ključa
+Name[hu]=SSH-kulcs ügynök
+Name[id]=Agen Kunci SSH
+Name[it]=Agente chiavi SSH
+Name[ja]=SSH 鍵エージェント
+Name[kk]=SSH кілттер агенті
+Name[km]=ភ្នាក់ងារ​សោ SSH
+Name[kn]=SSH ಕೀಲಿ ಮಧ್ಯವರ್ತಿ
+Name[ko]=SSH 키 에이전트
+Name[lt]=SSH raktų tarnyba
+Name[lv]=SSH atslēgu aģents
+Name[mjw]=SSH Key Agent
+Name[mk]=Агент за SSH клучеви
+Name[ml]=എസ്എസ്എച് കീ ഏജന്റ്
+Name[mr]=SSH कि एजंट
+Name[ms]=Ejen Kunci SSH
+Name[nb]=SSH-nøkkelagent
+Name[nl]=SSH-sleutelagent
+Name[nn]=Nøkkelagent for SSH
+Name[oc]=Agent de claus SSH
+Name[or]=SSH କି ସଦସ୍ୟ
+Name[pa]=SSH ਕੁੰਜੀ ਏਜੰਟ
+Name[pl]=Agent kluczy SSH
+Name[pt]=Agente de chaves SSH
+Name[pt_BR]=Agente de chaves SSH
+Name[ro]=Agent pentru chei SSH
+Name[ru]=Агент ключей SSH
+Name[sk]=Agent kľúčov SSH
+Name[sl]=Agent ključev SSH
+Name[sr]=Агент за ССХ кључеве
+Name[sr@latin]=Agent za SSH ključeve
+Name[sv]=SSH-nyckelagent
+Name[ta]=SSH முகவர்
+Name[te]=SSH కీ వాహకము
+Name[th]=เอเจนต์กุญแจ SSH
+Name[tr]=SSH Anahtar Aracı
+Name[ug]=SSH  ئاچقۇچ ياردەمچىسى
+Name[uk]=Агент ключів SSH
+Name[vi]=Đại diện khóa SSH
+Name[zh_CN]=SSH 密钥代理
+Name[zh_HK]=SSH 密碼匙代理程式
+Name[zh_TW]=SSH 金鑰代理程式
+Name=SSH Key Agent
+Comment[af]=GNOME-sleutelring: SSH-agent
+Comment[ar]=حلقة مفاتيح جنوم: عميل SSH
+Comment[as]=GNOME Keyring: SSH সহায়ক
+Comment[ast]=Depósitu de claves de GNOME: axente SSH
+Comment[be]=Вязкі ключоў GNOME: SSH-агент
+Comment[bg]=Ключодържател на GNOME: агент на SSH
+Comment[bn]=GNOME কী রিং: SSH এজেন্ট
+Comment[bn_IN]=GNOME Keyring: SSH এজেন্ট
+Comment[bs]=Gnomovi privjesci: SSH agent
+Comment[ca]=Anell de claus del GNOME: agent SSH
+Comment[ca@valencia]=Anell de claus del GNOME: agent SSH
+Comment[cs]=Klíčenka GNOME: Agent SSH
+Comment[da]=GNOME-nøgleringsdæmon: SSH-agent
+Comment[de]=GNOME-Schlüsselbunddienst: SSH-Agent
+Comment[el]=Κλειδοθήκη GNOME: Πράκτορας SSH
+Comment[en_GB]=GNOME Keyring: SSH Agent
+Comment[eo]=GNOME Ŝlosilaro: SSH-agento
+Comment[es]=Depósito de claves de GNOME: agente SSH
+Comment[et]=GNOME võtmerõngas: SSH-agent
+Comment[eu]=GNOMEren gako-sorta: SSH agentea
+Comment[fa]=دسته‌کلید گنوم: عامل SSH
+Comment[fi]=Gnomen avainnippu: SSH-agentti
+Comment[fr]=Trousseau de clés de GNOME : agent SSH
+Comment[fur]=Puarteclâfs di GNOME: agjent SSH
+Comment[gd]=Dul-iuchrach: Àidseant SSH
+Comment[gl]=GNOME Keyring: Axente SSH
+Comment[gu]=GNOME કીરીંગ: SSH ઍજન્ટ
+Comment[he]=קבוצת מפתחות של GNOME: סוכן SSH
+Comment[hi]=गनोम कीरिंग: SSH प्रतिनिधि
+Comment[hr]=GNOME skup ključeva: SSH agent
+Comment[hu]=GNOME kulcstartó – SSH-ügynök
+Comment[id]=Ring Kunci GNOME: Agen SSH
+Comment[it]=Portachiavi di GNOME: agente SSH
+Comment[ja]=GNOME キーリング: SSH エージェント
+Comment[kk]=GNOME Keyring: SSH агенті
+Comment[km]=GNOME Keyring ៖ ភ្នាក់ងារ SSH
+Comment[kn]=GNOME ಕೀಲಿಗೊಂಚಲು: SSH ಮಧ್ಯವರ್ತಿ
+Comment[ko]=그놈 키 모음: SSH 에이전트
+Comment[lt]=GNOME raktinė: SSH tarnyba
+Comment[lv]=GNOME atslēgu saišķis — SSH aģents
+Comment[mjw]=GNOME Keyring: SSH Agent
+Comment[mk]=Приврзок на GNOME: SSH агент
+Comment[ml]=ഗ്നോം കീറിങ്: എസ്എസ്എച് ഏജന്റ്
+Comment[mr]=GNOME किरिंग: SSH एजंट
+Comment[ms]=Gelang Kunci GNOME: Ejen SSH
+Comment[nb]=GNOME nøkkelring: SSH-agent
+Comment[ne]=जिनोम किरिङ : SSH एजेन्ट
+Comment[nl]=Sleutelbos-service: SSH-agent
+Comment[nn]=GNOME Nøkkelring: SSH-agent
+Comment[oc]=Trossèl de claus GNOME : agent SSH
+Comment[or]=GNOME କି ରିଙ୍ଗ: SSH ସଦସ୍ୟ
+Comment[pa]=ਗਨੋਮ ਕੀਰਿੰਗ: SSH ਏਜੰਟ
+Comment[pl]=Baza kluczy dla środowiska GNOME: agent SSH
+Comment[pt]=GNOME Keyring: agente SSH
+Comment[pt_BR]=Chaveiro do GNOME: Agente SSH
+Comment[ro]=Inelul de chei GNOME: Agent SSH
+Comment[ru]=Связка ключей GNOME: SSH-агент
+Comment[sk]=SSH agent zväzku kľúčov GNOME
+Comment[sl]=Zbirka ključev GNOME: agent SSH
+Comment[sr]=Гномови привесци: ССХ агент
+Comment[sr@latin]=Gnomovi privesci: SSH agent
+Comment[sv]=GNOME-nyckelring: SSH-agent
+Comment[ta]=GNOME கீரிங்: SSH முகவர்
+Comment[te]=GNOME కీరింగ్: SSH వాహకం
+Comment[th]=พวงกุญแจของ GNOME: เอเจนต์ SSH
+Comment[tr]=GNOME Anahtarlığı: SSH Aracı
+Comment[ug]=گىنوم ئاچقۇچ ھالقىسى:SSH  ياردەمچىسى
+Comment[uk]=Служба в'язки ключів GNOME: агент SSH
+Comment[vi]=Chùm chìa khóa GNOME: Đại diện SSH
+Comment[zh_CN]=GNOME 密钥环:SSH 代理
+Comment[zh_HK]=GNOME 密碼匙圈:SSH 代理程式
+Comment[zh_TW]=GNOME 鑰匙圈:SSH 代理程式
+Comment=GNOME Keyring: SSH Agent
+Exec=/usr/bin/gnome-keyring-daemon --start --components=ssh
+OnlyShowIn=GNOME;Unity;MATE;Cinnamon;
+X-GNOME-Autostart-Phase=PreDisplayServer
+X-GNOME-AutoRestart=false
+X-GNOME-Autostart-Notify=true
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gnome-keyring
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version=42.1
+Hidden=true
diff --git a/.config/environment.d/ssh.conf b/.config/environment.d/ssh.conf
index de556f5..cae7205 100644
--- a/.config/environment.d/ssh.conf
+++ b/.config/environment.d/ssh.conf
@@ -1,2 +1 @@
-SSH_ASKPASS=/usr/bin/ksshaskpass
-SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/ssh-agent.socket
+SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gcr/ssh
diff --git a/.config/systemd/user/ssh-agent.service b/.config/systemd/user/ssh-agent.service
deleted file mode 100644
index c8187e0..0000000
--- a/.config/systemd/user/ssh-agent.service
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=SSH key agent
-
-[Service]
-Type=simple
-Restart=on-failure
-Environment=DISPLAY=:0
-Environment=WAYLAND_DISPLAY=wayland-0
-Environment=QT_QPA_PLATFORM=wayland
-Environment=SSH_ASKPASS=/usr/bin/ksshaskpass
-Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
-ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
-
-[Install]
-WantedBy=default.target

From 7821afe73f83ba89ec2a6c19bfb18109b1f80315 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 14 Jun 2023 09:46:47 +0200
Subject: [PATCH 082/656] ssh: use same agent path everywhere so tmux stays
 sane

---
 .ssh/rc    | 2 +-
 .tmux.conf | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.ssh/rc b/.ssh/rc
index f782092..556f229 100755
--- a/.ssh/rc
+++ b/.ssh/rc
@@ -1,3 +1,3 @@
 if [[ -S "$SSH_AUTH_SOCK" && ! -h "$SSH_AUTH_SOCK" ]]; then
-  ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/ssh-agent.socket";
+  ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/gcr/ssh";
 fi
diff --git a/.tmux.conf b/.tmux.conf
index e1ca4e7..1d88b6e 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -17,7 +17,7 @@ set-option -g mouse on
 set -g set-clipboard on
 bind-key ] paste-buffer -p
 
-set-environment -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/ssh-agent.socket"
+set-environment -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/gcr/ssh"
 set -g update-environment "BUILDCOMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION"
 set -g default-command zsh
 set -g history-limit 10000

From 5c5c22a42271ec050d595224c13792efd37c9223 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 14 Jun 2023 09:47:41 +0200
Subject: [PATCH 083/656] git/jj: change default email

---
 .gitconfig     | 2 +-
 .jjconfig.toml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index f7a8586..22e7481 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -92,7 +92,7 @@ gpgsign = false
 
 [user]
 name = Daniel Lundin
-email = daniel@arity.se
+email = dln@arity.se
 
 [init]
 defaultBranch = main
diff --git a/.jjconfig.toml b/.jjconfig.toml
index 521bd0b..c1b5bb8 100644
--- a/.jjconfig.toml
+++ b/.jjconfig.toml
@@ -1,6 +1,6 @@
 [user]
 name = "Daniel Lundin"
-email = "daniel@arity.se"
+email = "dln@arity.se"
 
 [ui]
 default-command = "log"

From 6d12bce85fe29c636ef7c28d11b6fbbb546a2bcb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 14 Jun 2023 09:48:19 +0200
Subject: [PATCH 084/656] wezterm: give webgpu a chance

---
 .config/wezterm/wezterm.lua | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 2deeafe..b4b0514 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -39,8 +39,8 @@ return {
 			font = font_with_fallback("Iosevka Term SS09", { weight = "DemiBold" }),
 		},
 	},
-	-- front_end = "WebGpu",
-	-- webgpu_power_preference = "HighPerformance",
+	front_end = "WebGpu",
+	webgpu_power_preference = "HighPerformance",
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
 	allow_square_glyphs_to_overflow_width = "Always",

From 61e5bb9aaf675c3a794bfab9dcb0137c0e0e486f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 14 Jun 2023 11:31:18 +0200
Subject: [PATCH 085/656] wezterm: appearance

---
 .config/wezterm/wezterm.lua | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index b4b0514..de79e40 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -51,22 +51,12 @@ return {
 	initial_rows = 45,
 	use_resize_increments = true,
 	adjust_window_size_when_changing_font_size = false,
-	window_decorations = "RESIZE",
-	window_background_opacity = 1.0,
 	window_padding = {
 		left = 0,
 		right = 0,
 		top = 0,
 		bottom = 0,
 	},
-	colors = {
-		tab_bar = {
-			active_tab = {
-				fg_color = "#e0e0e0",
-				bg_color = "#374f66",
-			},
-		},
-	},
 	default_cursor_style = "SteadyBlock",
 	cursor_thickness = "3px",
 	cursor_blink_rate = 0,

From dbdc1b99da862e9f5b1d752760f81f51642b6ff3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 14 Jun 2023 11:31:51 +0200
Subject: [PATCH 086/656] ssh: mkdir for the ssh-agent

---
 .ssh/rc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.ssh/rc b/.ssh/rc
index 556f229..eb38e90 100755
--- a/.ssh/rc
+++ b/.ssh/rc
@@ -1,3 +1,4 @@
 if [[ -S "$SSH_AUTH_SOCK" && ! -h "$SSH_AUTH_SOCK" ]]; then
+  mkdir -p "${XDG_RUNTIME_DIR}/gcr";
   ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/gcr/ssh";
 fi

From 50c229fd5b10c5d48501955311a48ce211619838 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 21 Jun 2023 14:07:22 +0200
Subject: [PATCH 087/656] zsh: add cargo bin to PATH

---
 .zshrc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index 2830c55..1e0a5a4 100644
--- a/.zshrc
+++ b/.zshrc
@@ -65,7 +65,7 @@ setopt null_glob
 export LC_ALL=en_US.UTF-8
 export LC_ALL=en_DK.UTF-8
 
-export PATH=$HOME/bin:$PATH
+export PATH=$HOME/bin:$HOME/.cargo/bin:$PATH
 
 redraw-prompt() {
     local precmd

From a3d1ac98e288b1699935681cc35298c0ee4a7f90 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 24 Jun 2023 14:15:06 +0200
Subject: [PATCH 088/656] jj: use scm-diff-editor from git-branchless

---
 .jjconfig.toml | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/.jjconfig.toml b/.jjconfig.toml
index c1b5bb8..a7f9752 100644
--- a/.jjconfig.toml
+++ b/.jjconfig.toml
@@ -3,5 +3,13 @@ name = "Daniel Lundin"
 email = "dln@arity.se"
 
 [ui]
-default-command = "log"
-diff-editor = "vimdiff"
+default-command = "l"
+diff-editor = ["scm-diff-editor", "--dir-diff", "$left", "$right"]
+pager = ["delta", "--line-numbers", "--max-line-distance=0.9"]
+
+[aliases]
+l = ["log", "--ignore-working-copy", "-r", "(main..@): | (main..@)-"]
+la = ["log", "--ignore-working-copy", "-r", "all()"]
+b = ["branch", "list"]
+n = ["new", "main"]
+d = ["diff"]

From cbc86ca7fc2e0288c79f4b06c0bca49af46a88ed Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 24 Jun 2023 14:15:28 +0200
Subject: [PATCH 089/656] zsh: completion cache

---
 .zshrc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.zshrc b/.zshrc
index 1e0a5a4..6c7135a 100644
--- a/.zshrc
+++ b/.zshrc
@@ -21,6 +21,9 @@ zi load Aloxaf/fzf-tab
 zi ice wait lucid
 zi load Freed-Wu/fzf-tab-source
 
+zstyle ':completion:*' use-cache on
+zstyle ':completion:*' cache-path ~/.zsh/cache
+
 ## fzf-tab
 zstyle ':fzf-tab:*' fzf-bindings 'tab:accept'
 zstyle ':fzf-tab:*' continuous-trigger '/'

From c35583110367410e38de606bf7917377f9e979f8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 24 Jun 2023 14:17:06 +0200
Subject: [PATCH 090/656] zsh: configure nix

---
 .zshrc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.zshrc b/.zshrc
index 6c7135a..7c5d33d 100644
--- a/.zshrc
+++ b/.zshrc
@@ -198,6 +198,9 @@ autoload -Uz compdef
 autoload -U +X bashcompinit && bashcompinit
 autoload -U +X compinit && compinit
 
+## Nix
+export PATH=$HOME/.nix-profile/bin:$PATH
+
 ## eksctl
 if [ ! -f "${fpath[1]}/_eksctl" ]; then
 	command -v eksctl >/dev/null 2>&1 && eksctl completion zsh > "${fpath[1]}/_eksctl"

From 9d0eefb5dcb2cdfd1e05dee0a5165d975d479f88 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 24 Jun 2023 14:18:05 +0200
Subject: [PATCH 091/656] zsh: remove unused tekton completion

---
 .zshrc | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/.zshrc b/.zshrc
index 7c5d33d..a632bfb 100644
--- a/.zshrc
+++ b/.zshrc
@@ -229,11 +229,6 @@ if [ ! -f "${fpath[1]}/_jj" ]; then
 	command -v jj >/dev/null 2>&1 && jj util completion --zsh > "${fpath[1]}/_jj"
 fi
 
-## Tekton cli
-if [ ! -f "${fpath[1]}/_tkn" ]; then
-	command -v tkn >/dev/null 2>&1 && tkn completion zsh > "${fpath[1]}/_tkn"
-fi
-
 ## kapp
 if [ ! -f "${fpath[1]}/_kapp" ]; then
 	command -v kapp >/dev/null 2>&1 && kapp completion zsh --tty=false > "${fpath[1]}/_kapp"

From 489159f23bf3ea4579dab52fabbaba4e6fbc93ac Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 12:40:29 +0200
Subject: [PATCH 092/656] wezterm: font goodness

---
 .config/wezterm/wezterm.lua | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index de79e40..56bc9e4 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -31,9 +31,19 @@ return {
 		},
 		{
 			italic = true,
-			intensity = "Bold",
+			intensity = "Half",
 			font = font_with_fallback("Iosevka Term SS15", { weight = "ExtraLight", italic = true }),
 		},
+		{
+			italic = true,
+			intensity = "Bold",
+			font = font_with_fallback("Iosevka Term Curly Slab Ex", { weight = "Regular", italic = true }),
+		},
+		{
+			reverse = true,
+			intensity = "Bold",
+			font = font_with_fallback("Iosevka Term SS09", { weight = "Bold" }),
+		},
 		{
 			intensity = "Bold",
 			font = font_with_fallback("Iosevka Term SS09", { weight = "DemiBold" }),

From 8e9e6ef30eae74e58290d46f784ec99e437ff294 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 12:40:48 +0200
Subject: [PATCH 093/656] Add test-term script

---
 bin/test-term.sh | 169 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 169 insertions(+)
 create mode 100755 bin/test-term.sh

diff --git a/bin/test-term.sh b/bin/test-term.sh
new file mode 100755
index 0000000..2b49fc6
--- /dev/null
+++ b/bin/test-term.sh
@@ -0,0 +1,169 @@
+echo -e '\e[0mnormal\e[0m'
+echo -e '\e[2mdim\e[0m'
+
+echo -e '\e[1mbold\e[0m'
+
+echo -e '\e[3mitalic\e[0m'
+echo -e '\e[2;3mdim italic\e[0m'
+echo -e '\e[1;3mbold italic\e[0m'
+
+echo
+echo -e '\e[4munderline\e[24m'
+echo -e '\e[3;4mitalic underline\e[0m'
+echo -e '\e[4:1mthis is also underline \e[4:0m'
+echo -e '\e[21mdouble underline \e[24m'
+echo -e '\e[4:2mthis is also double underline \e[4:0m'
+echo -e '\e[4:3mcurly underline \e[4:0m'
+echo -e '\e[21m\e[58;5;42m256-color underline \e[59m\e[24m'
+echo -e '\e[4:3m\e[58;2;240;143;104mtruecolor underline  (*)\e[59m\e[4:0m'
+echo -e "\x1b[58:2::255:0:0m\x1b[4:1msingle underline \x1b[0m"
+echo -e "\x1b[4:2mdouble underline \x1b[58:2::255:0:0m and with color\x1b[0m"
+echo -e "\x1b[4:3mcurly underline \x1b[58:2::255:0:0m and with color\x1b[0m"
+echo -e "\x1b[4:4mdotted underline \x1b[58:2::255:0:0m and with color\x1b[0m"
+echo -e "\x1b[4:5mdashed underline \x1b[58:2::255:0:0m and with color\x1b[0m"
+
+
+
+echo
+echo -e '\e[7mreverse\e[27m'
+echo -e '\e[7;1mreverse bold\e[0m'
+echo -e '\e[7;3mreverse italic\e[0m'
+echo -e '\e[7;2mreverse dim\e[0m'
+echo -e '\e[7;2;1mreverse dim italic\e[0m'
+
+echo
+echo -e '\e[5mblink \e[25m'
+echo -e '\e[8minvisible\e[28m <- invisible (but copy-pasteable)'
+echo -e '\e[9mstrikethrough\e[29m'
+echo -e '\e[53moverline \e[55m'
+echo -e '\e[51mframed \e[0m'
+echo -e '\e[52mencircled \e[0m'
+
+echo -e '\e[31mred\e[39m'
+echo -e '\e[91mbright red\e[39m'
+echo -e '\e[38:5:42m256-color, de jure standard (ITU-T T.416)\e[39m'
+echo -e '\e[38;5;42m256-color, de facto standard (commonly used)\e[39m'
+echo -e '\e[38:2::240:143:104mtruecolor, de jure standard (ITU-T T.416) \e[39m'
+echo -e '\e[38;2;240;143;104mtruecolor, de facto standard (commonly used)\e[39m'
+
+echo -e '\e[46mcyan background\e[49m'
+echo -e '\e[106mbright cyan background\e[49m'
+echo -e '\e[48:5:42m256-color background, de jure standard (ITU-T T.416)\e[49m'
+echo -e '\e[48;5;42m256-color background, de facto standard (commonly used)\e[49m'
+echo -e '\e[48:2::240:143:104mtruecolor background, de jure standard (ITU-T T.416) \e[49m'
+echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format (might be removed at some point)\e[49m'
+echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[49m'
+
+
+echo
+echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷"
+
+echo
+echo "Ligatures:"
+echo "-<< -< -<- <-- <--- <<- <- -> ->> --> ---> ->- >- >>- <-> <--> <---> <----> <!--"
+echo "=<< =< =<= <== <=== <<= <= => =>> ==> ===> =>= >= >>= <=> <==> <===> <====> <!---"
+echo "[| |] {| |} <=< >=> <~~ <~ ~> ~~> :: ::: \/ /\ == != /= ~= <> === !== =/= =!= :>"
+echo ":= :- :+ <* <*> *> <| <|> |> <. <.> .> +: -: =: <***> __ (* comm *) ++ +++ |- -|"
+
+echo 
+echo 24-bit colors:
+
+# This file was originally taken from iterm2 https://github.com/gnachman/iTerm2/blob/master/tests/24-bit-color.sh
+#
+#   This file echoes a bunch of 24-bit color codes
+#   to the terminal to demonstrate its functionality.
+#   The foreground escape sequence is ^[38;2;<r>;<g>;<b>m
+#   The background escape sequence is ^[48;2;<r>;<g>;<b>m
+#   <r> <g> <b> range from 0 to 255 inclusive.
+#   The escape sequence ^[0m returns output to default
+
+setBackgroundColor()
+{
+    #printf '\x1bPtmux;\x1b\x1b[48;2;%s;%s;%sm' $1 $2 $3
+    printf '\x1b[48;2;%s;%s;%sm' $1 $2 $3
+}
+
+resetOutput()
+{
+    echo -en "\x1b[0m\n"
+}
+
+# Gives a color $1/255 % along HSV
+# Who knows what happens when $1 is outside 0-255
+# Echoes "$red $green $blue" where
+# $red $green and $blue are integers
+# ranging between 0 and 255 inclusive
+rainbowColor()
+{ 
+    let h=$1/43
+    let f=$1-43*$h
+    let t=$f*255/43
+    let q=255-t
+
+    if [ $h -eq 0 ]
+    then
+        echo "255 $t 0"
+    elif [ $h -eq 1 ]
+    then
+        echo "$q 255 0"
+    elif [ $h -eq 2 ]
+    then
+        echo "0 255 $t"
+    elif [ $h -eq 3 ]
+    then
+        echo "0 $q 255"
+    elif [ $h -eq 4 ]
+    then
+        echo "$t 0 255"
+    elif [ $h -eq 5 ]
+    then
+        echo "255 0 $q"
+    else
+        # execution should never reach here
+        echo "0 0 0"
+    fi
+}
+
+for i in `seq 0 127`; do
+    setBackgroundColor $i 0 0
+    echo -en " "
+done
+resetOutput
+for i in `seq 255 -1 128`; do
+    setBackgroundColor $i 0 0
+    echo -en " "
+done
+resetOutput
+
+for i in `seq 0 127`; do
+    setBackgroundColor 0 $i 0
+    echo -n " "
+done
+resetOutput
+for i in `seq 255 -1 128`; do
+    setBackgroundColor 0 $i 0
+    echo -n " "
+done
+resetOutput
+
+for i in `seq 0 127`; do
+    setBackgroundColor 0 0 $i
+    echo -n " "
+done
+resetOutput
+for i in `seq 255 -1 128`; do
+    setBackgroundColor 0 0 $i
+    echo -n " "
+done
+resetOutput
+
+for i in `seq 0 127`; do
+    setBackgroundColor `rainbowColor $i`
+    echo -n " "
+done
+resetOutput
+for i in `seq 255 -1 128`; do
+    setBackgroundColor `rainbowColor $i`
+    echo -n " "
+done
+resetOutput

From 7ef81bb2eab35584d6d351cfced9d009d7749f1b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 13:35:22 +0200
Subject: [PATCH 094/656] starship: proper weights

---
 .config/starship.toml | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/.config/starship.toml b/.config/starship.toml
index ab1eeda..ccbfb7a 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -10,12 +10,20 @@ $git_branch\
 $git_commit\
 $git_state\
 $git_status\
+$nix_shell\
 ($character)\
 """
 
 right_format = """\
 """
 
+[nix_shell]
+disabled = true
+impure_msg = '[impure shell](bold red)'
+pure_msg = '[pure shell](bold green)'
+unknown_msg = '[unknown shell](bold yellow)'
+format = 'via [☃️ $state( \($name\))](bold blue) '
+
 [env_var.TMUX_WINDOW]
 default = ""
 format = '[ $env_value ]($style)[](fg:#d1002f) '
@@ -38,7 +46,7 @@ disabled = true
 fish_style_pwd_dir_length = 1
 truncation_length = 1
 truncate_to_repo = false
-style = "italic bold"
+style = "italic dimmed"
 
 [git_branch]
 format = "[$symbol$branch]($style)"
@@ -60,7 +68,7 @@ style = "dimmed"
 
 [hostname]
 ssh_only = false
-format =  "[$hostname](bold italic):"
+format =  "[$hostname](dimmed italic):"
 disabled = false
 
 [kubernetes]

From 7428ba0dd0c3bf032c41f0209a3f8b9d1c126a42 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 13:35:36 +0200
Subject: [PATCH 095/656] zsh: nix vs locales

---
 .zshrc | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/.zshrc b/.zshrc
index a632bfb..24c6910 100644
--- a/.zshrc
+++ b/.zshrc
@@ -64,10 +64,6 @@ setopt null_glob
 # ZSH_AUTOSUGGEST_USE_ASYNC=1
 # ZSH_AUTOSUGGEST_STRATEGY=(history completion)
 
-# FIXME: Why does this work? Otherwise zshrc gets the wrong prompt length for unicode chars.
-export LC_ALL=en_US.UTF-8
-export LC_ALL=en_DK.UTF-8
-
 export PATH=$HOME/bin:$HOME/.cargo/bin:$PATH
 
 redraw-prompt() {
@@ -200,6 +196,7 @@ autoload -U +X compinit && compinit
 
 ## Nix
 export PATH=$HOME/.nix-profile/bin:$PATH
+export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
 
 ## eksctl
 if [ ! -f "${fpath[1]}/_eksctl" ]; then

From 01b973ad691147d61111a2f59b502f9217cbf9bf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 13:36:06 +0200
Subject: [PATCH 096/656] ssh: do not send locale vars

---
 .ssh/config | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.ssh/config b/.ssh/config
index 342b554..ddb5430 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -7,7 +7,6 @@ Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.
 AddressFamily inet
 RequestTty yes
 PreferredAuthentications=publickey
-SendEnv LC_* LANG
 
 Include ~/.ssh/private_config
 

From 51f06921285e71596deb9b9c4b0c138cbb064dda Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 16:26:25 +0200
Subject: [PATCH 097/656] zsh: set NIX_REMOTE env var

---
 .zshrc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.zshrc b/.zshrc
index 24c6910..2b0708c 100644
--- a/.zshrc
+++ b/.zshrc
@@ -197,6 +197,7 @@ autoload -U +X compinit && compinit
 ## Nix
 export PATH=$HOME/.nix-profile/bin:$PATH
 export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
+export NIX_REMOTE=daemon
 
 ## eksctl
 if [ ! -f "${fpath[1]}/_eksctl" ]; then

From 4e734c68cb7f4fdaf0a404652b71200da9988ffd Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 16:28:31 +0200
Subject: [PATCH 098/656] zsh: add nix completions

---
 .zshrc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.zshrc b/.zshrc
index 2b0708c..f8b68c8 100644
--- a/.zshrc
+++ b/.zshrc
@@ -20,6 +20,8 @@ zi ice wait lucid
 zi load Aloxaf/fzf-tab
 zi ice wait lucid
 zi load Freed-Wu/fzf-tab-source
+zi ice wait lucid
+zi load nix-community/nix-zsh-completions
 
 zstyle ':completion:*' use-cache on
 zstyle ':completion:*' cache-path ~/.zsh/cache

From e7fce6aa853403546d86fc75082ad2d4dbd612c8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 21:18:19 +0200
Subject: [PATCH 099/656] term-test layout

---
 bin/test-term.sh | 199 ++++++++++++++++++++++-------------------------
 1 file changed, 94 insertions(+), 105 deletions(-)

diff --git a/bin/test-term.sh b/bin/test-term.sh
index 2b49fc6..9780da5 100755
--- a/bin/test-term.sh
+++ b/bin/test-term.sh
@@ -1,59 +1,58 @@
-echo -e '\e[0mnormal\e[0m'
-echo -e '\e[2mdim\e[0m'
+echo -ne '\e[0mnormal\e[0m\t\t\t\t\t'
+echo -e '\e[7m reverse \e[0m'
 
-echo -e '\e[1mbold\e[0m'
+echo -ne '\e[2mdim\e[0m\t\t\t\t\t\t'
+echo -e '\e[7;2m reverse dim \e[0m'
 
-echo -e '\e[3mitalic\e[0m'
-echo -e '\e[2;3mdim italic\e[0m'
-echo -e '\e[1;3mbold italic\e[0m'
+echo -ne '\e[1mbold\e[0m\t\t\t\t\t'
+echo -e '\e[7;1m reverse bold \e[0m'
+
+echo -ne '\e[3mitalic\e[0m\t\t\t\t\t'
+echo -e '\e[7;3m reverse italic \e[0m'
+
+echo -ne '\e[2;3mdim italic\e[0m\t\t\t\t'
+echo -e '\e[7;2;3m reverse dim italic \e[0m'
+
+echo -ne '\e[1;3mbold italic\e[0m\t\t\t\t'
+echo -e '\e[7;1;3m reverse bold italic \e[0m'
 
 echo
-echo -e '\e[4munderline\e[24m'
+echo -e '\e[4munderline\e[0m'
 echo -e '\e[3;4mitalic underline\e[0m'
-echo -e '\e[4:1mthis is also underline \e[4:0m'
-echo -e '\e[21mdouble underline \e[24m'
-echo -e '\e[4:2mthis is also double underline \e[4:0m'
-echo -e '\e[4:3mcurly underline \e[4:0m'
-echo -e '\e[21m\e[58;5;42m256-color underline \e[59m\e[24m'
-echo -e '\e[4:3m\e[58;2;240;143;104mtruecolor underline  (*)\e[59m\e[4:0m'
-echo -e "\x1b[58:2::255:0:0m\x1b[4:1msingle underline \x1b[0m"
-echo -e "\x1b[4:2mdouble underline \x1b[58:2::255:0:0m and with color\x1b[0m"
-echo -e "\x1b[4:3mcurly underline \x1b[58:2::255:0:0m and with color\x1b[0m"
-echo -e "\x1b[4:4mdotted underline \x1b[58:2::255:0:0m and with color\x1b[0m"
-echo -e "\x1b[4:5mdashed underline \x1b[58:2::255:0:0m and with color\x1b[0m"
-
-
+echo -e '\e[4:1mthis is also underline \e[0m'
+echo -e '\e[21mdouble underline \e[0m'
+echo -e '\e[4:2mthis is also double underline \e[0m'
+echo -e '\e[4:3mcurly underline \e[0m'
+echo -e '\e[21m\e[58;5;42m256-color underline \e[0m'
+echo -e '\e[4:3m\e[58;2;240;143;104mtruecolor underline  (*)\e[0m'
+echo -e "\e[58:2::255:0:0m\e[4:1msingle underline \e[0m"
+echo -e "\e[4:2mdouble underline \e[58:2::255:0:0m and with color\e[0m"
+echo -e "\e[4:3mcurly underline \e[58:2::255:0:0m and with color\e[0m"
+echo -e "\e[4:4mdotted underline \e[58:2::255:0:0m and with color\e[0m"
+echo -e "\e[4:5mdashed underline \e[58:2::255:0:0m and with color\e[0m"
 
 echo
-echo -e '\e[7mreverse\e[27m'
-echo -e '\e[7;1mreverse bold\e[0m'
-echo -e '\e[7;3mreverse italic\e[0m'
-echo -e '\e[7;2mreverse dim\e[0m'
-echo -e '\e[7;2;1mreverse dim italic\e[0m'
-
-echo
-echo -e '\e[5mblink \e[25m'
-echo -e '\e[8minvisible\e[28m <- invisible (but copy-pasteable)'
-echo -e '\e[9mstrikethrough\e[29m'
-echo -e '\e[53moverline \e[55m'
+echo -e '\e[5mblink \e[0m'
+echo -e '\e[8minvisible\e[0m <- invisible (but copy-pasteable)'
+echo -e '\e[9mstrikethrough\e[0m'
+echo -e '\e[53moverline \e[0m'
 echo -e '\e[51mframed \e[0m'
 echo -e '\e[52mencircled \e[0m'
 
-echo -e '\e[31mred\e[39m'
-echo -e '\e[91mbright red\e[39m'
-echo -e '\e[38:5:42m256-color, de jure standard (ITU-T T.416)\e[39m'
-echo -e '\e[38;5;42m256-color, de facto standard (commonly used)\e[39m'
-echo -e '\e[38:2::240:143:104mtruecolor, de jure standard (ITU-T T.416) \e[39m'
-echo -e '\e[38;2;240;143;104mtruecolor, de facto standard (commonly used)\e[39m'
-
-echo -e '\e[46mcyan background\e[49m'
-echo -e '\e[106mbright cyan background\e[49m'
-echo -e '\e[48:5:42m256-color background, de jure standard (ITU-T T.416)\e[49m'
-echo -e '\e[48;5;42m256-color background, de facto standard (commonly used)\e[49m'
-echo -e '\e[48:2::240:143:104mtruecolor background, de jure standard (ITU-T T.416) \e[49m'
-echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format (might be removed at some point)\e[49m'
-echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[49m'
+echo -e '\e[31mred\e[0m'
+echo -e '\e[91mbright red\e[0m'
+echo -e '\e[38:5:42m256-color, de jure standard (ITU-T T.416)\e[0m'
+echo -e '\e[38;5;42m256-color, de facto standard (commonly used)\e[0m'
+echo -e '\e[38:2::240:143:104mtruecolor, de jure standard (ITU-T T.416) \e[0m'
+echo -e '\e[38;2;240;143;104mtruecolor, de facto standard (commonly used)\e[0m'
 
+echo -e '\e[46mcyan background\e[0m'
+echo -e '\e[106mbright cyan background\e[0m'
+echo -e '\e[48:5:42m256-color background, de jure standard (ITU-T T.416)\e[0m'
+echo -e '\e[48;5;42m256-color background, de facto standard (commonly used)\e[0m'
+echo -e '\e[48:2::240:143:104mtruecolor background, de jure standard (ITU-T T.416) \e[0m'
+echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format (might be removed at some point)\e[0m'
+echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[0m'
 
 echo
 echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷"
@@ -65,7 +64,7 @@ echo "=<< =< =<= <== <=== <<= <= => =>> ==> ===> =>= >= >>= <=> <==> <===> <====
 echo "[| |] {| |} <=< >=> <~~ <~ ~> ~~> :: ::: \/ /\ == != /= ~= <> === !== =/= =!= :>"
 echo ":= :- :+ <* <*> *> <| <|> |> <. <.> .> +: -: =: <***> __ (* comm *) ++ +++ |- -|"
 
-echo 
+echo
 echo 24-bit colors:
 
 # This file was originally taken from iterm2 https://github.com/gnachman/iTerm2/blob/master/tests/24-bit-color.sh
@@ -77,15 +76,12 @@ echo 24-bit colors:
 #   <r> <g> <b> range from 0 to 255 inclusive.
 #   The escape sequence ^[0m returns output to default
 
-setBackgroundColor()
-{
-    #printf '\x1bPtmux;\x1b\x1b[48;2;%s;%s;%sm' $1 $2 $3
-    printf '\x1b[48;2;%s;%s;%sm' $1 $2 $3
+setBackgroundColor() {
+	printf '\x1b[48;2;%s;%s;%sm' $1 $2 $3
 }
 
-resetOutput()
-{
-    echo -en "\x1b[0m\n"
+resetOutput() {
+	echo -en "\x1b[0m\n"
 }
 
 # Gives a color $1/255 % along HSV
@@ -93,77 +89,70 @@ resetOutput()
 # Echoes "$red $green $blue" where
 # $red $green and $blue are integers
 # ranging between 0 and 255 inclusive
-rainbowColor()
-{ 
-    let h=$1/43
-    let f=$1-43*$h
-    let t=$f*255/43
-    let q=255-t
+rainbowColor() {
+	let h=$1/43
+	let f=$1-43*$h
+	let t=$f*255/43
+	let q=255-t
 
-    if [ $h -eq 0 ]
-    then
-        echo "255 $t 0"
-    elif [ $h -eq 1 ]
-    then
-        echo "$q 255 0"
-    elif [ $h -eq 2 ]
-    then
-        echo "0 255 $t"
-    elif [ $h -eq 3 ]
-    then
-        echo "0 $q 255"
-    elif [ $h -eq 4 ]
-    then
-        echo "$t 0 255"
-    elif [ $h -eq 5 ]
-    then
-        echo "255 0 $q"
-    else
-        # execution should never reach here
-        echo "0 0 0"
-    fi
+	if [ $h -eq 0 ]; then
+		echo "255 $t 0"
+	elif [ $h -eq 1 ]; then
+		echo "$q 255 0"
+	elif [ $h -eq 2 ]; then
+		echo "0 255 $t"
+	elif [ $h -eq 3 ]; then
+		echo "0 $q 255"
+	elif [ $h -eq 4 ]; then
+		echo "$t 0 255"
+	elif [ $h -eq 5 ]; then
+		echo "255 0 $q"
+	else
+		# execution should never reach here
+		echo "0 0 0"
+	fi
 }
 
-for i in `seq 0 127`; do
-    setBackgroundColor $i 0 0
-    echo -en " "
+for i in $(seq 0 127); do
+	setBackgroundColor $i 0 0
+	echo -en " "
 done
 resetOutput
-for i in `seq 255 -1 128`; do
-    setBackgroundColor $i 0 0
-    echo -en " "
+for i in $(seq 255 -1 128); do
+	setBackgroundColor $i 0 0
+	echo -en " "
 done
 resetOutput
 
-for i in `seq 0 127`; do
-    setBackgroundColor 0 $i 0
-    echo -n " "
+for i in $(seq 0 127); do
+	setBackgroundColor 0 $i 0
+	echo -n " "
 done
 resetOutput
-for i in `seq 255 -1 128`; do
-    setBackgroundColor 0 $i 0
-    echo -n " "
+for i in $(seq 255 -1 128); do
+	setBackgroundColor 0 $i 0
+	echo -n " "
 done
 resetOutput
 
-for i in `seq 0 127`; do
-    setBackgroundColor 0 0 $i
-    echo -n " "
+for i in $(seq 0 127); do
+	setBackgroundColor 0 0 $i
+	echo -n " "
 done
 resetOutput
-for i in `seq 255 -1 128`; do
-    setBackgroundColor 0 0 $i
-    echo -n " "
+for i in $(seq 255 -1 128); do
+	setBackgroundColor 0 0 $i
+	echo -n " "
 done
 resetOutput
 
-for i in `seq 0 127`; do
-    setBackgroundColor `rainbowColor $i`
-    echo -n " "
+for i in $(seq 0 127); do
+	setBackgroundColor $(rainbowColor $i)
+	echo -n " "
 done
 resetOutput
-for i in `seq 255 -1 128`; do
-    setBackgroundColor `rainbowColor $i`
-    echo -n " "
+for i in $(seq 255 -1 128); do
+	setBackgroundColor $(rainbowColor $i)
+	echo -n " "
 done
 resetOutput

From f08ac5321985b95a07083e57bce48a1054a3f85f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 25 Jun 2023 21:18:44 +0200
Subject: [PATCH 100/656] wezterm: fonts

---
 .config/wezterm/wezterm.lua | 45 ++++++++++++++++++++++++++++++++++---
 1 file changed, 42 insertions(+), 3 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 56bc9e4..41cc8ea 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -22,31 +22,70 @@ return {
 		{
 			italic = false,
 			intensity = "Half",
+			reverse = false,
 			font = font_with_fallback("Iosevka Term SS09", { weight = "Thin" }),
 		},
+		{
+			italic = false,
+			intensity = "Bold",
+			reverse = false,
+			font = font_with_fallback("Iosevka Term SS09", { weight = "DemiBold" }),
+		},
 		{
 			italic = true,
 			intensity = "Normal",
+			reverse = false,
 			font = font_with_fallback("Iosevka Term Curly Slab", { weight = "Light", italic = true }),
 		},
 		{
 			italic = true,
 			intensity = "Half",
+			reverse = false,
 			font = font_with_fallback("Iosevka Term SS15", { weight = "ExtraLight", italic = true }),
 		},
 		{
 			italic = true,
 			intensity = "Bold",
+			reverse = false,
 			font = font_with_fallback("Iosevka Term Curly Slab Ex", { weight = "Regular", italic = true }),
 		},
+
+		-- Reversed
+		{
+			reverse = true,
+			italic = false,
+			intensity = "Normal",
+			font = font_with_fallback("Iosevka Term SS09", { weight = "Regular" }),
+		},
 		{
 			reverse = true,
-			intensity = "Bold",
-			font = font_with_fallback("Iosevka Term SS09", { weight = "Bold" }),
+			italic = false,
+			intensity = "Half",
+			font = font_with_fallback("Iosevka Term SS09", { weight = "Light" }),
 		},
 		{
+			reverse = true,
+			italic = true,
+			intensity = "Half",
+			font = font_with_fallback("Iosevka Term Curly Slab", { weight = "ExtraLight", italic = true }),
+		},
+		{
+			reverse = true,
+			italic = true,
+			intensity = "Normal",
+			font = font_with_fallback("Iosevka Term Curly Slab", { weight = "Light", italic = true }),
+		},
+		{
+			reverse = true,
+			italic = true,
 			intensity = "Bold",
-			font = font_with_fallback("Iosevka Term SS09", { weight = "DemiBold" }),
+			font = font_with_fallback("Iosevka Term Curly Slab Ex", { weight = "Bold", italic = true }),
+		},
+		{
+			reverse = true,
+			italic = false,
+			intensity = "Bold",
+			font = font_with_fallback("Iosevka Term SS09", { weight = "Bold" }),
 		},
 	},
 	front_end = "WebGpu",

From 17afeb4b6a92c67cc7399b150d6ce29122e90bf3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 10:11:24 +0200
Subject: [PATCH 101/656] wezterm: a bit thicker cursor

---
 .config/wezterm/wezterm.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 41cc8ea..2a07e4c 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -107,7 +107,7 @@ return {
 		bottom = 0,
 	},
 	default_cursor_style = "SteadyBlock",
-	cursor_thickness = "3px",
+	cursor_thickness = "6px",
 	cursor_blink_rate = 0,
 	hide_mouse_cursor_when_typing = false,
 	enable_wayland = true,

From b307c4549c1a3b953d06842b4b6ba44f5bddb3d9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 09:57:00 +0200
Subject: [PATCH 102/656] starship: minimize prompt

---
 .config/starship.toml | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/.config/starship.toml b/.config/starship.toml
index ccbfb7a..a3b9734 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -5,15 +5,13 @@ format = """\
 ${env_var.TMUX_WINDOW}\
 $hostname\
 $directory\
-${custom.sl_status}\
-$git_branch\
-$git_commit\
-$git_state\
-$git_status\
-$nix_shell\
 ($character)\
 """
 
+# $git_branch\
+# $git_commit\
+# $git_state\
+# $git_status\
 right_format = """\
 """
 
@@ -26,7 +24,7 @@ format = 'via [☃️ $state( \($name\))](bold blue) '
 
 [env_var.TMUX_WINDOW]
 default = ""
-format = '[ $env_value ]($style)[](fg:#d1002f) '
+format = '[ $env_value ]($style) '
 style = 'italic bg:#d1002f fg:#ffffff'
 
 [custom.sl_status]

From 65defa2a96a27a25a3cb36a99e2568069deeae66 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 10:00:49 +0200
Subject: [PATCH 103/656] tmux: use new terminal-features instead of
 terminal-override

---
 .tmux.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.tmux.conf b/.tmux.conf
index 1d88b6e..b44348c 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -23,7 +23,7 @@ set -g default-command zsh
 set -g history-limit 10000
 
 set -g default-terminal "wezterm"
-set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'  # Underline color
+set -ga terminal-features '*:overline:strikethrough:usstyle:RGB'
 
 # Key bindings
 bind -n M-Left select-pane -L

From 3691a3aee1850365b4c282ed9f9733f454ab3ef4 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 10:12:01 +0200
Subject: [PATCH 104/656] zsh: disable fzf-tab that was driving me nuts

---
 .zshrc | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/.zshrc b/.zshrc
index f8b68c8..fbebfe9 100644
--- a/.zshrc
+++ b/.zshrc
@@ -17,19 +17,10 @@ zi load zdharma-continuum/fast-syntax-highlighting
 zi ice wait lucid
 zi load zsh-users/zsh-history-substring-search
 zi ice wait lucid
-zi load Aloxaf/fzf-tab
-zi ice wait lucid
-zi load Freed-Wu/fzf-tab-source
-zi ice wait lucid
 zi load nix-community/nix-zsh-completions
 
 zstyle ':completion:*' use-cache on
 zstyle ':completion:*' cache-path ~/.zsh/cache
-
-## fzf-tab
-zstyle ':fzf-tab:*' fzf-bindings 'tab:accept'
-zstyle ':fzf-tab:*' continuous-trigger '/'
-zstyle ':fzf-tab:*' fzf-min-height 30
  
 ## History
 HISTSIZE=50000

From 1a2a5a91328beb9d2114b2874aae0624bcfc83d3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 10:14:36 +0200
Subject: [PATCH 105/656] zsh: disable highlighting pasted test in reverse

---
 .zshrc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.zshrc b/.zshrc
index fbebfe9..53e76f4 100644
--- a/.zshrc
+++ b/.zshrc
@@ -22,6 +22,9 @@ zi load nix-community/nix-zsh-completions
 zstyle ':completion:*' use-cache on
 zstyle ':completion:*' cache-path ~/.zsh/cache
  
+# Highlighting
+zle_highlight=('paste:none')
+
 ## History
 HISTSIZE=50000
 SAVEHIST=50000

From 9c38ebd3ee6e4293f3baa6d9e98d97ae0b77e63c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 15:13:16 +0200
Subject: [PATCH 106/656] zsh: just use zsh for prompt, deprecating starship

---
 .config/starship.toml | 74 -------------------------------------------
 .tmux.conf            | 18 +++++------
 .zshrc                | 35 ++++++++++++++++----
 3 files changed, 38 insertions(+), 89 deletions(-)
 delete mode 100644 .config/starship.toml

diff --git a/.config/starship.toml b/.config/starship.toml
deleted file mode 100644
index a3b9734..0000000
--- a/.config/starship.toml
+++ /dev/null
@@ -1,74 +0,0 @@
-add_newline = false
-
-
-format = """\
-${env_var.TMUX_WINDOW}\
-$hostname\
-$directory\
-($character)\
-"""
-
-# $git_branch\
-# $git_commit\
-# $git_state\
-# $git_status\
-right_format = """\
-"""
-
-[nix_shell]
-disabled = true
-impure_msg = '[impure shell](bold red)'
-pure_msg = '[pure shell](bold green)'
-unknown_msg = '[unknown shell](bold yellow)'
-format = 'via [☃️ $state( \($name\))](bold blue) '
-
-[env_var.TMUX_WINDOW]
-default = ""
-format = '[ $env_value ]($style) '
-style = 'italic bg:#d1002f fg:#ffffff'
-
-[custom.sl_status]
-command = '''~/bin/starship-sl-status'''
-when = false
-style = "italic fg:#79AE6F"
-format = '[(🌱 $output )]($style)'
-
-[character]
-success_symbol = "%"
-error_symbol = "[%](bold red)"
-
-[line_break]
-disabled = true
-
-[directory]
-fish_style_pwd_dir_length = 1
-truncation_length = 1
-truncate_to_repo = false
-style = "italic dimmed"
-
-[git_branch]
-format = "[$symbol$branch]($style)"
-style = "fg:#559955"
-symbol = " "
-truncation_length = 16
-truncation_symbol = ""
-
-[git_commit]
-format = "[ $hash$tag]($style) "
-style = "fg:#559955"
-
-[git_state]
-style = ""
-
-[git_status]
-format = '([\[$all_status$ahead_behind\]]($style))'
-style = "dimmed"
-
-[hostname]
-ssh_only = false
-format =  "[$hostname](dimmed italic):"
-disabled = false
-
-[kubernetes]
-disabled = false
-style = ""
diff --git a/.tmux.conf b/.tmux.conf
index b44348c..5fd908b 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -73,14 +73,14 @@ set -g set-titles on
 set -g set-titles-string "#H - #T"
 
 new -s0 -n 1  nvim --listen $XDG_RUNTIME_DIR/nvim.sock
-new-window -n 2 -e TMUX_WINDOW=2
-new-window -n 3 -e TMUX_WINDOW=3
-new-window -n 4 -e TMUX_WINDOW=4
-new-window -n 5 -e TMUX_WINDOW=5
-new-window -n 6 -e TMUX_WINDOW=6
-new-window -n 7 -e TMUX_WINDOW=7
-new-window -n 8 -e TMUX_WINDOW=8
-new-window -n 9 -e TMUX_WINDOW=9
-new-window -n 0 -e TMUX_WINDOW=0
+new-window -n 2
+new-window -n 3
+new-window -n 4
+new-window -n 5
+new-window -n 6
+new-window -n 7
+new-window -n 8
+new-window -n 9
+new-window -n 0
 
 # vim:set ft=tmux:
diff --git a/.zshrc b/.zshrc
index 53e76f4..a8ee569 100644
--- a/.zshrc
+++ b/.zshrc
@@ -18,6 +18,8 @@ zi ice wait lucid
 zi load zsh-users/zsh-history-substring-search
 zi ice wait lucid
 zi load nix-community/nix-zsh-completions
+zi ice wait lucid
+zi snippet https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/shrink-path/shrink-path.plugin.zsh
 
 zstyle ':completion:*' use-cache on
 zstyle ':completion:*' cache-path ~/.zsh/cache
@@ -55,6 +57,8 @@ setopt extended_glob
 setopt ksh_glob
 setopt null_glob
 
+export LC_ALL=en_US.UTF-8
+
 ## Autosuggest
 # ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#D7CCC8,italic"
 # ZSH_AUTOSUGGEST_USE_ASYNC=1
@@ -99,7 +103,6 @@ bindkey '^[[B' history-beginning-search-forward
 bindkey '^P' history-beginning-search-backward
 bindkey '^N' history-beginning-search-forward
 bindkey '^g' _jump
-bindkey '^_' _cwd_gitroot
 
 
 ## Pager
@@ -139,15 +142,35 @@ rg() {
   /usr/bin/rg -p "$@" | bat
 }
 
-fix_cursor() {
-  echo -ne '\e[5 q'
+## Prompt
+
+prompt_chpwd() {
+  if [[ ${#PWD} < 25 ]]; then
+    PROMPT_PWD="$PWD"
+  else
+    PROMPT_PWD="$(shrink_path -t -l -e "%{%G\e[2;3;38;5;202m\U2026\e[0;2;3m%}")"
+  fi
+}
+chpwd_functions+=prompt_chpwd
+
+prompt_precmd() {
+  # PROMPT_LABEL="%B$(tmux display-message -p "#I")%b"
+  PROMPT_LABEL="$HOST"
 }
 
-precmd_functions+=(fix_cursor)
+precmd_functions+=(prompt_precmd)
 
+autoload -Uz vcs_info
+chpwd_functions+=vcs_info
+precmd_functions+=vcs_info
 
-## Prompt
-eval "$(starship init zsh)"
+zstyle ':vcs_info:git:*' check-for-changes true
+zstyle ':vcs_info:git:*' formats '%F{#559955} %b%u%c%f '
+zstyle ':vcs_info:*' unstagedstr ' %F{#ff0}󰦒'
+zstyle ':vcs_info:*' stagedstr ' %F{#9ff}󰐖'
+
+setopt PROMPT_SUBST
+PROMPT=$'%F{#fff}%K{#d1002f}%{\e[3m%} ${PROMPT_LABEL} %{\e[0m%}%S%F{#d1002f}%k%{%G\Ue0ba%}%k%s%f%{\e[2;3m%}${PROMPT_PWD}%{\e[0m%} ${vcs_info_msg_0_}%# '
 
 ## vim
 export EDITOR=nvim

From e594c4177df345dd266817d2036dba372546c65b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 15:44:07 +0200
Subject: [PATCH 107/656] wezterm: hide window decorations

---
 .config/wezterm/wezterm.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 2a07e4c..f08c496 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -100,6 +100,7 @@ return {
 	initial_rows = 45,
 	use_resize_increments = true,
 	adjust_window_size_when_changing_font_size = false,
+	window_decorations = "RESIZE",
 	window_padding = {
 		left = 0,
 		right = 0,

From d25cbf6ea44c3cc394451da08dbd10e84d15ebb7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 15:45:54 +0200
Subject: [PATCH 108/656] zsh: fix for narrow cursor

---
 .zshrc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index a8ee569..be07564 100644
--- a/.zshrc
+++ b/.zshrc
@@ -154,8 +154,8 @@ prompt_chpwd() {
 chpwd_functions+=prompt_chpwd
 
 prompt_precmd() {
-  # PROMPT_LABEL="%B$(tmux display-message -p "#I")%b"
   PROMPT_LABEL="$HOST"
+  echo -ne '\e[5 q'    # Fix cursor
 }
 
 precmd_functions+=(prompt_precmd)

From fe5d005c2b0ddff4cbdbf3460c642f7bae969f00 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 16:46:07 +0200
Subject: [PATCH 109/656] git: use --word-diff. minimize delta

---
 .gitconfig | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index 22e7481..dd493f2 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -1,6 +1,6 @@
 [core]
 excludesfile = "~/.gitignore"
-pager = delta --line-numbers --max-line-distance 0.9
+pager = delta 
 compression = 0
 looseCompression = 0
 
@@ -22,8 +22,10 @@ rebase = true
 [alias]
 b = branch -va
 cl = clone --filter=blob:none
-d = diff --stat -p -C
-ds = diff --staged --stat -p -C
+d = diff --stat -p -C --color-words
+dg = diff --stat -p -C
+ds = diff --staged --stat -p -C --color-words
+sh = show --color-words
 dt = difftool
 patch = !git --no-pager diff --no-color
 co = checkout
@@ -72,8 +74,13 @@ threads = 0
 date = relative
 
 [delta]
-# syntax-theme = GitHub
-hunk-header-style = line-number syntax
+; # syntax-theme = GitHub
+  file-decoration-style=none
+  hunk-header-decoration-style=none
+  hunk-header-decoration-style='blue ul' 
+  hunk-header-style = line-number syntax
+  line-numbers = true
+  max-line-distance = 0.9
 
 [hub]
 protocol = git

From dc6dc5b13a21df9e5a6018d1b500b2fb4569f781 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jul 2023 17:27:07 +0200
Subject: [PATCH 110/656] git: delta fancification

---
 .gitconfig | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index dd493f2..34ac5d3 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -75,10 +75,20 @@ date = relative
 
 [delta]
 ; # syntax-theme = GitHub
+  file-style = bold "#ffff66" "#333300"
+  file-transformation = "s/$/ ══  /"
   file-decoration-style=none
+  file-added-label =  "   ══"
+  file-modified-label = "   ══"
+  file-removed-label = "   ══"
+  file-renamed-label = "   ══"
   hunk-header-decoration-style=none
-  hunk-header-decoration-style='blue ul' 
-  hunk-header-style = line-number syntax
+  ; hunk-header-decoration-style='#99eeff' 
+  hunk-header-file-style = bold "#66ddff"
+  hunk-header-style = line-number bold "#99eeff" "#001133"
+  hunk-header-line-number-style = bold "#66ccff"
+  hunk-label-style = bold "#66ccff"
+  hunk-label = " "
   line-numbers = true
   max-line-distance = 0.9
 

From ccf0d176c58525a8d8cc340cbe6b76a2f2d2640d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 2 Jul 2023 12:30:22 +0200
Subject: [PATCH 111/656] tmux: status style

---
 .tmux.conf | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.tmux.conf b/.tmux.conf
index 5fd908b..450ee94 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -62,8 +62,8 @@ bind -n M-m display-popup -h '90%' -w '90%' -b rounded -d '#{?pane_path,#{pane_p
 setw -g window-status-format ""
 setw -g window-status-current-format ""
 setw -g window-status-separator ""
-set -g status-style "fg=#cc0000,dotted-underscore,italics"
-set -g status-position top
+set -g status-style "bg=#444444,fg=#dddddd,italics"
+set -g status-position bottom
 set -g status-left-length 0
 set -g status-right-length 0
 set -g status-left '[#I] #{pane_current_path}'

From 471ee13bf5e6802be38f43cf5e12d90881d674b7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 2 Jul 2023 12:35:15 +0200
Subject: [PATCH 112/656] zsh/tmux: use OSC 7 to signal pwd. fixes M-e for
 tmux-edit-helper

---
 .zshrc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index be07564..55aa782 100644
--- a/.zshrc
+++ b/.zshrc
@@ -155,7 +155,8 @@ chpwd_functions+=prompt_chpwd
 
 prompt_precmd() {
   PROMPT_LABEL="$HOST"
-  echo -ne '\e[5 q'    # Fix cursor
+  print -n '\e[5 q'          # Fix cursor
+  print -n "\e]7;${PWD}\a"   # OSC 7 for terminal pwd
 }
 
 precmd_functions+=(prompt_precmd)

From 8050aa5304d60e2d5b98c6d6ab96d2891749d175 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 2 Jul 2023 14:24:15 +0200
Subject: [PATCH 113/656] zsh: git branchless completion

---
 .zshrc | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.zshrc b/.zshrc
index 55aa782..138d28c 100644
--- a/.zshrc
+++ b/.zshrc
@@ -119,6 +119,7 @@ export BAT_PAGER="less -r"
 alias c='cut -c-${COLUMNS}'
 alias e='tmux-edit-helper'
 alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
+alias git='git-branchless wrap --'
 alias l='bat --wrap=never --pager="less -S"'
 alias ls=exa
 alias tail='tail -n $LINES'
@@ -236,6 +237,11 @@ alias kubectl='grc kubectl'
 #  curl -sLo "${fpath[1]}/_bazel" https://raw.githubusercontent.com/bazelbuild/bazel/master/scripts/zsh_completion/_bazel
 #fi
 
+## git-branchless
+if [ ! -f "${fpath[1]}/_git_branchless" ]; then
+  curl -sLo "${fpath[1]}/_git_branchless" https://gist.githubusercontent.com/minijackson/68effb0e6c7d8333e20f07da20076c28/raw/5469ffa1c6adc245adb82316f1013937c5148da7/_git-branchless
+fi
+
 ## sapling
 if [ ! -f "${fpath[1]}/_sl" ]; then
   # See: https://github.com/facebook/sapling/pull/369

From f8d1cf1a57bcbc4c7a3d3b7359723b50e7957aee Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 2 Jul 2023 16:34:21 +0200
Subject: [PATCH 114/656] zsh: add zsh-abbr

---
 .config/zsh-abbr/abbr-jj            | 6 ++++++
 .config/zsh-abbr/user-abbreviations | 9 +++++++++
 .zshrc                              | 2 ++
 3 files changed, 17 insertions(+)
 create mode 100644 .config/zsh-abbr/abbr-jj
 create mode 100644 .config/zsh-abbr/user-abbreviations

diff --git a/.config/zsh-abbr/abbr-jj b/.config/zsh-abbr/abbr-jj
new file mode 100644
index 0000000..29e638f
--- /dev/null
+++ b/.config/zsh-abbr/abbr-jj
@@ -0,0 +1,6 @@
+abbr add -S --force "c"="jj commit"
+abbr add -S --force "new"="jj new main"
+abbr add -S --force "p"="jj git push"
+abbr add -S --force "s"="jj status"
+abbr add -S --force "sl"="jj log --ignore-working-copy"
+abbr add -S --force "d"="jj show"
diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations
new file mode 100644
index 0000000..3b32d17
--- /dev/null
+++ b/.config/zsh-abbr/user-abbreviations
@@ -0,0 +1,9 @@
+abbr "abbr-jj"="source ~/.config/zsh-abbr/abbr-jj"
+abbr "c"="git commit"
+abbr "d"="git diff --stat -p -C --color-words"
+abbr "g"="git"
+abbr "k"="kubectl"
+abbr "new"="git checkout --detach main"
+abbr "p"="git push"
+abbr "s"="git status"
+abbr "sl"="git sl"
diff --git a/.zshrc b/.zshrc
index 138d28c..cc414c6 100644
--- a/.zshrc
+++ b/.zshrc
@@ -19,6 +19,8 @@ zi load zsh-users/zsh-history-substring-search
 zi ice wait lucid
 zi load nix-community/nix-zsh-completions
 zi ice wait lucid
+zi load olets/zsh-abbr
+zi ice wait lucid
 zi snippet https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/shrink-path/shrink-path.plugin.zsh
 
 zstyle ':completion:*' use-cache on

From 1ba2eef66ba78bab74c99090468ce2686970a1a0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 2 Jul 2023 17:33:37 +0200
Subject: [PATCH 115/656] zsh: automatic jj abbreviations

---
 .config/zsh-abbr/abbr-jj            |  6 ------
 .config/zsh-abbr/user-abbreviations |  6 ++++--
 .zshrc                              | 31 +++++++++++++++++++++++++++++
 3 files changed, 35 insertions(+), 8 deletions(-)
 delete mode 100644 .config/zsh-abbr/abbr-jj

diff --git a/.config/zsh-abbr/abbr-jj b/.config/zsh-abbr/abbr-jj
deleted file mode 100644
index 29e638f..0000000
--- a/.config/zsh-abbr/abbr-jj
+++ /dev/null
@@ -1,6 +0,0 @@
-abbr add -S --force "c"="jj commit"
-abbr add -S --force "new"="jj new main"
-abbr add -S --force "p"="jj git push"
-abbr add -S --force "s"="jj status"
-abbr add -S --force "sl"="jj log --ignore-working-copy"
-abbr add -S --force "d"="jj show"
diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations
index 3b32d17..15704f2 100644
--- a/.config/zsh-abbr/user-abbreviations
+++ b/.config/zsh-abbr/user-abbreviations
@@ -1,4 +1,4 @@
-abbr "abbr-jj"="source ~/.config/zsh-abbr/abbr-jj"
+abbr "b"="git branch -va"
 abbr "c"="git commit"
 abbr "d"="git diff --stat -p -C --color-words"
 abbr "g"="git"
@@ -6,4 +6,6 @@ abbr "k"="kubectl"
 abbr "new"="git checkout --detach main"
 abbr "p"="git push"
 abbr "s"="git status"
-abbr "sl"="git sl"
+abbr "sl"="git branchless smartlog"
+abbr "sw"="git branchless switch --interactive"
+abbr "sy"="git sync --pull"
diff --git a/.zshrc b/.zshrc
index cc414c6..00e4b08 100644
--- a/.zshrc
+++ b/.zshrc
@@ -145,6 +145,37 @@ rg() {
   /usr/bin/rg -p "$@" | bat
 }
 
+
+## Jujutsu
+jj_chpwd() {
+  _state="$JJ_REPO"
+  JJ_REPO=$(jj workspace root --ignore-working-copy 2>/dev/null)
+  if [[ "$JJ_REPO" == "$_state" ]]; then
+    return
+  fi
+  if [[ -n "$JJ_REPO" ]]; then
+    abbr add -S --force "b"="jj branch list"
+    abbr add -S --force "c"="jj commit"
+    abbr add -S --force "d"="jj show"
+    abbr add -S --force "new"="jj new main"
+    abbr add -S --force "p"="jj git push"
+    abbr add -S --force "s"="jj status"
+    abbr add -S --force "sl"="jj log --ignore-working-copy"
+    abbr add -S --force "sy"="jj git fetch"
+  else
+    abbr erase -S b
+    abbr erase -S c
+    abbr erase -S d
+    abbr erase -S new
+    abbr erase -S p
+    abbr erase -S s
+    abbr erase -S sl
+    abbr erase -S sy
+  fi
+}
+chpwd_functions+=jj_chpwd
+
+
 ## Prompt
 
 prompt_chpwd() {

From 64e7b1bad68c96aa60c813d07ecb8720a7a7affc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 2 Jul 2023 21:12:37 +0200
Subject: [PATCH 116/656] zsh: truncate branch name in vcs_info prompt

---
 .zshrc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index 00e4b08..7e7ece2 100644
--- a/.zshrc
+++ b/.zshrc
@@ -200,7 +200,7 @@ chpwd_functions+=vcs_info
 precmd_functions+=vcs_info
 
 zstyle ':vcs_info:git:*' check-for-changes true
-zstyle ':vcs_info:git:*' formats '%F{#559955} %b%u%c%f '
+zstyle ':vcs_info:git:*' formats '%F{#559955} %1.25b%u%c%f '
 zstyle ':vcs_info:*' unstagedstr ' %F{#ff0}󰦒'
 zstyle ':vcs_info:*' stagedstr ' %F{#9ff}󰐖'
 

From 36f21baf1d4475bc4838c702c747108035a7f59b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 11 Jul 2023 15:49:54 +0200
Subject: [PATCH 117/656] paru: prompt to remove make deps on install

---
 .config/paru/paru.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/paru/paru.conf b/.config/paru/paru.conf
index 2d4fc99..23800b5 100644
--- a/.config/paru/paru.conf
+++ b/.config/paru/paru.conf
@@ -1,7 +1,7 @@
 Include = /etc/paru.conf
 
-
 [options]
+RemoveMake = ask
 SkipReview
 
 [bin]

From 0a369346e7cc0f94d3ac9b0445c64be55e2d6813 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 12 Jul 2023 09:20:07 +0200
Subject: [PATCH 118/656] zsh: task completion

---
 .zshrc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/.zshrc b/.zshrc
index 7e7ece2..be68ba6 100644
--- a/.zshrc
+++ b/.zshrc
@@ -275,6 +275,11 @@ if [ ! -f "${fpath[1]}/_git_branchless" ]; then
   curl -sLo "${fpath[1]}/_git_branchless" https://gist.githubusercontent.com/minijackson/68effb0e6c7d8333e20f07da20076c28/raw/5469ffa1c6adc245adb82316f1013937c5148da7/_git-branchless
 fi
 
+## go-task
+if [ ! -f "${fpath[1]}/_task" ]; then
+  curl -sLo "${fpath[1]}/_task" https://raw.githubusercontent.com/go-task/task/main/completion/zsh/_task
+fi
+
 ## sapling
 if [ ! -f "${fpath[1]}/_sl" ]; then
   # See: https://github.com/facebook/sapling/pull/369

From 3b5cca3513a8af3ad3b6559504a5132670cb5455 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 15 Jul 2023 11:09:38 +0200
Subject: [PATCH 119/656] git: use --stat for show command

---
 .gitconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitconfig b/.gitconfig
index 34ac5d3..ee18805 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -25,7 +25,7 @@ cl = clone --filter=blob:none
 d = diff --stat -p -C --color-words
 dg = diff --stat -p -C
 ds = diff --staged --stat -p -C --color-words
-sh = show --color-words
+sh = show --stat -p -C --color-words
 dt = difftool
 patch = !git --no-pager diff --no-color
 co = checkout

From 136f6f7de3892640c9c2648ec1392cc5172427b7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 15 Jul 2023 11:09:51 +0200
Subject: [PATCH 120/656] zsh: rec abbrev

---
 .config/zsh-abbr/user-abbreviations | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations
index 15704f2..8ad9b83 100644
--- a/.config/zsh-abbr/user-abbreviations
+++ b/.config/zsh-abbr/user-abbreviations
@@ -5,6 +5,7 @@ abbr "g"="git"
 abbr "k"="kubectl"
 abbr "new"="git checkout --detach main"
 abbr "p"="git push"
+abbr "rec"="git record"
 abbr "s"="git status"
 abbr "sl"="git branchless smartlog"
 abbr "sw"="git branchless switch --interactive"

From bdac2d36126b0d2462ab2d0e91aaee2272ae6614 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 15 Jul 2023 16:52:55 +0200
Subject: [PATCH 121/656] nvim: add lsp_dynamic_workspace_symbols binding

---
 .config/nvim/lua/plugins/telescope.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index a74ea03..bd564bf 100644
--- a/.config/nvim/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -32,6 +32,7 @@ function M.config()
 	vim.keymap.set("n", "<leader>a", '<cmd>lua require("telescope.builtin").lsp_code_actions()<CR>')
 	vim.keymap.set("n", "<leader>m", '<cmd>lua require("telescope.builtin").marks()<CR>')
 	vim.keymap.set("n", "<leader>s", '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>')
+	vim.keymap.set("n", "<leader>S", '<cmd>lua require("telescope.builtin").lsp_dynamic_workspace_symbols()<CR>')
 	vim.keymap.set("n", "<leader>t", '<cmd>lua require("telescope.builtin").treesitter()<CR>')
 	vim.keymap.set("n", "<leader>/", '<cmd>lua require("telescope.builtin").live_grep()<CR>')
 	vim.keymap.set("n", "<leader>.", '<cmd>lua require("telescope.builtin").file_browser()<CR>')

From 91833eb18c7d597b5ab6284a86f2fc9aad01744b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 28 Jul 2023 09:51:04 +0200
Subject: [PATCH 122/656] nvim: add binding for lsp find implementations

---
 .config/nvim/lua/plugins/telescope.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index bd564bf..1810ff3 100644
--- a/.config/nvim/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -40,6 +40,7 @@ function M.config()
 	vim.keymap.set("n", "ga", "<cmd>lua vim.lsp.buf.code_action()<CR>")
 	vim.keymap.set("n", "gr", '<cmd>lua require("telescope.builtin").lsp_references()<CR>')
 	vim.keymap.set("n", "gd", '<cmd>lua require("telescope.builtin").lsp_definitions()<CR>')
+	vim.keymap.set("n", "gi", '<cmd>lua require("telescope.builtin").lsp_implementations()<CR>')
 	vim.keymap.set("n", "g/", '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>')
 	vim.keymap.set(
 		"n",

From 8071e98e1d4be676ecea9f0920fe48fcad8ec989 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 30 Jul 2023 21:18:43 +0200
Subject: [PATCH 123/656] tmux: don't start nvim on startup

---
 .tmux.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.tmux.conf b/.tmux.conf
index 450ee94..6988918 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -72,7 +72,7 @@ set -g status off
 set -g set-titles on
 set -g set-titles-string "#H - #T"
 
-new -s0 -n 1  nvim --listen $XDG_RUNTIME_DIR/nvim.sock
+new -s0 -n 1
 new-window -n 2
 new-window -n 3
 new-window -n 4

From f40a7cc2347906ac936bc9404a9f209d25ebefb6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 25 Aug 2023 10:12:37 +0200
Subject: [PATCH 124/656] ssh: remove deprecated pkcs11 config

---
 .ssh/config | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/.ssh/config b/.ssh/config
index ddb5430..b0001ae 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -17,13 +17,9 @@ ForwardAgent yes
 ExitOnForwardFailure yes
 Compression yes
 LocalForward 127.0.0.1:3000 127.0.0.1:3000
-LocalForward 127.0.0.1:3011 127.0.0.1:3011
 LocalForward 127.0.0.1:8000 127.0.0.1:8000
 LocalForward 127.0.0.1:8080 127.0.0.1:8080
-
-Host gitlab.com
-IdentityAgent /dev/null
-PKCS11Provider /usr/lib/pkcs11/libtpm2_pkcs11.so
+LocalForward 127.0.0.1:9090 127.0.0.1:9090
 
 Host *
 ForwardAgent no

From ab03a59ae5c04060462e294d723d7fc46a78b834 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 1 Sep 2023 11:14:42 +0200
Subject: [PATCH 125/656] wezterm: tmux goodness

---
 .../applications/wezterm-dln-dev-secondary.desktop     | 10 ++++++++++
 .local/share/applications/wezterm-dln-dev.desktop      |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)
 create mode 100644 .local/share/applications/wezterm-dln-dev-secondary.desktop

diff --git a/.local/share/applications/wezterm-dln-dev-secondary.desktop b/.local/share/applications/wezterm-dln-dev-secondary.desktop
new file mode 100644
index 0000000..afe10b5
--- /dev/null
+++ b/.local/share/applications/wezterm-dln-dev-secondary.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=wezterm-dln-dev-secondary
+GenericName=wezterm-dln-dev-secondary
+StartupWMClass=org.wezfurlong.wezterm-secondary
+Type=Application
+TryExec=/usr/bin/wezterm
+Icon=org.wezfurlong.wezterm
+Terminal=false
+Categories=System;TerminalEmulator;
+Exec=/usr/bin/wezterm --config window_background_opacity=0.6 --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As1", "-t0"}' start --class=org.wezfurlong.wezterm-secondary
diff --git a/.local/share/applications/wezterm-dln-dev.desktop b/.local/share/applications/wezterm-dln-dev.desktop
index 8f8a4e7..6398802 100644
--- a/.local/share/applications/wezterm-dln-dev.desktop
+++ b/.local/share/applications/wezterm-dln-dev.desktop
@@ -7,4 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As0"}' start --class=wezterm-dln-dev
+Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As0", "-t0"}' start --class=wezterm-dln-dev

From 52b32491529dd5f5ddf78bf89c9b92a2e4480cc5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 7 Sep 2023 13:29:26 +0200
Subject: [PATCH 126/656] zsh: pulumi completion

---
 .zshrc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/.zshrc b/.zshrc
index be68ba6..39d52df 100644
--- a/.zshrc
+++ b/.zshrc
@@ -306,6 +306,11 @@ if [ ! -f "${fpath[1]}/_talosctl" ]; then
 	command -v talosctl >/dev/null 2>&1 && talosctl completion zsh > "${fpath[1]}/_talosctl"
 fi
 
+## pulumi
+if [ ! -f "${fpath[1]}/_pulumi" ]; then
+	command -v pulumi >/dev/null 2>&1 && pulumi gen-completion zsh > "${fpath[1]}/_pulumi"
+fi
+
 ## vault
 complete -o nospace -C /usr/bin/vault vault
 

From 8fe4c4fb2705f792bb25a347ecdccc7cc22369e2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 7 Sep 2023 13:29:54 +0200
Subject: [PATCH 127/656] zsh: exa -> eza

---
 .zshrc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.zshrc b/.zshrc
index 39d52df..570c168 100644
--- a/.zshrc
+++ b/.zshrc
@@ -123,7 +123,7 @@ alias e='tmux-edit-helper'
 alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
 alias git='git-branchless wrap --'
 alias l='bat --wrap=never --pager="less -S"'
-alias ls=exa
+alias ls=eza
 alias tail='tail -n $LINES'
 alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"'
 alias top='btm --basic --enable_cache_memory --enable_gpu_memory --battery'
@@ -137,7 +137,7 @@ export RIPGREP_CONFIG_PATH=${HOME}/.config/shelman-theme/current/rg/rg.conf
 
 
 tree() {
-   exa --tree --color=always "$@" | bat --wrap=never
+   eza --tree --color=always "$@" | bat --wrap=never
 }
 
 # "auto paging"

From 30a2f2074a156dd2dc31051e9f8eef1ec69a9c22 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 17 Sep 2023 23:33:27 +0200
Subject: [PATCH 128/656] ssh: no need for tty always

---
 .ssh/config | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.ssh/config b/.ssh/config
index b0001ae..ffa3826 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -5,7 +5,6 @@ ControlPath ${XDG_RUNTIME_DIR}/ssh_control:%h:%p:%r
 ControlPersist 1200
 Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
 AddressFamily inet
-RequestTty yes
 PreferredAuthentications=publickey
 
 Include ~/.ssh/private_config

From 3923b2051936e82618f77b5633e426baf7f274a3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 17 Sep 2023 23:36:17 +0200
Subject: [PATCH 129/656] neovim: config refresh with lazyvim

---
 .config/nvim/.netrwhist                       |  12 -
 .config/nvim/init.lua                         |   2 +-
 .config/nvim/lazy-lock.json                   |  56 ++++
 .config/nvim/lua/config/autocmds.lua          |   3 +
 .config/nvim/lua/config/keymaps.lua           |   3 +
 .config/nvim/lua/config/lazy.lua              |  70 +++--
 .config/nvim/lua/config/options.lua           |  79 +-----
 .config/nvim/lua/plugins/cmp.lua              |  47 ----
 .config/nvim/lua/plugins/colorscheme.lua      |  80 ++++++
 .config/nvim/lua/plugins/copilot.lua          |  22 +-
 .config/nvim/lua/plugins/dap.lua              |  53 ----
 .config/nvim/lua/plugins/example.lua          | 266 ++++++++++++++++++
 .config/nvim/lua/plugins/gitsigns.lua         |  38 ---
 .config/nvim/lua/plugins/illuminate.lua       |   9 -
 .config/nvim/lua/plugins/indent-blankline.lua |  44 ---
 .config/nvim/lua/plugins/lsp-config.lua       | 241 ----------------
 .config/nvim/lua/plugins/lualine.lua          |  52 ----
 .config/nvim/lua/plugins/marks.lua            |  37 ---
 .config/nvim/lua/plugins/misc.lua             | 197 -------------
 .config/nvim/lua/plugins/noice.lua            |  19 --
 .config/nvim/lua/plugins/null-ls.lua          |  44 ---
 .config/nvim/lua/plugins/osc52.lua            |  18 --
 .config/nvim/lua/plugins/shelman-theme.lua    |  11 -
 .config/nvim/lua/plugins/telescope.lua        | 112 --------
 .config/nvim/lua/plugins/treesitter.lua       | 130 ---------
 25 files changed, 461 insertions(+), 1184 deletions(-)
 delete mode 100644 .config/nvim/.netrwhist
 create mode 100644 .config/nvim/lazy-lock.json
 create mode 100644 .config/nvim/lua/config/autocmds.lua
 create mode 100644 .config/nvim/lua/config/keymaps.lua
 delete mode 100644 .config/nvim/lua/plugins/cmp.lua
 create mode 100644 .config/nvim/lua/plugins/colorscheme.lua
 delete mode 100644 .config/nvim/lua/plugins/dap.lua
 create mode 100644 .config/nvim/lua/plugins/example.lua
 delete mode 100644 .config/nvim/lua/plugins/gitsigns.lua
 delete mode 100644 .config/nvim/lua/plugins/illuminate.lua
 delete mode 100644 .config/nvim/lua/plugins/indent-blankline.lua
 delete mode 100644 .config/nvim/lua/plugins/lsp-config.lua
 delete mode 100644 .config/nvim/lua/plugins/lualine.lua
 delete mode 100644 .config/nvim/lua/plugins/marks.lua
 delete mode 100644 .config/nvim/lua/plugins/misc.lua
 delete mode 100644 .config/nvim/lua/plugins/noice.lua
 delete mode 100644 .config/nvim/lua/plugins/null-ls.lua
 delete mode 100644 .config/nvim/lua/plugins/osc52.lua
 delete mode 100644 .config/nvim/lua/plugins/shelman-theme.lua
 delete mode 100644 .config/nvim/lua/plugins/telescope.lua
 delete mode 100644 .config/nvim/lua/plugins/treesitter.lua

diff --git a/.config/nvim/.netrwhist b/.config/nvim/.netrwhist
deleted file mode 100644
index 823f9b5..0000000
--- a/.config/nvim/.netrwhist
+++ /dev/null
@@ -1,12 +0,0 @@
-let g:netrw_dirhistmax  =10
-let g:netrw_dirhistcnt =4
-let g:netrw_dirhist_4='/home/dln/src/github.com/tocaboca/Toca-Days/Infrastructure/Helm'
-let g:netrw_dirhist_3='/home/dln/src/github.com/tocaboca/Toca-Days/Infrastructure/Helm/days'
-let g:netrw_dirhist_2='/home/dln/src/github.com/tocaboca/toca-days-prod/blessings'
-let g:netrw_dirhist_1='/home/dln/src/github.com/tocaboca/toca-infrastructure/flux/k8s/infra/tenants/toca-studio/clusters/studio'
-let g:netrw_dirhist_0='/home/dln/src/github.com/tocaboca/toca-infrastructure/linkerd/gateway'
-let g:netrw_dirhist_9='/home/dln/src/github.com/tocaboca/toca-infrastructure/cluster/terraform'
-let g:netrw_dirhist_8='/home/dln/src/github.com/shelmangroup/tf-infra/lab001/vms/modules/fcos_vault_agent'
-let g:netrw_dirhist_7='/tmp/squid/etc'
-let g:netrw_dirhist_6='/tmp/squid'
-let g:netrw_dirhist_5='/tmp/squid/etc'
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index 74740c5..2514f9e 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -1,2 +1,2 @@
-require("config.options")
+-- bootstrap lazy.nvim, LazyVim and your plugins
 require("config.lazy")
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
new file mode 100644
index 0000000..de433ee
--- /dev/null
+++ b/.config/nvim/lazy-lock.json
@@ -0,0 +1,56 @@
+{
+  "LazyVim": { "branch": "main", "commit": "a72a84972d85e5bbc6b9d60a0983b37efef21b8a" },
+  "LuaSnip": { "branch": "master", "commit": "3657c3f3cb2214a681fc7e95b6ffb509d076ebfb" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "2a6a5d3e2bc8a5727b6d083d2920d12a392ed05b" },
+  "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" },
+  "bufferline.nvim": { "branch": "main", "commit": "9961d87bb3ec008213c46ba14b3f384a5f520eb5" },
+  "catppuccin": { "branch": "main", "commit": "85e93601e0f0b48aa2c6bbfae4d0e9d7a1898280" },
+  "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
+  "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
+  "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
+  "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
+  "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
+  "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
+  "copilot.lua": { "branch": "master", "commit": "2c942f33ba5c621c906e625e00a1bb504b65e2f0" },
+  "dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" },
+  "flash.nvim": { "branch": "main", "commit": "8a8e74922a383c253b7f92e042b749150140c8d1" },
+  "friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" },
+  "gitsigns.nvim": { "branch": "main", "commit": "907ae8636016aab2f283576fc60d46ca3427e579" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "9637670896b68805430e2f72cf5d16be5b97a22a" },
+  "lazy.nvim": { "branch": "main", "commit": "3ad55ae678876516156cca2f361c51f7952a924b" },
+  "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "f014db32437aa61c86fc0ef1067cd2bc6a37205c" },
+  "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" },
+  "mini.ai": { "branch": "main", "commit": "7ae226f331885e6f30e9a8229e113debc59308ae" },
+  "mini.bufremove": { "branch": "main", "commit": "7821606e35c1ac931b56d8e3155f45ffe76ee7e5" },
+  "mini.comment": { "branch": "main", "commit": "877acea5b2a32ff55f808fc0ebe9aa898648318c" },
+  "mini.indentscope": { "branch": "main", "commit": "f60e9b51a6214c73a170ffc5445ce91560981031" },
+  "mini.pairs": { "branch": "main", "commit": "dfa9f6e2576bb8853be277d96b735af59d9be7c2" },
+  "mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "2d89ca96e08eb6e9c8e50e1bb4738bc5125c9f12" },
+  "neoconf.nvim": { "branch": "main", "commit": "a4eb3675cb87be2e2dcb283dddc8c7aabd2c50ca" },
+  "neodev.nvim": { "branch": "main", "commit": "471324e6c746284dbbdc1d357799d1911bb7e120" },
+  "noice.nvim": { "branch": "main", "commit": "74c2902146b080035beb19944baf6f014a954720" },
+  "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
+  "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
+  "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
+  "nvim-lspconfig": { "branch": "master", "commit": "cc388d3f6b9c7c943ae2b2dcd46ad470fd257f91" },
+  "nvim-navic": { "branch": "master", "commit": "9c89730da6a05acfeb6a197e212dfadf5aa60ca0" },
+  "nvim-noirbuddy": { "branch": "master", "commit": "67f945acee6da0ea4c11575c72ce8e930090ea95" },
+  "nvim-notify": { "branch": "master", "commit": "94859430020f5cf32a1b97ddd9e596fed9db7981" },
+  "nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" },
+  "nvim-treesitter": { "branch": "master", "commit": "9dd3e07609c5b74c5ac4193d0ce4fe91fb406fea" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" },
+  "nvim-web-devicons": { "branch": "master", "commit": "973ab742f143a796a779af4d786ec409116a0d87" },
+  "persistence.nvim": { "branch": "main", "commit": "4b8051c01f696d8849a5cb8afa9767be8db16e40" },
+  "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
+  "telescope.nvim": { "branch": "master", "commit": "b543aaa2c9cf8123ed2fe7dbb6c211a9cd415124" },
+  "todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
+  "tokyonight.nvim": { "branch": "main", "commit": "9a01eada39558dc3243278e6805d90e8dff45dc0" },
+  "trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" },
+  "typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" },
+  "vim-illuminate": { "branch": "master", "commit": "8c910b2f84ae6acd9b4b17330bb94dd783c0c11a" },
+  "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
+  "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" }
+}
\ No newline at end of file
diff --git a/.config/nvim/lua/config/autocmds.lua b/.config/nvim/lua/config/autocmds.lua
new file mode 100644
index 0000000..27e9e06
--- /dev/null
+++ b/.config/nvim/lua/config/autocmds.lua
@@ -0,0 +1,3 @@
+-- Autocmds are automatically loaded on the VeryLazy event
+-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
+-- Add any additional autocmds here
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
new file mode 100644
index 0000000..2c134f7
--- /dev/null
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -0,0 +1,3 @@
+-- Keymaps are automatically loaded on the VeryLazy event
+-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
+-- Add any additional keymaps here
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 32e6454..5f07074 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -1,33 +1,49 @@
 local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
 if not vim.loop.fs_stat(lazypath) then
-	vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath })
-	vim.fn.system({ "git", "-C", lazypath, "checkout", "tags/stable" }) -- last stable release
+  -- bootstrap lazy.nvim
+  -- stylua: ignore
+  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
 end
-vim.opt.runtimepath:prepend(lazypath)
-
--- require("lazy").setup("plugins")
+vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
 
 require("lazy").setup({
-	import = "plugins",
-	defaults = { lazy = true },
-	checker = { enabled = false },
-	performance = {
-		cache = {
-			enabled = true,
-		},
-		rtp = {
-			disabled_plugins = {
-				"gzip",
-				"matchit",
-				"matchparen",
-				"netrwPlugin",
-				"rplugin",
-				"tarPlugin",
-				"tohtml",
-				"tutor",
-				"zipPlugin",
-			},
-		},
-	},
-	debug = false,
+  spec = {
+    -- add LazyVim and import its plugins
+    { "LazyVim/LazyVim", import = "lazyvim.plugins" },
+    -- import any extras modules here
+    -- { import = "lazyvim.plugins.extras.lang.json" },
+    -- { import = "lazyvim.plugins.extras.ui.mini-animate" },
+    { import = "lazyvim.plugins.extras.coding.copilot" },
+    { import = "lazyvim.plugins.extras.lang.go" },
+    { import = "lazyvim.plugins.extras.lang.typescript" },
+    { import = "lazyvim.plugins.extras.lang.yaml" },
+    -- import/override with your plugins
+    { import = "plugins" },
+  },
+  defaults = {
+    -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
+    -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
+    lazy = false,
+    -- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
+    -- have outdated releases, which may break your Neovim install.
+    version = false, -- always use the latest git commit
+    -- version = "*", -- try installing the latest stable version for plugins that support semver
+  },
+  install = { colorscheme = { "noirbuddy", "tokyonight", "habamax" } },
+  checker = { enabled = true }, -- automatically check for plugin updates
+  performance = {
+    rtp = {
+      -- disable some rtp plugins
+      disabled_plugins = {
+        "gzip",
+        -- "matchit",
+        -- "matchparen",
+        -- "netrwPlugin",
+        "tarPlugin",
+        "tohtml",
+        "tutor",
+        "zipPlugin",
+      },
+    },
+  },
 })
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 3368d0c..65826c7 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -1,78 +1,9 @@
-vim.cmd([[set undofile]])
-vim.cmd([[set completeopt-=preview]])
-vim.cmd([[set viewoptions-=options]])
-vim.g.mapleader = ","
-vim.o.hidden = true
-vim.o.mouse = "a"
-vim.o.splitbelow = true
-vim.o.splitright = true
-vim.o.ttimeout = true
-vim.o.ttimeoutlen = 50
-vim.o.updatetime = 100
-vim.o.autochdir = true
-vim.o.backupdir = "/home/dln/.local/share/nvim/backup/"
-vim.o.backup = true
-vim.g.netrw_dirhistmax = 0
--- vim.o.clipboard = "unnamedplus"
-vim.g.do_filetype_lua = 1
-vim.o.spell = false
-vim.o.spelllang = "en_us"
-vim.opt.winbar = nil
+-- Options are automatically loaded before lazy.nvim startup
+-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
+-- Add any additional options here
 
---- Indent
-vim.o.autoindent = true
-vim.o.breakindent = true
-vim.o.expandtab = true
-vim.o.smartindent = true
-vim.o.joinspaces = false
-vim.o.listchars = "extends:›,precedes:‹,nbsp:·,tab:→ ,trail:·"
-vim.wo.foldlevel = 99
-vim.wo.linebreak = true
-vim.wo.list = true
-vim.o.shiftwidth = 2
-vim.o.tabstop = 2
-vim.o.softtabstop = 2
+local opt = vim.opt
 
---- Search
-vim.cmd("set path+=**")
-vim.cmd("set wildignore+=/var/*,*.so,*.swp,*.zip,*.tar,*.pyc")
-vim.o.ignorecase = true
-vim.o.smartcase = true
-vim.o.wildmode = "longest:full,full"
+opt.relativenumber = false
 
-if vim.fn.executable("rg") then
-	vim.o.grepprg = "rg --vimgrep --no-heading --smart-case"
-end
-
---- Completion
-vim.cmd("set shortmess+=c")
-vim.opt.completeopt = { "menuone", "noselect" }
-
---- Appearance
-vim.o.scrolloff = 7
-vim.o.showmode = false
-vim.o.sidescrolloff = 5
-vim.o.termguicolors = true
-vim.wo.cursorline = true
-vim.wo.number = true
-vim.wo.signcolumn = "yes"
-vim.o.laststatus = 3
-vim.o.cmdheight = 1
--- vim.o.statusline = "═"
--- vim.o.title = true
--- vim.o.titlestring = "%F%m %r %y"
 vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
--- vim.wo.foldmethod = "expr"
--- vim.wo.foldexpr = "nvim_treesitter#foldexpr()"
-vim.g.netrw_dirhistmax = 0
-
---- Key mappings
-vim.keymap.set("n", "<C-l>", ':let @/=""<CR>') -- clear search
-vim.keymap.set("n", ",L", ":luafile %<CR>") -- Reload lua file
-
--- AutoCommand OSC7 workaround for tmux
--- see https://github.com/neovim/neovim/issues/21771
-vim.api.nvim_create_autocmd("dirchanged", {
-	pattern = "*",
-	command = 'call chansend(v:stderr, printf("\\033]7;%s\\033", v:event.cwd))',
-})
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
deleted file mode 100644
index 6bb7800..0000000
--- a/.config/nvim/lua/plugins/cmp.lua
+++ /dev/null
@@ -1,47 +0,0 @@
-return {
-  "hrsh7th/nvim-cmp",
-  dependencies = {
-    "andersevenrud/cmp-tmux",
-    "hrsh7th/cmp-nvim-lsp",
-    "hrsh7th/cmp-buffer",
-    "hrsh7th/cmp-emoji",
-    "hrsh7th/cmp-path",
-    "hrsh7th/cmp-cmdline",
-    "hrsh7th/cmp-nvim-lsp-signature-help",
-    "onsails/lspkind-nvim",
-    { "zbirenbaum/copilot-cmp", opts = {} },
-  },
-  event = "InsertEnter",
-  config = function()
-    local cmp = require("cmp")
-
-    cmp.setup({
-      formatting = {
-        format = require("lspkind").cmp_format(),
-      },
-      window = {
-        completion = cmp.config.window.bordered(),
-        documentation = cmp.config.window.bordered(),
-      },
-      mapping = cmp.mapping.preset.insert({
-        ["<Up>"] = cmp.mapping.select_prev_item(),
-        ["<Down>"] = cmp.mapping.select_next_item(),
-        ["<C-d>"] = cmp.mapping.scroll_docs(-2),
-        ["<C-u>"] = cmp.mapping.scroll_docs(2),
-        ["<C-e>"] = cmp.mapping.abort(),
-        ["<CR>"] = cmp.mapping.confirm({ select = false }),
-        ["<Tab>"] = cmp.mapping.confirm({ select = true }),
-        ["<C-Space>"] = cmp.mapping.complete(),
-      }),
-
-
-      sources = cmp.config.sources({
-        { name = "nvim_lsp",                priority = 3 },
-        { name = "nvim_lsp_signature_help", priority = 10 },
-        { name = "buffer",                  keyword_length = 3 },
-        { name = "copilot" },
-        { name = "emoji" },
-      }),
-    })
-  end,
-}
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
new file mode 100644
index 0000000..d21cc98
--- /dev/null
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -0,0 +1,80 @@
+return {
+
+  {
+    "jesseleite/nvim-noirbuddy",
+    as = "noirbuddy",
+    lazy = false,
+    dependencies = {
+      { "tjdevries/colorbuddy.nvim" },
+    },
+  },
+
+  {
+    "LazyVim/LazyVim",
+    opts = {
+      -- colorscheme = "noirbuddy",
+      colorscheme = function()
+        require("noirbuddy").setup({
+          preset = "slate",
+          styles = {
+            italic = true,
+            bold = true,
+            underline = true,
+            undercurl = true,
+          },
+          colors = {
+            primary = "#FFECB3",
+            secondary = "#B0BEC5",
+            -- background = "#1d2229",
+            background = "#0d1219",
+          },
+        })
+
+        local Color, colors, Group, groups, styles = require("colorbuddy").setup()
+        Color.new("string", "#D7CCC8")
+        Color.new("symbol", "#ECEFF1")
+        --
+        Color.new("comment", "#E57373", nil, styles.italic)
+        Color.new("hlargs", "#FFF8E1")
+
+        Color.new("illuminate_bg", "#112210")
+        Color.new("illuminate_fg", "#66FFEE")
+
+        -- Color.new("search_bg", "#554411")
+        -- Color.new("search_fg", "#FFF0C0")
+        --
+        Color.new("search_bg", "#223311")
+        Color.new("search_fg", "#CCFF33")
+
+        Group.new("TelescopeTitle", colors.primary)
+        Group.new("TelescopeBorder", colors.secondary)
+        Group.new("@comment", colors.comment, nil, styles.italic)
+        Group.new("@string", colors.string, nil, styles.italic)
+
+        Group.new("@keyword", colors.noir_2)
+        Group.new("@keyword.function", colors.noir_2)
+        Group.new("@keyword.return", colors.noir_1)
+
+        Group.new("@operator", colors.noir_1)
+        Group.new("@keyword.operator", colors.noir_1)
+        -- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
+        Group.new("@type.builtin", colors.noir_2)
+
+        Group.new("@variable", colors.symbol, nil, styles.italic)
+        Group.new("Hlargs", colors.hlargs, nil, styles.italic)
+
+        Group.new("@function", colors.noir_1, nil, styles.bold)
+        Group.new("@method", colors.noir_1, nil, styles.bold)
+
+        Group.new("@punctuation", colors.noir_4)
+        Group.new("@punctuation.bracket", colors.noir_4)
+        Group.new("@punctuation.delimiter", colors.noir_4)
+
+        Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
+
+        Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
+        Group.new("IncSearch", colors.search_fg, colors.search_bg)
+      end,
+    },
+  },
+}
diff --git a/.config/nvim/lua/plugins/copilot.lua b/.config/nvim/lua/plugins/copilot.lua
index 24a6f6a..2e8f8aa 100644
--- a/.config/nvim/lua/plugins/copilot.lua
+++ b/.config/nvim/lua/plugins/copilot.lua
@@ -1,18 +1,6 @@
-local M = {
+return {
   "zbirenbaum/copilot.lua",
-  event = { "VeryLazy" },
-  dependencies = {
-    {
-      "zbirenbaum/copilot-cmp",
-      config = function()
-        require("copilot_cmp").setup()
-      end,
-    },
-  },
-}
-
-function M.config()
-  require("copilot").setup({
+  opts = {
     panel = {
       enabled = true,
       auto_refresh = false,
@@ -48,7 +36,5 @@ function M.config()
     },
     copilot_node_command = "node", -- Node version must be < 18
     server_opts_overrides = {},
-  })
-end
-
-return M
+  },
+}
diff --git a/.config/nvim/lua/plugins/dap.lua b/.config/nvim/lua/plugins/dap.lua
deleted file mode 100644
index c31328f..0000000
--- a/.config/nvim/lua/plugins/dap.lua
+++ /dev/null
@@ -1,53 +0,0 @@
-return {
-	"mfussenegger/nvim-dap",
-	dependencies = {
-		{
-			"theHamsta/nvim-dap-virtual-text",
-			config = function()
-				require("nvim-dap-virtual-text").setup({
-					commented = true,
-				})
-			end,
-		},
-		{
-			"leoluz/nvim-dap-go",
-			config = function()
-				require("dap-go").setup()
-			end,
-		},
-	},
-	keys = {
-		{ "DD", ":lua require'dap'.toggle_breakpoint()<cr>", desc = "Toggle Breakpoint" },
-		{ "Dc", ":lua require'dap'.continue()<cr>", desc = "Continue" },
-		{ "Di", ":lua require'dap'.step_into()<cr>", desc = "Step Into" },
-		{ "Do", ":lua require'dap'.step_over()<cr>", desc = "Step Over" },
-		{ "DO", ":lua require'dap'.step_out()<cr>", desc = "Step Out" },
-		{ "Dh", ":lua require'dap.ui.widgets'.hover()<cr>", desc = "Hover" },
-		{ "Dr", ":lua require'dap'.repl.toggle({height = 5})<cr>", desc = "Toogle Repl" },
-	},
-	config = function()
-		require("dap")
-		require("dap.ext.vscode").load_launchjs()
-
-		vim.fn.sign_define(
-			"DapBreakpoint",
-			{ text = "", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
-		)
-		vim.fn.sign_define(
-			"DapBreakpointCondition",
-			{ text = "ﳁ", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
-		)
-		vim.fn.sign_define(
-			"DapBreakpointRejected",
-			{ text = "", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
-		)
-		vim.fn.sign_define(
-			"DapLogPoint",
-			{ text = "", texthl = "DapLogPoint", linehl = "DapLogPoint", numhl = "DapLogPoint" }
-		)
-		vim.fn.sign_define(
-			"DapStopped",
-			{ text = "", texthl = "DapStopped", linehl = "DapStopped", numhl = "DapStopped" }
-		)
-	end,
-}
diff --git a/.config/nvim/lua/plugins/example.lua b/.config/nvim/lua/plugins/example.lua
new file mode 100644
index 0000000..78a3370
--- /dev/null
+++ b/.config/nvim/lua/plugins/example.lua
@@ -0,0 +1,266 @@
+-- since this is just an example spec, don't actually load anything here and return an empty spec
+-- stylua: ignore
+if true then return {} end
+
+-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
+--
+-- In your plugin files, you can:
+-- * add extra plugins
+-- * disable/enabled LazyVim plugins
+-- * override the configuration of LazyVim plugins
+return {
+  -- add gruvbox
+  { "ellisonleao/gruvbox.nvim" },
+
+  -- Configure LazyVim to load gruvbox
+  {
+    "LazyVim/LazyVim",
+    opts = {
+      colorscheme = "gruvbox",
+    },
+  },
+
+  -- change trouble config
+  {
+    "folke/trouble.nvim",
+    -- opts will be merged with the parent spec
+    opts = { use_diagnostic_signs = true },
+  },
+
+  -- disable trouble
+  { "folke/trouble.nvim", enabled = false },
+
+  -- add symbols-outline
+  {
+    "simrat39/symbols-outline.nvim",
+    cmd = "SymbolsOutline",
+    keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
+    config = true,
+  },
+
+  -- override nvim-cmp and add cmp-emoji
+  {
+    "hrsh7th/nvim-cmp",
+    dependencies = { "hrsh7th/cmp-emoji" },
+    ---@param opts cmp.ConfigSchema
+    opts = function(_, opts)
+      local cmp = require("cmp")
+      opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
+    end,
+  },
+
+  -- change some telescope options and a keymap to browse plugin files
+  {
+    "nvim-telescope/telescope.nvim",
+    keys = {
+      -- add a keymap to browse plugin files
+      -- stylua: ignore
+      {
+        "<leader>fp",
+        function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
+        desc = "Find Plugin File",
+      },
+    },
+    -- change some options
+    opts = {
+      defaults = {
+        layout_strategy = "horizontal",
+        layout_config = { prompt_position = "top" },
+        sorting_strategy = "ascending",
+        winblend = 0,
+      },
+    },
+  },
+
+  -- add telescope-fzf-native
+  {
+    "telescope.nvim",
+    dependencies = {
+      "nvim-telescope/telescope-fzf-native.nvim",
+      build = "make",
+      config = function()
+        require("telescope").load_extension("fzf")
+      end,
+    },
+  },
+
+  -- add pyright to lspconfig
+  {
+    "neovim/nvim-lspconfig",
+    ---@class PluginLspOpts
+    opts = {
+      ---@type lspconfig.options
+      servers = {
+        -- pyright will be automatically installed with mason and loaded with lspconfig
+        pyright = {},
+      },
+    },
+  },
+
+  -- add tsserver and setup with typescript.nvim instead of lspconfig
+  {
+    "neovim/nvim-lspconfig",
+    dependencies = {
+      "jose-elias-alvarez/typescript.nvim",
+      init = function()
+        require("lazyvim.util").on_attach(function(_, buffer)
+          -- stylua: ignore
+          vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
+          vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
+        end)
+      end,
+    },
+    ---@class PluginLspOpts
+    opts = {
+      ---@type lspconfig.options
+      servers = {
+        -- tsserver will be automatically installed with mason and loaded with lspconfig
+        tsserver = {},
+      },
+      -- you can do any additional lsp server setup here
+      -- return true if you don't want this server to be setup with lspconfig
+      ---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
+      setup = {
+        -- example to setup with typescript.nvim
+        tsserver = function(_, opts)
+          require("typescript").setup({ server = opts })
+          return true
+        end,
+        -- Specify * to use this function as a fallback for any server
+        -- ["*"] = function(server, opts) end,
+      },
+    },
+  },
+
+  -- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
+  -- treesitter, mason and typescript.nvim. So instead of the above, you can use:
+  { import = "lazyvim.plugins.extras.lang.typescript" },
+
+  -- add more treesitter parsers
+  {
+    "nvim-treesitter/nvim-treesitter",
+    opts = {
+      ensure_installed = {
+        "bash",
+        "html",
+        "javascript",
+        "json",
+        "lua",
+        "markdown",
+        "markdown_inline",
+        "python",
+        "query",
+        "regex",
+        "tsx",
+        "typescript",
+        "vim",
+        "yaml",
+      },
+    },
+  },
+
+  -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
+  -- would overwrite `ensure_installed` with the new value.
+  -- If you'd rather extend the default config, use the code below instead:
+  {
+    "nvim-treesitter/nvim-treesitter",
+    opts = function(_, opts)
+      -- add tsx and treesitter
+      vim.list_extend(opts.ensure_installed, {
+        "tsx",
+        "typescript",
+      })
+    end,
+  },
+
+  -- the opts function can also be used to change the default opts:
+  {
+    "nvim-lualine/lualine.nvim",
+    event = "VeryLazy",
+    opts = function(_, opts)
+      table.insert(opts.sections.lualine_x, "😄")
+    end,
+  },
+
+  -- or you can return new options to override all the defaults
+  {
+    "nvim-lualine/lualine.nvim",
+    event = "VeryLazy",
+    opts = function()
+      return {
+        --[[add your custom lualine config here]]
+      }
+    end,
+  },
+
+  -- use mini.starter instead of alpha
+  { import = "lazyvim.plugins.extras.ui.mini-starter" },
+
+  -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
+  { import = "lazyvim.plugins.extras.lang.json" },
+
+  -- add any tools you want to have installed below
+  {
+    "williamboman/mason.nvim",
+    opts = {
+      ensure_installed = {
+        "stylua",
+        "shellcheck",
+        "shfmt",
+        "flake8",
+      },
+    },
+  },
+
+  -- Use <tab> for completion and snippets (supertab)
+  -- first: disable default <tab> and <s-tab> behavior in LuaSnip
+  {
+    "L3MON4D3/LuaSnip",
+    keys = function()
+      return {}
+    end,
+  },
+  -- then: setup supertab in cmp
+  {
+    "hrsh7th/nvim-cmp",
+    dependencies = {
+      "hrsh7th/cmp-emoji",
+    },
+    ---@param opts cmp.ConfigSchema
+    opts = function(_, opts)
+      local has_words_before = function()
+        unpack = unpack or table.unpack
+        local line, col = unpack(vim.api.nvim_win_get_cursor(0))
+        return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
+      end
+
+      local luasnip = require("luasnip")
+      local cmp = require("cmp")
+
+      opts.mapping = vim.tbl_extend("force", opts.mapping, {
+        ["<Tab>"] = cmp.mapping(function(fallback)
+          if cmp.visible() then
+            cmp.select_next_item()
+            -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
+            -- this way you will only jump inside the snippet region
+          elseif luasnip.expand_or_jumpable() then
+            luasnip.expand_or_jump()
+          elseif has_words_before() then
+            cmp.complete()
+          else
+            fallback()
+          end
+        end, { "i", "s" }),
+        ["<S-Tab>"] = cmp.mapping(function(fallback)
+          if cmp.visible() then
+            cmp.select_prev_item()
+          elseif luasnip.jumpable(-1) then
+            luasnip.jump(-1)
+          else
+            fallback()
+          end
+        end, { "i", "s" }),
+      })
+    end,
+  },
+}
diff --git a/.config/nvim/lua/plugins/gitsigns.lua b/.config/nvim/lua/plugins/gitsigns.lua
deleted file mode 100644
index 779414a..0000000
--- a/.config/nvim/lua/plugins/gitsigns.lua
+++ /dev/null
@@ -1,38 +0,0 @@
-local M = {
-	"lewis6991/gitsigns.nvim",
-}
-
-function M.config()
-	require("gitsigns").setup({
-		numhl = true,
-		signs = {
-			add = { hl = "GitSignsAdd", text = "▌", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
-			change = {
-				hl = "GitSignsChange",
-				text = "▌",
-				numhl = "GitSignsChangeNr",
-				linehl = "GitSignsChangeLn",
-			},
-			delete = {
-				hl = "GitSignsDelete",
-				text = "▖",
-				numhl = "GitSignsDeleteNr",
-				linehl = "GitSignsDeleteLn",
-			},
-			topdelete = {
-				hl = "GitSignsDelete",
-				text = "▘",
-				numhl = "GitSignsDeleteNr",
-				linehl = "GitSignsDeleteLn",
-			},
-			changedelete = {
-				hl = "GitSignsChange",
-				text = "~",
-				numhl = "GitSignsChangeNr",
-				linehl = "GitSignsChangeLn",
-			},
-		},
-	})
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/illuminate.lua b/.config/nvim/lua/plugins/illuminate.lua
deleted file mode 100644
index bc4afcc..0000000
--- a/.config/nvim/lua/plugins/illuminate.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-local M = {
-	"RRethy/vim-illuminate",
-	event = "BufReadPost",
-	config = function()
-		require("illuminate").configure({ delay = 200 })
-	end,
-}
-
-return M
diff --git a/.config/nvim/lua/plugins/indent-blankline.lua b/.config/nvim/lua/plugins/indent-blankline.lua
deleted file mode 100644
index b9f11e1..0000000
--- a/.config/nvim/lua/plugins/indent-blankline.lua
+++ /dev/null
@@ -1,44 +0,0 @@
-local M = {
-	"lukas-reineke/indent-blankline.nvim",
-	event = "BufReadPre",
-	config = {
-		buftype_exclude = { "terminal", "nofile" },
-		filetype_exclude = {
-			"help",
-			"neogitstatus",
-			"NvimTree",
-			"neo-tree",
-			"Trouble",
-		},
-		char = "│",
-		-- char = "┊",
-		char_highlight_list = { "Indent1", "Indent2", "Indent3", "Indent4", "Indent5", "Indent6" },
-		use_treesitter_scope = false,
-		show_trailing_blankline_indent = false,
-		show_current_context = true,
-		context_patterns = {
-			"class",
-			"return",
-			"function",
-			"method",
-			"^if",
-			"^while",
-			"jsx_element",
-			"^for",
-			"^object",
-			"^table",
-			"block",
-			"arguments",
-			"if_statement",
-			"else_clause",
-			"jsx_element",
-			"jsx_self_closing_element",
-			"try_statement",
-			"catch_clause",
-			"import_statement",
-			"operation_type",
-		},
-	},
-}
-
-return M
diff --git a/.config/nvim/lua/plugins/lsp-config.lua b/.config/nvim/lua/plugins/lsp-config.lua
deleted file mode 100644
index 089690f..0000000
--- a/.config/nvim/lua/plugins/lsp-config.lua
+++ /dev/null
@@ -1,241 +0,0 @@
-local M = {
-	"neovim/nvim-lspconfig",
-	event = "VeryLazy",
-}
-
-function M.config()
-	local lspconfig = require("lspconfig")
-
-	local capabilities = require("cmp_nvim_lsp").default_capabilities()
-
-	vim.keymap.set("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>")
-	vim.keymap.set("i", "<C-k>", "<Cmd>lua vim.lsp.buf.signature_help()<CR>")
-	vim.keymap.set("n", "1gd", "<Cmd>lua vim.lsp.buf.type_definition()<CR>")
-	vim.keymap.set("n", "gf", "<Cmd>lua vim.lsp.buf.format()<CR>")
-	vim.keymap.set("n", "[d", "<Cmd>lua vim.lsp.diagnostic.goto_prev()<CR>")
-	vim.keymap.set("n", "]d", "<Cmd>lua vim.lsp.diagnostic.goto_next()<CR>")
-	vim.keymap.set("n", "gwa", "<Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
-	vim.keymap.set("n", "gwr", "<Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
-	vim.keymap.set("n", "gwl", "<Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
-
-	vim.cmd([[autocmd BufWritePre * lua vim.lsp.buf.format({sync = true})]])
-
-	local border = {
-		{ "🭽", "FloatBorder" },
-		{ "▔", "FloatBorder" },
-		{ "🭾", "FloatBorder" },
-		{ "▕", "FloatBorder" },
-		{ "🭿", "FloatBorder" },
-		{ "▁", "FloatBorder" },
-		{ "🭼", "FloatBorder" },
-		{ "▏", "FloatBorder" },
-	}
-
-	vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = border })
-	vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = border })
-	vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
-		update_in_insert = false,
-		virtual_text = false,
-	})
-
-	local signs = { Error = "🔥", Warn = "⚠️ ", Hint = "💡", Info = "💡" }
-	for type, icon in pairs(signs) do
-		local hl = "DiagnosticSign" .. type
-		vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
-	end
-
-	local function on_attach(client, bufnr)
-		require("nvim-navic").attach(client, bufnr)
-	end
-
-	-- simple setups --
-	local servers = {
-		"bashls",
-		"bufls",
-		"dockerls",
-		"gopls",
-		"jsonls",
-		-- "sql",
-		"pyright",
-		"lua_ls",
-		"terraformls",
-		"yamlls",
-	}
-
-	for _, lsp in ipairs(servers) do
-		lspconfig[lsp].setup({ on_attach = on_attach })
-	end
-
-	local efm_prettier = {
-		formatCommand = "prettier --stdin-filepath ${INPUT}",
-		formatStdin = true,
-	}
-
-	lspconfig.gopls.setup({
-		on_attach = on_attach,
-		settings = {
-			gopls = {
-				directoryFilters = {
-					"-bazel-bin",
-					"-bazel-out",
-					"-bazel-testlogs",
-					"-proto",
-				},
-			},
-		},
-	})
-
-	lspconfig.lua_ls.setup({
-		on_attach = function(client, bufnr)
-			on_attach(client, bufnr)
-			vim.cmd([[autocmd BufWritePre <buffer> lua require'stylua-nvim'.format_file()]])
-		end,
-		settings = {
-			Lua = {
-				completion = { kewordSnippet = "Disable" },
-				diagnostics = {
-					enable = true,
-					globals = { "renoise", "use", "vim" },
-				},
-				runtime = {
-					version = "LuaJIT",
-					path = { "?.lua", "?/init.lua", "?/?.lua" },
-				},
-				workspace = {
-					library = vim.api.nvim_get_runtime_file("", true),
-					maxPreload = 2000,
-					preloadFileSize = 1000,
-					checkThirdParty = false,
-				},
-			},
-		},
-	})
-
-	lspconfig.terraformls.setup({})
-
-	local yaml_is_k8s = function(bufnr)
-		local lines = vim.api.nvim_buf_get_lines(bufnr, 0, 50, false) -- Stop after the first 50 lines
-		for _, l in pairs(lines) do
-			if string.find(l, "apiVersion") ~= nil then
-				return true
-			end
-		end
-		return false
-	end
-
-	lspconfig.cssls.setup({
-		cmd = { "vscode-css-languageserver", "--stdio" },
-		capabilities = capabilities,
-	})
-
-	lspconfig.cssmodules_ls.setup({})
-
-	lspconfig.html.setup({
-		cmd = { "vscode-html-languageserver", "--stdio" },
-		filetypes = { "html" },
-		init_options = {
-			configurationSection = { "html", "css", "javascript" },
-			embeddedLanguages = {
-				css = true,
-				javascript = true,
-			},
-		},
-		settings = {},
-	})
-
-	lspconfig.yamlls.setup({
-		settings = {
-			yaml = {
-				format = { enable = true, singleQuote = true },
-				schemaStore = { enable = true, url = "https://json.schemastore.org" },
-				schemas = {
-					-- ["https://json.schemastore.org/github-workflow"] = "*.github/workflows/*",
-					["https://json.schemastore.org/kustomization.json"] = "kustomization.yaml",
-					-- ["https://json.schemastore.org/ansible-role-2.9.json"] = "*/tasks/*.y*ml",
-					kubernetes = {
-						"clusterrolebinding.yaml",
-						"clusterrole-contour.yaml",
-						"clusterrole.yaml",
-						"configmap.yaml",
-						"cronjob.yaml",
-						"daemonset.yaml",
-						"deployment-*.yaml",
-						"deployment.yaml",
-						"*-deployment.yaml",
-						"hpa.yaml",
-						"ingress.yaml",
-						"job.yaml",
-						"namespace.yaml",
-						"pvc.yaml",
-						"rbac.yaml",
-						"rolebinding.yaml",
-						"role.yaml",
-						"sa.yaml",
-						"secret.yaml",
-						"serviceaccounts.yaml",
-						"service-account.yaml",
-						"serviceaccount.yaml",
-						"service-*.yaml",
-						"service.yaml",
-						"*-service.yaml",
-						"statefulset.yaml",
-					},
-				},
-
-				validate = true,
-			},
-		},
-	})
-
-	require("lspconfig").tsserver.setup({
-		root_dir = vim.loop.cwd,
-	})
-
-	-- npm install -g typescript typescript-language-server
-	-- require("lspconfig").tsserver.setup({
-	-- 	on_attach = function(client, bufnr)
-	-- 		client.resolved_capabilities.document_formatting = false
-	-- 		on_attach(client)
-
-	-- 		local ts_utils = require("nvim-lsp-ts-utils")
-
-	-- 		ts_utils.setup({
-	-- 			debug = false,
-	-- 			disable_commands = false,
-	-- 			enable_import_on_completion = false,
-	-- 			import_all_timeout = 5000, -- ms
-
-	-- 			-- eslint
-	-- 			eslint_enable_code_actions = true,
-	-- 			eslint_enable_disable_comments = true,
-	-- 			eslint_bin = "eslint_d",
-	-- 			eslint_config_fallback = nil,
-	-- 			eslint_enable_diagnostics = true,
-
-	-- 			-- formatting
-	-- 			enable_formatting = true,
-	-- 			formatter = "prettier",
-	-- 			formatter_config_fallback = nil,
-
-	-- 			-- parentheses completion
-	-- 			complete_parens = false,
-	-- 			signature_help_in_parens = false,
-
-	-- 			-- update imports on file move
-	-- 			update_imports_on_move = true,
-	-- 			require_confirmation_on_move = true,
-	-- 			watch_dir = nil,
-	-- 		})
-
-	-- 		ts_utils.setup_client(client)
-
-	-- 		vim.api.nvim_buf_set_keymap(bufnr, "n", "<Leader>co", ":TSLspOrganize<CR>", { silent = true })
-	-- 		vim.api.nvim_buf_set_keymap(bufnr, "n", "qq", ":TSLspFixCurrent<CR>", { silent = true })
-	-- 		vim.api.nvim_buf_set_keymap(bufnr, "n", "<Leader>cR", ":TSLspRenameFile<CR>", { silent = true })
-	-- 		vim.api.nvim_buf_set_keymap(bufnr, "n", "<Leader>ci", ":TSLspImportAll<CR>", { silent = true })
-	-- 	end,
-	-- })
-	--
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
deleted file mode 100644
index 65f272c..0000000
--- a/.config/nvim/lua/plugins/lualine.lua
+++ /dev/null
@@ -1,52 +0,0 @@
-local M = {
-	"nvim-lualine/lualine.nvim",
-	dependencies = { "kyazdani42/nvim-web-devicons" },
-	event = "VeryLazy",
-}
-
-local function clock()
-	return os.date("%H:%M")
-end
-
-function M.config()
-	local lualine = require("lualine")
-
-	lualine.setup({
-		options = {
-			globalstatus = true,
-			theme = "onedark",
-			-- theme = "wombat",
-			component_separators = { left = "╲", right = "╱" },
-			section_separators = { left = "", right = "" },
-		},
-		sections = {
-			lualine_a = { "hostname" },
-			lualine_c = {
-				{
-					"filename",
-					path = 1,
-					file_status = true,
-				},
-				{
-					function()
-						local navic = require("nvim-navic")
-						local ret = navic.get_location()
-						return ret:len() > 2000 and "navic error" or ret
-					end,
-					cond = function()
-						if package.loaded["nvim-navic"] then
-							local navic = require("nvim-navic")
-							return navic.is_available()
-						end
-					end,
-					color = { fg = "#ff8f00" },
-				},
-			},
-			lualine_x = { "filetype" },
-			lualine_y = { "location" },
-			lualine_z = { clock },
-		},
-	})
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/marks.lua b/.config/nvim/lua/plugins/marks.lua
deleted file mode 100644
index 6226ae3..0000000
--- a/.config/nvim/lua/plugins/marks.lua
+++ /dev/null
@@ -1,37 +0,0 @@
-local M = {
-	"chentoast/marks.nvim",
-	event = "VeryLazy",
-}
-
-function M.config()
-	local marks = require("marks")
-	marks.setup({
-
-		default_mappings = true,
-		-- which builtin marks to show. default {}
-		-- builtin_marks = { ".", "<", ">", "^" },
-
-		cyclic = true,
-		force_write_shada = false,
-
-		-- marks, and bookmarks.
-		-- can be either a table with all/none of the keys, or a single number, in which case
-		-- the priority applies to all marks.
-		-- default 10.
-		-- sign_priority = { lower=10, upper=15, builtin=8, bookmark=20 },
-		--
-		-- disables mark tracking for specific filetypes. default {}
-		excluded_filetypes = {},
-
-		-- marks.nvim allows you to configure up to 10 bookmark groups, each with its own
-		-- sign/virttext. Bookmarks can be used to group together positions and quickly move
-		-- across multiple buffers. default sign is '!@#$%^&*()' (from 0 to 9), and
-		-- default virt_text is "".
-		bookmark_1 = {
-			sign = "⚑",
-			virt_text = "",
-		},
-	})
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/misc.lua b/.config/nvim/lua/plugins/misc.lua
deleted file mode 100644
index 2740b3d..0000000
--- a/.config/nvim/lua/plugins/misc.lua
+++ /dev/null
@@ -1,197 +0,0 @@
-return {
-
-	"tjdevries/colorbuddy.vim",
-	"wbthomason/packer.nvim",
-	"jose-elias-alvarez/nvim-lsp-ts-utils",
-	"jjo/vim-cue",
-	"ckipp01/stylua-nvim",
-
-	{
-		"jesseleite/nvim-noirbuddy",
-		dependencies = { "tjdevries/colorbuddy.nvim" },
-		config = function()
-			require("noirbuddy").setup({
-				styles = {
-					italic = true,
-					bold = true,
-					underline = true,
-					undercurl = true,
-				},
-				colors = {
-					primary = "#FFECB3",
-					secondary = "#B0BEC5",
-					-- background = "#1d2229",
-					background = "#0d1219",
-				},
-			})
-			local Color, colors, Group, groups, styles = require("colorbuddy").setup()
-			Color.new("string", "#D7CCC8")
-			Color.new("symbol", "#ECEFF1")
-
-			Color.new("comment", "#E57373")
-			Color.new("hlargs", "#FFF8E1")
-
-			Color.new("illuminate_bg", "#112210")
-			Color.new("illuminate_fg", "#66FFEE")
-
-			-- Color.new("search_bg", "#554411")
-			-- Color.new("search_fg", "#FFF0C0")
-			--
-			Color.new("search_bg", "#223311")
-			Color.new("search_fg", "#CCFF33")
-
-			Group.new("TelescopeTitle", colors.primary)
-			Group.new("TelescopeBorder", colors.secondary)
-			Group.new("@comment", colors.comment, nil, styles.bold + styles.italic)
-			Group.new("@string", colors.string, nil, styles.italic)
-
-			Group.new("@keyword", colors.noir_2)
-			Group.new("@keyword.function", colors.noir_2)
-			Group.new("@keyword.return", colors.noir_1)
-
-			Group.new("@operator", colors.noir_1)
-			Group.new("@keyword.operator", colors.noir_1)
-			-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
-			Group.new("@type.builtin", colors.noir_2)
-
-			Group.new("@variable", colors.symbol, nil, styles.italic)
-			Group.new("Hlargs", colors.hlargs, nil, styles.italic)
-
-			Group.new("@function", colors.noir_1, nil, styles.bold)
-			Group.new("@method", colors.noir_1, nil, styles.bold)
-
-			Group.new("@punctuation", colors.noir_4)
-			Group.new("@punctuation.bracket", colors.noir_4)
-			Group.new("@punctuation.delimiter", colors.noir_4)
-
-			Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
-
-			Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
-			Group.new("IncSearch", colors.search_fg, colors.search_bg)
-		end,
-	},
-
-	{
-		"lukas-reineke/headlines.nvim",
-		--     config = {
-		--       ft = { "go" },
-		--       go = {
-		--         query = vim.treesitter.parse_query(
-		--           "go",
-		--           [[
-		--             (function_declaration @headline)
-		--           ]]
-		--         ),
-		--         -- treesitter_language = "go",
-		--       },
-		--     },
-	},
-
-	{
-		"m-demare/hlargs.nvim",
-		event = "VeryLazy",
-		enabled = true,
-		config = {
-			excluded_argnames = {
-				usages = {
-					lua = { "self", "use" },
-				},
-			},
-		},
-	},
-
-	{
-		"folke/trouble.nvim",
-		cmd = { "TroubleToggle", "Trouble" },
-		config = {
-			auto_open = false,
-			use_diagnostic_signs = true,
-		},
-		keys = {
-			{ "<leader>xx", "<cmd>TroubleToggle<cr>" },
-			{ "<leader>xw", "<cmd>TroubleToggle workspace_diagnostics<cr>" },
-			{ "<leader>xd", "<cmd>TroubleToggle document_diagnostics<cr>" },
-			{ "<leader>xl", "<cmd>TroubleToggle loclist<cr>" },
-			{ "<leader>xq", "<cmd>TroubleToggle quickfix<cr>" },
-			{ "gR", "<cmd>TroubleToggle lsp_references<cr>" },
-		},
-	},
-
-	{
-		"danymat/neogen",
-		keys = {
-			{
-				"<leader>cc",
-				function()
-					require("neogen").generate({})
-				end,
-				desc = "Neogen Comment",
-			},
-		},
-		opts = { snippet_engine = "luasnip" },
-	},
-
-	{
-		"smjonas/inc-rename.nvim",
-		cmd = "IncRename",
-		config = true,
-		keys = {
-			{ "<Leader>rn", ":IncRename " },
-		},
-	},
-
-	{
-		"SmiteshP/nvim-navic",
-		config = function()
-			vim.g.navic_silence = true
-			require("nvim-navic").setup({ separator = " ", highlight = true, depth_limit = 5 })
-		end,
-	},
-
-	{
-		"numToStr/Comment.nvim",
-		keys = {
-			{ "<C-_>", "<Plug>(comment_toggle_linewise_current)" },
-			{ "<C-_>", "<Plug>(comment_toggle_linewise_visual)", mode = "v" },
-		},
-		dependencies = {
-			"JoosepAlviste/nvim-ts-context-commentstring",
-		},
-		config = function()
-			require("Comment").setup({
-				pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(),
-			})
-		end,
-	},
-
-	{
-		"ray-x/go.nvim",
-		config = function()
-			require("go").setup({
-				comment_placeholder = "",
-				icons = { breakpoint = "🧘", currentpos = "🏃" },
-				dap_debug_gui = false,
-			})
-			vim.cmd("autocmd FileType go nmap <Leader>c :lua require('go.comment').gen()<cr>")
-			vim.cmd("autocmd BufWritePre *.go :silent! lua require('go.format').gofmt()")
-			vim.cmd("autocmd BufWritePre (InsertLeave?) <buffer> lua vim.lsp.buf.formatting_sync(nil,500)")
-		end,
-	},
-
-	{
-		"onsails/lspkind-nvim",
-		config = function()
-			require("lspkind").init({})
-		end,
-	},
-
-	-- {
-	-- 	url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
-	-- 	config = function()
-	-- 		require("lsp_lines").setup()
-	-- 		vim.diagnostic.config({
-	-- 			virtual_text = false,
-	-- 		})
-	-- 	end,
-	-- },
-}
diff --git a/.config/nvim/lua/plugins/noice.lua b/.config/nvim/lua/plugins/noice.lua
deleted file mode 100644
index 7d49f14..0000000
--- a/.config/nvim/lua/plugins/noice.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-local M = {
-	"folke/noice.nvim",
-	event = "VeryLazy",
-	dependencies = {
-		"MunifTanjim/nui.nvim",
-	},
-}
-
-function M.config()
-	require("noice").setup({
-		presets = {
-			inc_rename = true,
-			long_message_to_split = true,
-			lsp_doc_border = true,
-		},
-	})
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/null-ls.lua b/.config/nvim/lua/plugins/null-ls.lua
deleted file mode 100644
index a3f21d4..0000000
--- a/.config/nvim/lua/plugins/null-ls.lua
+++ /dev/null
@@ -1,44 +0,0 @@
-local M = {
-	"jose-elias-alvarez/null-ls.nvim",
-	dependencies = { "nvim-lua/plenary.nvim" },
-}
-
-function M.config()
-	local null_ls = require("null-ls")
-	local builtins = require("null-ls.builtins")
-
-	null_ls.setup({
-		sources = {
-			builtins.code_actions.eslint_d,
-
-			builtins.completion.spell,
-
-			builtins.diagnostics.buf.with({
-				args = { "lint", "--disable-symlinks", "--path", "$FILENAME" },
-				cwd = function()
-					local file_dir = vim.fn.expand("%:p:h") .. ";"
-					local buf_yaml = vim.fn.findfile("buf.yaml", file_dir)
-					if buf_yaml then
-						return vim.fn.fnamemodify(buf_yaml, ":h")
-					end
-				end,
-			}),
-			builtins.diagnostics.buildifier,
-			builtins.diagnostics.cue_fmt,
-			builtins.diagnostics.eslint_d,
-			builtins.diagnostics.golangci_lint,
-
-			builtins.formatting.black,
-			builtins.formatting.buf,
-			builtins.formatting.buildifier,
-			builtins.formatting.cue_fmt,
-			builtins.formatting.prettierd,
-			builtins.formatting.shfmt,
-			builtins.formatting.sqlfluff,
-			builtins.formatting.stylua,
-		},
-		debug = true,
-	})
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/osc52.lua b/.config/nvim/lua/plugins/osc52.lua
deleted file mode 100644
index b788cde..0000000
--- a/.config/nvim/lua/plugins/osc52.lua
+++ /dev/null
@@ -1,18 +0,0 @@
-local M = {
-	"ojroques/nvim-osc52",
-}
-
-function M.config()
-	local osc52 = require("osc52")
-	osc52.setup({
-		max_length = 0, -- Maximum length of selection (0 for no limit)
-		silent = false, -- Disable message on successful copy
-		trim = false, -- Trim text before copy
-	})
-
-	vim.keymap.set("n", "<leader>c", require("osc52").copy_operator, { expr = true })
-	vim.keymap.set("n", "<leader>cc", "<leader>c_", { remap = true })
-	vim.keymap.set("x", "<leader>c", require("osc52").copy_visual)
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/shelman-theme.lua b/.config/nvim/lua/plugins/shelman-theme.lua
deleted file mode 100644
index 112653e..0000000
--- a/.config/nvim/lua/plugins/shelman-theme.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-return {}
--- return {
--- 	name = "shelman-theme",
--- 	dir = "~/.config/shelman-theme/current/neovim",
--- 	dev = true,
--- 	lazy = false,
--- 	priority = 1000,
--- 	config = function()
--- 		vim.cmd([[colorscheme shelman]])
--- 	end,
--- }
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
deleted file mode 100644
index 1810ff3..0000000
--- a/.config/nvim/lua/plugins/telescope.lua
+++ /dev/null
@@ -1,112 +0,0 @@
-local function project_files()
-	require("telescope.builtin").find_files({
-		cwd = require("lspconfig.util").root_pattern(".git")(vim.fn.expand("%:p")),
-	})
-end
-
-local M = {
-	"nvim-telescope/telescope.nvim",
-	lazy = false,
-	dependencies = {
-		"nvim-lua/popup.nvim",
-		"nvim-lua/plenary.nvim",
-		"nvim-telescope/telescope-fzy-native.nvim",
-		"nvim-telescope/telescope-github.nvim",
-		"nvim-telescope/telescope-dap.nvim",
-		"nvim-telescope/telescope-ui-select.nvim",
-	},
-}
-
-function M.config()
-	local telescope = require("telescope")
-	local actions = require("telescope.actions")
-	local previewers = require("telescope.previewers")
-
-	vim.keymap.set("n", "<leader>b", '<cmd>lua require("telescope.builtin").buffers()<CR>')
-	vim.keymap.set("n", "<leader>f", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
-	vim.keymap.set("n", "<space>", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
-	vim.keymap.set("n", "<leader><space>", '<cmd>lua require("telescope.builtin").oldfiles({cwd_only=true})<CR>')
-	vim.keymap.set("n", "<leader>d", '<cmd>lua require("telescope.builtin").diagnostics({bufnr=0})<CR>')
-	vim.keymap.set("n", "<leader>e", '<cmd>lua require("telescope.builtin").git_files()<CR>')
-	vim.keymap.set("n", "<leader>g", '<cmd>lua require("telescope.builtin").git_status()<CR>')
-	vim.keymap.set("n", "<leader>a", '<cmd>lua require("telescope.builtin").lsp_code_actions()<CR>')
-	vim.keymap.set("n", "<leader>m", '<cmd>lua require("telescope.builtin").marks()<CR>')
-	vim.keymap.set("n", "<leader>s", '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>')
-	vim.keymap.set("n", "<leader>S", '<cmd>lua require("telescope.builtin").lsp_dynamic_workspace_symbols()<CR>')
-	vim.keymap.set("n", "<leader>t", '<cmd>lua require("telescope.builtin").treesitter()<CR>')
-	vim.keymap.set("n", "<leader>/", '<cmd>lua require("telescope.builtin").live_grep()<CR>')
-	vim.keymap.set("n", "<leader>.", '<cmd>lua require("telescope.builtin").file_browser()<CR>')
-	vim.keymap.set("n", "<leader>p", '<cmd>lua require("telescope.builtin").registers()<CR>')
-	vim.keymap.set("n", "ga", "<cmd>lua vim.lsp.buf.code_action()<CR>")
-	vim.keymap.set("n", "gr", '<cmd>lua require("telescope.builtin").lsp_references()<CR>')
-	vim.keymap.set("n", "gd", '<cmd>lua require("telescope.builtin").lsp_definitions()<CR>')
-	vim.keymap.set("n", "gi", '<cmd>lua require("telescope.builtin").lsp_implementations()<CR>')
-	vim.keymap.set("n", "g/", '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>')
-	vim.keymap.set(
-		"n",
-		"g?",
-		'<cmd>lua require("telescope.builtin").lsp_workspace_symbols({query=(vim.bo.filetype == "go" and "\'" or "")})<CR>'
-	)
-	vim.keymap.set("n", "ge", '<cmd>lua require("telescope.builtin").lsp_document_diagnostics()<CR>')
-	vim.keymap.set("n", "Db", '<cmd>lua require("telescope").extensions.dap.list_breakpoints()<CR>')
-	vim.keymap.set("n", "Dcc", '<cmd>lua require("telescope").extensions.dap.commands()<CR>')
-	vim.keymap.set("n", "Df", '<cmd>lua require("telescope").extensions.dap.frames()<CR>')
-	vim.keymap.set("n", "Dv", '<cmd>lua require("telescope").extensions.dap.variables()<CR>')
-
-	-- Setup
-	telescope.setup({
-		defaults = {
-			layout_strategy = "flex",
-			-- layout_defaults = {flip_columns = 160},
-			layout_config = {
-				preview_cutoff = 10,
-				prompt_position = "bottom",
-				mirror = true,
-			},
-			mappings = {
-				i = {
-					["<CR>"] = actions.select_default + actions.center,
-					["<esc>"] = actions.close,
-					["<tab>"] = actions.add_selection,
-				},
-			},
-			color_devicons = true,
-			file_previewer = previewers.vim_buffer_cat.new,
-			grep_previewer = previewers.vim_buffer_vimgrep.new,
-			qflist_previewer = previewers.vim_buffer_qflist.new,
-		},
-		extensions = {
-			["ui-select"] = {
-				require("telescope.themes").get_dropdown({
-					-- even more opts
-				}),
-			},
-		},
-	})
-
-	local layout_strategies = require("telescope.pickers.layout_strategies")
-	local config = require("telescope.config")
-
-	layout_strategies.flex = function(self, max_columns, max_lines)
-		local layout_config = self.layout_config or {}
-
-		local flip_columns = layout_config.flip_columns or 160 -- Here's why.
-		local flip_lines = layout_config.flip_lines or 20
-
-		if max_columns < flip_columns and max_lines > flip_lines then
-			self.layout_config = (config.values.layout_defaults or {})["vertical"]
-			return layout_strategies.vertical(self, max_columns, max_lines)
-		else
-			self.layout_config = (config.values.layout_defaults or {})["horizontal"]
-			return layout_strategies.horizontal(self, max_columns, max_lines)
-		end
-	end
-
-	-- Extensions
-	telescope.load_extension("dap")
-	telescope.load_extension("fzy_native")
-	telescope.load_extension("gh")
-	telescope.load_extension("ui-select")
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
deleted file mode 100644
index 7ec330a..0000000
--- a/.config/nvim/lua/plugins/treesitter.lua
+++ /dev/null
@@ -1,130 +0,0 @@
-return {
-	{ "nvim-treesitter/playground", cmd = "TSPlaygroundToggle" },
-
-	{
-		"nvim-treesitter/nvim-treesitter",
-		build = ":TSUpdate",
-		event = "BufReadPost",
-		dependencies = {
-			"nvim-treesitter/nvim-treesitter-textobjects",
-			"windwp/nvim-ts-autotag",
-		},
-		config = function()
-			require("nvim-treesitter.configs").setup({
-				ensure_installed = {
-					"bash",
-					"c",
-					"cmake",
-					"cpp",
-					"css",
-					"diff",
-					"dockerfile",
-					"gdscript",
-					"git_rebase",
-					"gitcommit",
-					"gitignore",
-					"go",
-					"gomod",
-					"graphql",
-					"help",
-					"hcl",
-					"html",
-					"http",
-					"java",
-					"javascript",
-					"jsdoc",
-					"json",
-					"jsonc",
-					"kotlin",
-					"latex",
-					"lua",
-					"make",
-					"markdown",
-					"markdown_inline",
-					"meson",
-					"ninja",
-					"php",
-					"proto",
-					"python",
-					"query",
-					"regex",
-					"rego",
-					"rust",
-					"scss",
-					"sql",
-					"svelte",
-					"teal",
-					"toml",
-					"tsx",
-					"typescript",
-					"vhs",
-					"vim",
-					"vue",
-					"wgsl",
-					"yaml",
-					"zig",
-				},
-				highlight = {
-					enable = true,
-					use_languagetree = true,
-				},
-				indent = {
-					enable = false,
-				},
-				context_commentstring = { enable = true, enable_autocmd = false },
-				playground = {
-					enable = true,
-					disable = {},
-					updatetime = 25,
-					persist_queries = false,
-				},
-				incremental_selection = {
-					enable = true,
-					keymaps = {
-						init_selection = "ss",
-						node_incremental = "sq",
-						scope_incremental = "sd",
-						node_decremental = "sa",
-					},
-				},
-				query_linter = {
-					enable = true,
-					use_virtual_text = true,
-					lint_events = { "BufWrite", "CursorHold" },
-				},
-				textobjects = {
-					move = {
-						enable = true,
-						goto_next_start = {
-							["]]"] = "@function.outer",
-							["]m"] = "@class.outer",
-						},
-						goto_next_end = {
-							["]["] = "@function.outer",
-							["]M"] = "@class.outer",
-						},
-						goto_previous_start = {
-							["[["] = "@function.outer",
-							["[m"] = "@class.outer",
-						},
-						goto_previous_end = {
-							["[]"] = "@function.outer",
-							["[M"] = "@class.outer",
-						},
-					},
-					select = {
-						enable = true,
-						keymaps = {
-							["uc"] = "@comment.outer",
-						},
-					},
-				},
-				--- nvim-ts-autotag ---
-				autotag = {
-					enable = true,
-					filetypes = { "html", "javascriptreact", "xml" },
-				},
-			})
-		end,
-	},
-}

From 251539979eac45798caa0daa2263250be96367a7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 18 Sep 2023 00:45:46 +0200
Subject: [PATCH 130/656] nvim: yaml schema goodness

---
 .config/nvim/lua/config/lazy.lua  | 78 +++++++++++++++----------------
 .config/nvim/lua/plugins/yaml.lua | 25 ++++++++++
 2 files changed, 64 insertions(+), 39 deletions(-)
 create mode 100644 .config/nvim/lua/plugins/yaml.lua

diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 5f07074..cf0f003 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -7,43 +7,43 @@ end
 vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
 
 require("lazy").setup({
-  spec = {
-    -- add LazyVim and import its plugins
-    { "LazyVim/LazyVim", import = "lazyvim.plugins" },
-    -- import any extras modules here
-    -- { import = "lazyvim.plugins.extras.lang.json" },
-    -- { import = "lazyvim.plugins.extras.ui.mini-animate" },
-    { import = "lazyvim.plugins.extras.coding.copilot" },
-    { import = "lazyvim.plugins.extras.lang.go" },
-    { import = "lazyvim.plugins.extras.lang.typescript" },
-    { import = "lazyvim.plugins.extras.lang.yaml" },
-    -- import/override with your plugins
-    { import = "plugins" },
-  },
-  defaults = {
-    -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
-    -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
-    lazy = false,
-    -- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
-    -- have outdated releases, which may break your Neovim install.
-    version = false, -- always use the latest git commit
-    -- version = "*", -- try installing the latest stable version for plugins that support semver
-  },
-  install = { colorscheme = { "noirbuddy", "tokyonight", "habamax" } },
-  checker = { enabled = true }, -- automatically check for plugin updates
-  performance = {
-    rtp = {
-      -- disable some rtp plugins
-      disabled_plugins = {
-        "gzip",
-        -- "matchit",
-        -- "matchparen",
-        -- "netrwPlugin",
-        "tarPlugin",
-        "tohtml",
-        "tutor",
-        "zipPlugin",
-      },
-    },
-  },
+	spec = {
+		-- add LazyVim and import its plugins
+		{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
+		-- import any extras modules here
+		-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
+		{ import = "lazyvim.plugins.extras.coding.copilot" },
+		{ import = "lazyvim.plugins.extras.lang.go" },
+		{ import = "lazyvim.plugins.extras.lang.json" },
+		{ import = "lazyvim.plugins.extras.lang.typescript" },
+		{ import = "lazyvim.plugins.extras.lang.yaml" },
+		-- import/override with your plugins
+		{ import = "plugins" },
+	},
+	defaults = {
+		-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
+		-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
+		lazy = false,
+		-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
+		-- have outdated releases, which may break your Neovim install.
+		version = false, -- always use the latest git commit
+		-- version = "*", -- try installing the latest stable version for plugins that support semver
+	},
+	install = { colorscheme = { "noirbuddy", "tokyonight", "habamax" } },
+	checker = { enabled = true }, -- automatically check for plugin updates
+	performance = {
+		rtp = {
+			-- disable some rtp plugins
+			disabled_plugins = {
+				"gzip",
+				-- "matchit",
+				-- "matchparen",
+				-- "netrwPlugin",
+				"tarPlugin",
+				"tohtml",
+				"tutor",
+				"zipPlugin",
+			},
+		},
+	},
 })
diff --git a/.config/nvim/lua/plugins/yaml.lua b/.config/nvim/lua/plugins/yaml.lua
new file mode 100644
index 0000000..d14f2a4
--- /dev/null
+++ b/.config/nvim/lua/plugins/yaml.lua
@@ -0,0 +1,25 @@
+return {
+	{
+		"someone-stole-my-name/yaml-companion.nvim",
+		dependencies = {
+			{ "neovim/nvim-lspconfig" },
+			{ "nvim-lua/plenary.nvim" },
+			{ "nvim-telescope/telescope.nvim" },
+		},
+		config = function()
+			require("yaml-companion").setup()
+			require("telescope").load_extension("yaml_schema")
+			local cfg = require("yaml-companion").setup({
+				-- Add any options here, or leave empty to use the default settings
+				-- Additional schemas available in Telescope picker
+				schemas = {
+					{
+						name = "Kubernetes 1.25.9",
+						uri = "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.25.9-standalone-strict/all.json",
+					},
+				},
+			})
+			require("lspconfig")["yamlls"].setup(cfg)
+		end,
+	},
+}

From 206b5ee00641a7a53de5285c8f68340d13fee56b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 18 Sep 2023 13:53:33 +0200
Subject: [PATCH 131/656] nvim: pretty indent colors

---
 .config/nvim/lua/plugins/colorscheme.lua | 149 +++++++------
 .config/nvim/lua/plugins/example.lua     | 266 -----------------------
 .config/nvim/lua/plugins/ui.lua          |  19 ++
 3 files changed, 103 insertions(+), 331 deletions(-)
 delete mode 100644 .config/nvim/lua/plugins/example.lua
 create mode 100644 .config/nvim/lua/plugins/ui.lua

diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index d21cc98..41daa47 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,80 +1,99 @@
 return {
 
-  {
-    "jesseleite/nvim-noirbuddy",
-    as = "noirbuddy",
-    lazy = false,
-    dependencies = {
-      { "tjdevries/colorbuddy.nvim" },
-    },
-  },
+	{
+		"jesseleite/nvim-noirbuddy",
+		as = "noirbuddy",
+		lazy = false,
+		dependencies = {
+			{ "tjdevries/colorbuddy.nvim" },
+		},
+	},
 
-  {
-    "LazyVim/LazyVim",
-    opts = {
-      -- colorscheme = "noirbuddy",
-      colorscheme = function()
-        require("noirbuddy").setup({
-          preset = "slate",
-          styles = {
-            italic = true,
-            bold = true,
-            underline = true,
-            undercurl = true,
-          },
-          colors = {
-            primary = "#FFECB3",
-            secondary = "#B0BEC5",
-            -- background = "#1d2229",
-            background = "#0d1219",
-          },
-        })
+	{
+		"LazyVim/LazyVim",
+		opts = {
+			-- colorscheme = "noirbuddy",
+			colorscheme = function()
+				require("noirbuddy").setup({
+					preset = "slate",
+					styles = {
+						italic = true,
+						bold = true,
+						underline = true,
+						undercurl = true,
+					},
+					colors = {
+						primary = "#FFECB3",
+						secondary = "#B0BEC5",
+						-- background = "#1d2229",
+						background = "#0d1219",
+					},
+				})
 
-        local Color, colors, Group, groups, styles = require("colorbuddy").setup()
-        Color.new("string", "#D7CCC8")
-        Color.new("symbol", "#ECEFF1")
-        --
-        Color.new("comment", "#E57373", nil, styles.italic)
-        Color.new("hlargs", "#FFF8E1")
+				local Color, colors, Group, groups, styles = require("colorbuddy").setup()
+				Color.new("string", "#D7CCC8")
+				Color.new("symbol", "#ECEFF1")
+				--
+				Color.new("comment", "#E57373", nil, styles.italic)
+				Color.new("hlargs", "#FFF8E1")
 
-        Color.new("illuminate_bg", "#112210")
-        Color.new("illuminate_fg", "#66FFEE")
+				Color.new("illuminate_bg", "#112210")
+				Color.new("illuminate_fg", "#66FFEE")
 
-        -- Color.new("search_bg", "#554411")
-        -- Color.new("search_fg", "#FFF0C0")
-        --
-        Color.new("search_bg", "#223311")
-        Color.new("search_fg", "#CCFF33")
+				-- Color.new("search_bg", "#554411")
+				-- Color.new("search_fg", "#FFF0C0")
+				--
+				Color.new("search_bg", "#223311")
+				Color.new("search_fg", "#CCFF33")
 
-        Group.new("TelescopeTitle", colors.primary)
-        Group.new("TelescopeBorder", colors.secondary)
-        Group.new("@comment", colors.comment, nil, styles.italic)
-        Group.new("@string", colors.string, nil, styles.italic)
+				Color.new("IndentBlanklineIndent5", "#E06C75", styles.nocombine)
+				Color.new("IndentBlanklineIndent6", "#E5C07B", styles.nocombine)
+				Color.new("IndentBlanklineIndent3", "#98C379", styles.nocombine)
+				Color.new("IndentBlanklineIndent4", "#56B6C2", styles.nocombine)
+				Color.new("IndentBlanklineIndent1", "#61AFEF", styles.nocombine)
+				Color.new("IndentBlanklineIndent2", "#C678DD", styles.nocombine)
+				Group.new("IndentBlanklineIndent1", colors.IndentBlanklineIndent1:dark(0.2))
+				Group.new("IndentBlanklineIndent2", colors.IndentBlanklineIndent2:dark(0.2))
+				Group.new("IndentBlanklineIndent3", colors.IndentBlanklineIndent3:dark(0.2))
+				Group.new("IndentBlanklineIndent4", colors.IndentBlanklineIndent4:dark(0.2))
+				Group.new("IndentBlanklineIndent5", colors.IndentBlanklineIndent5:dark(0.2))
+				Group.new("IndentBlanklineIndent6", colors.IndentBlanklineIndent6:dark(0.2))
 
-        Group.new("@keyword", colors.noir_2)
-        Group.new("@keyword.function", colors.noir_2)
-        Group.new("@keyword.return", colors.noir_1)
+				Color.new("IndentBlanklineContextChar", "#00AABB", styles.nocombine)
+				Group.new("IndentBlanklineContextChar", colors.IndentBlanklineContextChar)
 
-        Group.new("@operator", colors.noir_1)
-        Group.new("@keyword.operator", colors.noir_1)
-        -- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
-        Group.new("@type.builtin", colors.noir_2)
+				Color.new("MiniIndentscopeSymbol", "#57FAF0")
+				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
 
-        Group.new("@variable", colors.symbol, nil, styles.italic)
-        Group.new("Hlargs", colors.hlargs, nil, styles.italic)
+				Group.new("TelescopeTitle", colors.primary)
+				Group.new("TelescopeBorder", colors.secondary)
+				Group.new("@comment", colors.comment, nil, styles.italic)
+				Group.new("@string", colors.string, nil, styles.italic)
 
-        Group.new("@function", colors.noir_1, nil, styles.bold)
-        Group.new("@method", colors.noir_1, nil, styles.bold)
+				Group.new("@keyword", colors.noir_2)
+				Group.new("@keyword.function", colors.noir_2)
+				Group.new("@keyword.return", colors.noir_1)
 
-        Group.new("@punctuation", colors.noir_4)
-        Group.new("@punctuation.bracket", colors.noir_4)
-        Group.new("@punctuation.delimiter", colors.noir_4)
+				Group.new("@operator", colors.noir_1)
+				Group.new("@keyword.operator", colors.noir_1)
+				-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
+				Group.new("@type.builtin", colors.noir_2)
 
-        Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
+				Group.new("@variable", colors.symbol, nil, styles.italic)
+				Group.new("Hlargs", colors.hlargs, nil, styles.italic)
 
-        Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
-        Group.new("IncSearch", colors.search_fg, colors.search_bg)
-      end,
-    },
-  },
+				Group.new("@function", colors.noir_1, nil, styles.bold)
+				Group.new("@method", colors.noir_1, nil, styles.bold)
+
+				Group.new("@punctuation", colors.noir_4)
+				Group.new("@punctuation.bracket", colors.noir_4)
+				Group.new("@punctuation.delimiter", colors.noir_4)
+
+				Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
+
+				Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
+				Group.new("IncSearch", colors.search_fg, colors.search_bg)
+			end,
+		},
+	},
 }
diff --git a/.config/nvim/lua/plugins/example.lua b/.config/nvim/lua/plugins/example.lua
deleted file mode 100644
index 78a3370..0000000
--- a/.config/nvim/lua/plugins/example.lua
+++ /dev/null
@@ -1,266 +0,0 @@
--- since this is just an example spec, don't actually load anything here and return an empty spec
--- stylua: ignore
-if true then return {} end
-
--- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
---
--- In your plugin files, you can:
--- * add extra plugins
--- * disable/enabled LazyVim plugins
--- * override the configuration of LazyVim plugins
-return {
-  -- add gruvbox
-  { "ellisonleao/gruvbox.nvim" },
-
-  -- Configure LazyVim to load gruvbox
-  {
-    "LazyVim/LazyVim",
-    opts = {
-      colorscheme = "gruvbox",
-    },
-  },
-
-  -- change trouble config
-  {
-    "folke/trouble.nvim",
-    -- opts will be merged with the parent spec
-    opts = { use_diagnostic_signs = true },
-  },
-
-  -- disable trouble
-  { "folke/trouble.nvim", enabled = false },
-
-  -- add symbols-outline
-  {
-    "simrat39/symbols-outline.nvim",
-    cmd = "SymbolsOutline",
-    keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
-    config = true,
-  },
-
-  -- override nvim-cmp and add cmp-emoji
-  {
-    "hrsh7th/nvim-cmp",
-    dependencies = { "hrsh7th/cmp-emoji" },
-    ---@param opts cmp.ConfigSchema
-    opts = function(_, opts)
-      local cmp = require("cmp")
-      opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
-    end,
-  },
-
-  -- change some telescope options and a keymap to browse plugin files
-  {
-    "nvim-telescope/telescope.nvim",
-    keys = {
-      -- add a keymap to browse plugin files
-      -- stylua: ignore
-      {
-        "<leader>fp",
-        function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
-        desc = "Find Plugin File",
-      },
-    },
-    -- change some options
-    opts = {
-      defaults = {
-        layout_strategy = "horizontal",
-        layout_config = { prompt_position = "top" },
-        sorting_strategy = "ascending",
-        winblend = 0,
-      },
-    },
-  },
-
-  -- add telescope-fzf-native
-  {
-    "telescope.nvim",
-    dependencies = {
-      "nvim-telescope/telescope-fzf-native.nvim",
-      build = "make",
-      config = function()
-        require("telescope").load_extension("fzf")
-      end,
-    },
-  },
-
-  -- add pyright to lspconfig
-  {
-    "neovim/nvim-lspconfig",
-    ---@class PluginLspOpts
-    opts = {
-      ---@type lspconfig.options
-      servers = {
-        -- pyright will be automatically installed with mason and loaded with lspconfig
-        pyright = {},
-      },
-    },
-  },
-
-  -- add tsserver and setup with typescript.nvim instead of lspconfig
-  {
-    "neovim/nvim-lspconfig",
-    dependencies = {
-      "jose-elias-alvarez/typescript.nvim",
-      init = function()
-        require("lazyvim.util").on_attach(function(_, buffer)
-          -- stylua: ignore
-          vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
-          vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
-        end)
-      end,
-    },
-    ---@class PluginLspOpts
-    opts = {
-      ---@type lspconfig.options
-      servers = {
-        -- tsserver will be automatically installed with mason and loaded with lspconfig
-        tsserver = {},
-      },
-      -- you can do any additional lsp server setup here
-      -- return true if you don't want this server to be setup with lspconfig
-      ---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
-      setup = {
-        -- example to setup with typescript.nvim
-        tsserver = function(_, opts)
-          require("typescript").setup({ server = opts })
-          return true
-        end,
-        -- Specify * to use this function as a fallback for any server
-        -- ["*"] = function(server, opts) end,
-      },
-    },
-  },
-
-  -- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
-  -- treesitter, mason and typescript.nvim. So instead of the above, you can use:
-  { import = "lazyvim.plugins.extras.lang.typescript" },
-
-  -- add more treesitter parsers
-  {
-    "nvim-treesitter/nvim-treesitter",
-    opts = {
-      ensure_installed = {
-        "bash",
-        "html",
-        "javascript",
-        "json",
-        "lua",
-        "markdown",
-        "markdown_inline",
-        "python",
-        "query",
-        "regex",
-        "tsx",
-        "typescript",
-        "vim",
-        "yaml",
-      },
-    },
-  },
-
-  -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
-  -- would overwrite `ensure_installed` with the new value.
-  -- If you'd rather extend the default config, use the code below instead:
-  {
-    "nvim-treesitter/nvim-treesitter",
-    opts = function(_, opts)
-      -- add tsx and treesitter
-      vim.list_extend(opts.ensure_installed, {
-        "tsx",
-        "typescript",
-      })
-    end,
-  },
-
-  -- the opts function can also be used to change the default opts:
-  {
-    "nvim-lualine/lualine.nvim",
-    event = "VeryLazy",
-    opts = function(_, opts)
-      table.insert(opts.sections.lualine_x, "😄")
-    end,
-  },
-
-  -- or you can return new options to override all the defaults
-  {
-    "nvim-lualine/lualine.nvim",
-    event = "VeryLazy",
-    opts = function()
-      return {
-        --[[add your custom lualine config here]]
-      }
-    end,
-  },
-
-  -- use mini.starter instead of alpha
-  { import = "lazyvim.plugins.extras.ui.mini-starter" },
-
-  -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
-  { import = "lazyvim.plugins.extras.lang.json" },
-
-  -- add any tools you want to have installed below
-  {
-    "williamboman/mason.nvim",
-    opts = {
-      ensure_installed = {
-        "stylua",
-        "shellcheck",
-        "shfmt",
-        "flake8",
-      },
-    },
-  },
-
-  -- Use <tab> for completion and snippets (supertab)
-  -- first: disable default <tab> and <s-tab> behavior in LuaSnip
-  {
-    "L3MON4D3/LuaSnip",
-    keys = function()
-      return {}
-    end,
-  },
-  -- then: setup supertab in cmp
-  {
-    "hrsh7th/nvim-cmp",
-    dependencies = {
-      "hrsh7th/cmp-emoji",
-    },
-    ---@param opts cmp.ConfigSchema
-    opts = function(_, opts)
-      local has_words_before = function()
-        unpack = unpack or table.unpack
-        local line, col = unpack(vim.api.nvim_win_get_cursor(0))
-        return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
-      end
-
-      local luasnip = require("luasnip")
-      local cmp = require("cmp")
-
-      opts.mapping = vim.tbl_extend("force", opts.mapping, {
-        ["<Tab>"] = cmp.mapping(function(fallback)
-          if cmp.visible() then
-            cmp.select_next_item()
-            -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
-            -- this way you will only jump inside the snippet region
-          elseif luasnip.expand_or_jumpable() then
-            luasnip.expand_or_jump()
-          elseif has_words_before() then
-            cmp.complete()
-          else
-            fallback()
-          end
-        end, { "i", "s" }),
-        ["<S-Tab>"] = cmp.mapping(function(fallback)
-          if cmp.visible() then
-            cmp.select_prev_item()
-          elseif luasnip.jumpable(-1) then
-            luasnip.jump(-1)
-          else
-            fallback()
-          end
-        end, { "i", "s" }),
-      })
-    end,
-  },
-}
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
new file mode 100644
index 0000000..8dacbc2
--- /dev/null
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -0,0 +1,19 @@
+return {
+	{
+		"lukas-reineke/indent-blankline.nvim",
+		opts = {
+			char = "┊",
+			char_highlight_list = {
+				"IndentBlanklineIndent1",
+				"IndentBlanklineIndent2",
+				"IndentBlanklineIndent3",
+				"IndentBlanklineIndent4",
+				"IndentBlanklineIndent5",
+				"IndentBlanklineIndent6",
+			},
+			show_current_context = true,
+			show_current_context_start = false,
+			context_char = "│",
+		},
+	},
+}

From 4e111c7a407cee510c91c4dae2f0e29c7d9af165 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 20 Sep 2023 12:25:15 +0200
Subject: [PATCH 132/656] nvim: onward with colors!

---
 .config/nvim/lazy-lock.json              | 27 ++++++-----
 .config/nvim/lua/config/options.lua      |  4 ++
 .config/nvim/lua/plugins/colorscheme.lua | 60 ++++++++++++++++++++++--
 3 files changed, 75 insertions(+), 16 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index de433ee..faac63c 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,9 +1,9 @@
 {
   "LazyVim": { "branch": "main", "commit": "a72a84972d85e5bbc6b9d60a0983b37efef21b8a" },
-  "LuaSnip": { "branch": "master", "commit": "3657c3f3cb2214a681fc7e95b6ffb509d076ebfb" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "2a6a5d3e2bc8a5727b6d083d2920d12a392ed05b" },
+  "LuaSnip": { "branch": "master", "commit": "8efa4e402a24df6a4713a2ec653147c49e8f73de" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "57b379a6f521eca8e955283c2886b6261c4e14e8" },
   "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" },
-  "bufferline.nvim": { "branch": "main", "commit": "9961d87bb3ec008213c46ba14b3f384a5f520eb5" },
+  "bufferline.nvim": { "branch": "main", "commit": "81cd04fe7c914d020d331cea1e707da5f14c2665" },
   "catppuccin": { "branch": "main", "commit": "85e93601e0f0b48aa2c6bbfae4d0e9d7a1898280" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
@@ -13,13 +13,13 @@
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "2c942f33ba5c621c906e625e00a1bb504b65e2f0" },
   "dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" },
-  "flash.nvim": { "branch": "main", "commit": "8a8e74922a383c253b7f92e042b749150140c8d1" },
+  "flash.nvim": { "branch": "main", "commit": "cc8c7e03987134997d74ee87e55a5717279f2d05" },
   "friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" },
-  "gitsigns.nvim": { "branch": "main", "commit": "907ae8636016aab2f283576fc60d46ca3427e579" },
+  "gitsigns.nvim": { "branch": "main", "commit": "bce4576a9047085a528c479a7fe1e2f6b787b6c1" },
   "indent-blankline.nvim": { "branch": "master", "commit": "9637670896b68805430e2f72cf5d16be5b97a22a" },
   "lazy.nvim": { "branch": "main", "commit": "3ad55ae678876516156cca2f361c51f7952a924b" },
   "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "f014db32437aa61c86fc0ef1067cd2bc6a37205c" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "2451adb9bdb0fd32140bf3aa8dbc17ff60050db3" },
   "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" },
   "mini.ai": { "branch": "main", "commit": "7ae226f331885e6f30e9a8229e113debc59308ae" },
   "mini.bufremove": { "branch": "main", "commit": "7821606e35c1ac931b56d8e3155f45ffe76ee7e5" },
@@ -28,29 +28,30 @@
   "mini.pairs": { "branch": "main", "commit": "dfa9f6e2576bb8853be277d96b735af59d9be7c2" },
   "mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "2d89ca96e08eb6e9c8e50e1bb4738bc5125c9f12" },
-  "neoconf.nvim": { "branch": "main", "commit": "a4eb3675cb87be2e2dcb283dddc8c7aabd2c50ca" },
-  "neodev.nvim": { "branch": "main", "commit": "471324e6c746284dbbdc1d357799d1911bb7e120" },
+  "neoconf.nvim": { "branch": "main", "commit": "b7cde4ba41eabf9bec9464c990bcf84a0fef4526" },
+  "neodev.nvim": { "branch": "main", "commit": "53673d03258a4e4c49ab6ed621820510ac17e052" },
   "noice.nvim": { "branch": "main", "commit": "74c2902146b080035beb19944baf6f014a954720" },
   "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
   "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
   "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
-  "nvim-lspconfig": { "branch": "master", "commit": "cc388d3f6b9c7c943ae2b2dcd46ad470fd257f91" },
-  "nvim-navic": { "branch": "master", "commit": "9c89730da6a05acfeb6a197e212dfadf5aa60ca0" },
+  "nvim-lspconfig": { "branch": "master", "commit": "f3195835c0447ee2c80152b893ab51ca162b04a9" },
+  "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
   "nvim-noirbuddy": { "branch": "master", "commit": "67f945acee6da0ea4c11575c72ce8e930090ea95" },
   "nvim-notify": { "branch": "master", "commit": "94859430020f5cf32a1b97ddd9e596fed9db7981" },
   "nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" },
-  "nvim-treesitter": { "branch": "master", "commit": "9dd3e07609c5b74c5ac4193d0ce4fe91fb406fea" },
+  "nvim-treesitter": { "branch": "master", "commit": "c29d973c40f42fdf9823c2756c330fe7c8f7ca80" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" },
   "nvim-web-devicons": { "branch": "master", "commit": "973ab742f143a796a779af4d786ec409116a0d87" },
   "persistence.nvim": { "branch": "main", "commit": "4b8051c01f696d8849a5cb8afa9767be8db16e40" },
   "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
-  "telescope.nvim": { "branch": "master", "commit": "b543aaa2c9cf8123ed2fe7dbb6c211a9cd415124" },
+  "telescope.nvim": { "branch": "master", "commit": "40c8d2fc2b729dd442eda093cf8c9496d6e23732" },
   "todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
   "tokyonight.nvim": { "branch": "main", "commit": "9a01eada39558dc3243278e6805d90e8dff45dc0" },
   "trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" },
   "typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" },
   "vim-illuminate": { "branch": "master", "commit": "8c910b2f84ae6acd9b4b17330bb94dd783c0c11a" },
   "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
-  "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" }
+  "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" },
+  "yaml-companion.nvim": { "branch": "main", "commit": "4de1e1546abc461f62dee02fcac6a02debd6eb9e" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 65826c7..0b15b1b 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -5,5 +5,9 @@
 local opt = vim.opt
 
 opt.relativenumber = false
+opt.clipboard = ""
 
 vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
+vim.o.autochdir = true
+vim.o.updatetime = 100
+vim.g.do_filetype_lua = 1
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 41daa47..a7a391e 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -27,6 +27,9 @@ return {
 						secondary = "#B0BEC5",
 						-- background = "#1d2229",
 						background = "#0d1219",
+
+						diagnostic_info = "#00d992",
+						diagnostic_hint = "#00d992",
 					},
 				})
 
@@ -38,7 +41,7 @@ return {
 				Color.new("hlargs", "#FFF8E1")
 
 				Color.new("illuminate_bg", "#112210")
-				Color.new("illuminate_fg", "#66FFEE")
+				Color.new("illuminate_fg", "#00d992")
 
 				-- Color.new("search_bg", "#554411")
 				-- Color.new("search_fg", "#FFF0C0")
@@ -59,12 +62,63 @@ return {
 				Group.new("IndentBlanklineIndent5", colors.IndentBlanklineIndent5:dark(0.2))
 				Group.new("IndentBlanklineIndent6", colors.IndentBlanklineIndent6:dark(0.2))
 
-				Color.new("IndentBlanklineContextChar", "#00AABB", styles.nocombine)
+				Color.new("IndentBlanklineContextChar", "#00a972", styles.nocombine)
 				Group.new("IndentBlanklineContextChar", colors.IndentBlanklineContextChar)
 
-				Color.new("MiniIndentscopeSymbol", "#57FAF0")
+				Color.new("MiniIndentscopeSymbol", "#00d992")
 				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
 
+				Color.new("NavicTextFg", "#5fbf9f")
+				Color.new("NavicTextBg", "#333333")
+				Color.new("NavicIcon", "#5fbf9f")
+
+				Group.new("NavicText", colors.NavicTextFg, colors.NavicTextBg)
+				Group.new("NavicIcon", colors.NavicIcon, colors.NavicTextBg)
+				Group.link("NavicIconsFile", groups.NavicIcon)
+				Group.link("NavicIconsModule", groups.NavicIcon)
+				Group.link("NavicIconsNamespace", groups.NavicIcon)
+				Group.link("NavicIconsPackage", groups.NavicIcon)
+				Group.link("NavicIconsClass", groups.NavicIcon)
+				Group.link("NavicIconsMethod", groups.NavicIcon)
+				Group.link("NavicIconsProperty", groups.NavicIcon)
+				Group.link("NavicIconsField", groups.NavicIcon)
+				Group.link("NavicIconsConstructor", groups.NavicIcon)
+				Group.link("NavicIconsEnum", groups.NavicIcon)
+				Group.link("NavicIconsInterface", groups.NavicIcon)
+				Group.link("NavicIconsFunction", groups.NavicIcon)
+				Group.link("NavicIconsVariable", groups.NavicIcon)
+				Group.link("NavicIconsConstant", groups.NavicIcon)
+				Group.link("NavicIconsString", groups.NavicIcon)
+				Group.link("NavicIconsNumber", groups.NavicIcon)
+				Group.link("NavicIconsBoolean", groups.NavicIcon)
+				Group.link("NavicIconsArray", groups.NavicIcon)
+				Group.link("NavicIconsObject", groups.NavicIcon)
+				Group.link("NavicIconsKey", groups.NavicIcon)
+				Group.link("NavicIconsNull", groups.NavicIcon)
+				Group.link("NavicIconsEnumMember", groups.NavicIcon)
+				Group.link("NavicIconsStruct", groups.NavicIcon)
+				Group.link("NavicIconsEvent", groups.NavicIcon)
+				Group.link("NavicIconsOperator", groups.NavicIcon)
+				Group.link("NavicIconsTypeParameter", groups.NavicIcon)
+
+				Color.new("NormalFloatFg", "#b8d1ef", styles.nocombine)
+				Color.new("NormalFloatBg", "#335a88", styles.nocombine)
+				Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
+
+				Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
+				Color.new("PmenuSelBg", "#335a88", styles.nocombine)
+				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
+				--
+				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
+				-- Color.new("TroubleBg", "#260200", styles.nocombine)
+				-- Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
+				-- Group.link("TroubleText", groups.TroubleNormal)
+				-- Group.link("TroubleSource", groups.TroubleNormal)
+
+				Color.new("FlashLabelFg", "#002211")
+				Color.new("FlashLabelBg", "#11EA99")
+				Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
+
 				Group.new("TelescopeTitle", colors.primary)
 				Group.new("TelescopeBorder", colors.secondary)
 				Group.new("@comment", colors.comment, nil, styles.italic)

From 1b29efc1eb33d0f235ce6b14686e2fab4b79e41f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 20 Sep 2023 12:25:28 +0200
Subject: [PATCH 133/656] gitui: config file format change

---
 .config/gitui/theme.ron | 44 ++++++++++++++++++++---------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/.config/gitui/theme.ron b/.config/gitui/theme.ron
index 45a81d3..466a37b 100644
--- a/.config/gitui/theme.ron
+++ b/.config/gitui/theme.ron
@@ -1,23 +1,23 @@
 (
-    selected_tab: Reset,
-    command_fg: Rgb(2, 119, 189),
-    selection_bg: Rgb(225, 245, 254),
-    selection_fg: Reset,
-    cmdbar_extra_lines_bg: Rgb(2, 136, 209),
-    cmdbar_bg: Reset,
-    disabled_fg: Rgb(109, 76, 65),
-    diff_line_add: Rgb(56, 142, 60),
-    diff_line_delete: Rgb(230, 74, 25),
-    diff_file_added: Rgb(56, 142, 60),
-    diff_file_removed: Rgb(230, 74, 25),
-    diff_file_moved: Rgb(156, 39, 176),
-    diff_file_modified: Rgb(255, 111, 0),
-    commit_hash: Magenta,
-    commit_time: Rgb(0, 131, 143),
-    commit_author: Green,
-    danger_fg: Red,
-    push_gauge_bg: Blue,
-    push_gauge_fg: Reset,
-    tag_fg: LightMagenta,
-    branch_fg: LightBlue
-)
+    selected_tab: None,
+    command_fg: Some(Rgb(2, 119, 189)),
+    selection_bg: Some(Rgb(225, 245, 254)),
+    selection_fg: Some(Reset),
+    cmdbar_bg: Some(Reset),
+    cmdbar_extra_lines_bg: Some(Rgb(2, 136, 209)),
+    disabled_fg: Some(Rgb(109, 76, 65)),
+    diff_line_add: Some(Rgb(56, 142, 60)),
+    diff_line_delete: Some(Rgb(230, 74, 25)),
+    diff_file_added: Some(Rgb(56, 142, 60)),
+    diff_file_removed: Some(Rgb(230, 74, 25)),
+    diff_file_moved: Some(Rgb(156, 39, 176)),
+    diff_file_modified: Some(Rgb(255, 111, 0)),
+    commit_hash: None,
+    commit_time: Some(Rgb(0, 131, 143)),
+    commit_author: None,
+    danger_fg: None,
+    push_gauge_bg: None,
+    push_gauge_fg: None,
+    tag_fg: None,
+    branch_fg: Some(LightBlue),
+)
\ No newline at end of file

From 45df7e4dfdd111b53366f14b2f3693f26a783f00 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 21 Sep 2023 10:51:59 +0200
Subject: [PATCH 134/656] nvim: comment keybindings

---
 .config/nvim/lua/plugins/coding.lua | 11 +++++++++++
 1 file changed, 11 insertions(+)
 create mode 100644 .config/nvim/lua/plugins/coding.lua

diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
new file mode 100644
index 0000000..4c5fbfb
--- /dev/null
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -0,0 +1,11 @@
+return {
+
+	{
+		"echasnovski/mini.comment",
+		keys = {
+			{ "<Leader><C-_>", "gcgc", remap = true, silent = true, mode = "n" },
+			{ "<C-_>", "gcc", remap = true, silent = true, mode = "n" },
+			{ "<C-_>", "gc", remap = true, silent = true, mode = "v" },
+		},
+	},
+}

From 5020699941b196fa9631f9b8536921e3b79c1937 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 21 Sep 2023 10:55:05 +0200
Subject: [PATCH 135/656] nvim: document uncomment

---
 .config/nvim/lua/plugins/coding.lua      | 2 +-
 .config/nvim/lua/plugins/colorscheme.lua | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
index 4c5fbfb..1448ecf 100644
--- a/.config/nvim/lua/plugins/coding.lua
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -3,7 +3,7 @@ return {
 	{
 		"echasnovski/mini.comment",
 		keys = {
-			{ "<Leader><C-_>", "gcgc", remap = true, silent = true, mode = "n" },
+			{ "<Leader><C-_>", "gcgc", remap = true, silent = true, mode = "n", desc = "Uncomment whole comment" },
 			{ "<C-_>", "gcc", remap = true, silent = true, mode = "n" },
 			{ "<C-_>", "gc", remap = true, silent = true, mode = "v" },
 		},
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index a7a391e..ef4c36e 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -23,10 +23,10 @@ return {
 						undercurl = true,
 					},
 					colors = {
+						-- background = "#0d1219",
+						background = "#11171d",
 						primary = "#FFECB3",
 						secondary = "#B0BEC5",
-						-- background = "#1d2229",
-						background = "#0d1219",
 
 						diagnostic_info = "#00d992",
 						diagnostic_hint = "#00d992",

From 0221c3ec0076ab2d7305daee6244e8508a9fb94e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 21 Sep 2023 11:23:53 +0200
Subject: [PATCH 136/656] tmux-edit-helper: open file directly on first launch

---
 bin/tmux-edit-helper | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper
index 2a12394..da98fa3 100755
--- a/bin/tmux-edit-helper
+++ b/bin/tmux-edit-helper
@@ -18,11 +18,11 @@ fi
 
 _nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
 
-tmux select-window -t nvim 2>/dev/null ||
-	tmux new-window -S -n nvim \
-		-e "BUILD_COMMAND=$BUILD_COMMAND" \
-		-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
-		-e "GOFLAGS=$GOFLAGS" \
-		nvim --listen "$_nvim_socket"
+tmux select-window -t nvim 2>/dev/null && exec nvim --server "$_nvim_socket" --remote "$_file"
 
-nvim --server "$_nvim_socket" --remote "$_file"
+# nvim is not running/listening on remote socket, so start it.
+tmux new-window -S -n nvim \
+	-e "BUILD_COMMAND=$BUILD_COMMAND" \
+	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
+	-e "GOFLAGS=$GOFLAGS" \
+	nvim --listen "$_nvim_socket" "$_file"

From 33cb2e30f091595cd2f1c8d4f313d6e01b24c584 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 28 Sep 2023 11:13:02 +0200
Subject: [PATCH 137/656] nvim: config

---
 .config/nvim/lazy-lock.json              | 38 +++++++++++++-----------
 .config/nvim/lua/config/lazy.lua         |  1 +
 .config/nvim/lua/config/options.lua      |  8 +++--
 .config/nvim/lua/plugins/coding.lua      |  5 ++++
 .config/nvim/lua/plugins/colorscheme.lua | 11 +++++--
 .config/nvim/lua/plugins/editor.lua      |  6 ++++
 6 files changed, 46 insertions(+), 23 deletions(-)
 create mode 100644 .config/nvim/lua/plugins/editor.lua

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index faac63c..ffddaf7 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,21 +1,21 @@
 {
-  "LazyVim": { "branch": "main", "commit": "a72a84972d85e5bbc6b9d60a0983b37efef21b8a" },
-  "LuaSnip": { "branch": "master", "commit": "8efa4e402a24df6a4713a2ec653147c49e8f73de" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "57b379a6f521eca8e955283c2886b6261c4e14e8" },
+  "LazyVim": { "branch": "main", "commit": "50401d358b7be9b931b42fc3b537794920308bef" },
+  "LuaSnip": { "branch": "master", "commit": "480b032f6708573334f4437d3f83307d143f1a72" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "917083c0ab4fc328628f0a55c72415e1bd72ab13" },
   "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" },
-  "bufferline.nvim": { "branch": "main", "commit": "81cd04fe7c914d020d331cea1e707da5f14c2665" },
-  "catppuccin": { "branch": "main", "commit": "85e93601e0f0b48aa2c6bbfae4d0e9d7a1898280" },
+  "bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" },
+  "catppuccin": { "branch": "main", "commit": "3d9a5ed556e289bce6c1fb0af89ec838360641b2" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
-  "copilot.lua": { "branch": "master", "commit": "2c942f33ba5c621c906e625e00a1bb504b65e2f0" },
+  "copilot.lua": { "branch": "master", "commit": "1a8032ae496916ccc7a7a52ee79194fbef29f462" },
   "dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" },
   "flash.nvim": { "branch": "main", "commit": "cc8c7e03987134997d74ee87e55a5717279f2d05" },
   "friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" },
-  "gitsigns.nvim": { "branch": "main", "commit": "bce4576a9047085a528c479a7fe1e2f6b787b6c1" },
+  "gitsigns.nvim": { "branch": "main", "commit": "bdeba1cec3faddd89146690c10b9a87949c0ee66" },
   "indent-blankline.nvim": { "branch": "master", "commit": "9637670896b68805430e2f72cf5d16be5b97a22a" },
   "lazy.nvim": { "branch": "main", "commit": "3ad55ae678876516156cca2f361c51f7952a924b" },
   "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
@@ -27,31 +27,33 @@
   "mini.indentscope": { "branch": "main", "commit": "f60e9b51a6214c73a170ffc5445ce91560981031" },
   "mini.pairs": { "branch": "main", "commit": "dfa9f6e2576bb8853be277d96b735af59d9be7c2" },
   "mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "2d89ca96e08eb6e9c8e50e1bb4738bc5125c9f12" },
-  "neoconf.nvim": { "branch": "main", "commit": "b7cde4ba41eabf9bec9464c990bcf84a0fef4526" },
-  "neodev.nvim": { "branch": "main", "commit": "53673d03258a4e4c49ab6ed621820510ac17e052" },
-  "noice.nvim": { "branch": "main", "commit": "74c2902146b080035beb19944baf6f014a954720" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "71f1841ba6c652908678cece623f52c1fea8a6cd" },
+  "neoconf.nvim": { "branch": "main", "commit": "909179f44e94b4cb8331d46b31d3b77ca71127d5" },
+  "neodev.nvim": { "branch": "main", "commit": "67b7a5c9facd65077cc4486c73d1774d1a2ed582" },
+  "noice.nvim": { "branch": "main", "commit": "396f9146529130904e07c45e90ecdbfa607534f3" },
   "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
   "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
   "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
-  "nvim-lspconfig": { "branch": "master", "commit": "f3195835c0447ee2c80152b893ab51ca162b04a9" },
+  "nvim-lspconfig": { "branch": "master", "commit": "bfdf2e91e7297a54bcc09d3e092a12bff69a1cf4" },
   "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
   "nvim-noirbuddy": { "branch": "master", "commit": "67f945acee6da0ea4c11575c72ce8e930090ea95" },
   "nvim-notify": { "branch": "master", "commit": "94859430020f5cf32a1b97ddd9e596fed9db7981" },
   "nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" },
-  "nvim-treesitter": { "branch": "master", "commit": "c29d973c40f42fdf9823c2756c330fe7c8f7ca80" },
+  "nvim-treesitter": { "branch": "master", "commit": "d6c9c85e14e15bc59478a0d5d810e88dad0ac53f" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" },
-  "nvim-web-devicons": { "branch": "master", "commit": "973ab742f143a796a779af4d786ec409116a0d87" },
+  "nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" },
   "persistence.nvim": { "branch": "main", "commit": "4b8051c01f696d8849a5cb8afa9767be8db16e40" },
   "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
-  "telescope.nvim": { "branch": "master", "commit": "40c8d2fc2b729dd442eda093cf8c9496d6e23732" },
+  "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
+  "telescope.nvim": { "branch": "master", "commit": "84d53dfdbefbdf84e861a288abc71ef8ccafd04e" },
   "todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
-  "tokyonight.nvim": { "branch": "main", "commit": "9a01eada39558dc3243278e6805d90e8dff45dc0" },
+  "tokyonight.nvim": { "branch": "main", "commit": "8e670218651eaf02bf61c68ecdfdaa572bc14b47" },
   "trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" },
   "typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" },
-  "vim-illuminate": { "branch": "master", "commit": "8c910b2f84ae6acd9b4b17330bb94dd783c0c11a" },
+  "vim-illuminate": { "branch": "master", "commit": "1b5d70332a51a1de05f281069851865a2bb1e6d7" },
   "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
   "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" },
-  "yaml-companion.nvim": { "branch": "main", "commit": "4de1e1546abc461f62dee02fcac6a02debd6eb9e" }
+  "yaml-companion.nvim": { "branch": "main", "commit": "4de1e1546abc461f62dee02fcac6a02debd6eb9e" },
+  "yanky.nvim": { "branch": "main", "commit": "51dfc7721cfa4bb5b1baf5f365b8a39394d89eb2" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index cf0f003..4e1c2e3 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -13,6 +13,7 @@ require("lazy").setup({
 		-- import any extras modules here
 		-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
 		{ import = "lazyvim.plugins.extras.coding.copilot" },
+		{ import = "lazyvim.plugins.extras.coding.yanky" },
 		{ import = "lazyvim.plugins.extras.lang.go" },
 		{ import = "lazyvim.plugins.extras.lang.json" },
 		{ import = "lazyvim.plugins.extras.lang.typescript" },
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 0b15b1b..298a8c0 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -7,7 +7,9 @@ local opt = vim.opt
 opt.relativenumber = false
 opt.clipboard = ""
 
-vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
-vim.o.autochdir = true
-vim.o.updatetime = 100
 vim.g.do_filetype_lua = 1
+
+vim.o.autochdir = true
+vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
+vim.o.scrolloff = 7
+vim.o.updatetime = 100
diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
index 1448ecf..714cba8 100644
--- a/.config/nvim/lua/plugins/coding.lua
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -8,4 +8,9 @@ return {
 			{ "<C-_>", "gc", remap = true, silent = true, mode = "v" },
 		},
 	},
+
+	{
+		"echasnovski/mini.pairs",
+		enabled = false,
+	},
 }
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index ef4c36e..c569cd1 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -68,6 +68,10 @@ return {
 				Color.new("MiniIndentscopeSymbol", "#00d992")
 				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
 
+				Color.new("CursorFg", "#000000", styles.nocombine)
+				Color.new("CursorBg", "#00d992", styles.nocombine)
+				Group.new("Cursor", colors.CursorFg, colors.CursorBg)
+
 				Color.new("NavicTextFg", "#5fbf9f")
 				Color.new("NavicTextBg", "#333333")
 				Color.new("NavicIcon", "#5fbf9f")
@@ -115,8 +119,11 @@ return {
 				-- Group.link("TroubleText", groups.TroubleNormal)
 				-- Group.link("TroubleSource", groups.TroubleNormal)
 
-				Color.new("FlashLabelFg", "#002211")
-				Color.new("FlashLabelBg", "#11EA99")
+				Color.new("Error", "#ffce60", styles.nocombine)
+				Group.new("ErrorMsg", colors.Error)
+
+				Color.new("FlashLabelFg", "#220011")
+				Color.new("FlashLabelBg", "#EA1199")
 				Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
 
 				Group.new("TelescopeTitle", colors.primary)
diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
new file mode 100644
index 0000000..c1ca23a
--- /dev/null
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -0,0 +1,6 @@
+return {
+	{
+		"folke/flash.nvim",
+		enabled = false,
+	},
+}

From d42d684ed8ba7f0ee4fb036bbfe8b2afe49d8cea Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 2 Oct 2023 21:39:32 +0200
Subject: [PATCH 138/656] nvim: adjust for indent-blankline v3

---
 .config/nvim/lua/plugins/ui.lua | 35 ++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index 8dacbc2..20f2641 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -2,18 +2,31 @@ return {
 	{
 		"lukas-reineke/indent-blankline.nvim",
 		opts = {
-			char = "┊",
-			char_highlight_list = {
-				"IndentBlanklineIndent1",
-				"IndentBlanklineIndent2",
-				"IndentBlanklineIndent3",
-				"IndentBlanklineIndent4",
-				"IndentBlanklineIndent5",
-				"IndentBlanklineIndent6",
+			indent = {
+				char = "┊",
+				tab_char = "┊",
+				highlight = {
+					"IndentBlanklineIndent1",
+					"IndentBlanklineIndent2",
+					"IndentBlanklineIndent3",
+					"IndentBlanklineIndent4",
+					"IndentBlanklineIndent5",
+					"IndentBlanklineIndent6",
+				},
+			},
+			scope = {
+				enabled = true,
+				show_start = false,
+				char = "│",
+				highlight = {
+					"IndentBlanklineIndent1",
+					"IndentBlanklineIndent2",
+					"IndentBlanklineIndent3",
+					"IndentBlanklineIndent4",
+					"IndentBlanklineIndent5",
+					"IndentBlanklineIndent6",
+				},
 			},
-			show_current_context = true,
-			show_current_context_start = false,
-			context_char = "│",
 		},
 	},
 }

From b4c284f01ea40251dfb89113363a65823fd13bd1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 2 Oct 2023 21:51:48 +0200
Subject: [PATCH 139/656] nvim: fix mini.comment keymap preference

---
 .config/nvim/lua/config/keymaps.lua |  6 ++++++
 .config/nvim/lua/plugins/coding.lua | 10 ----------
 2 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
index 2c134f7..f99684e 100644
--- a/.config/nvim/lua/config/keymaps.lua
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -1,3 +1,9 @@
 -- Keymaps are automatically loaded on the VeryLazy event
 -- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
 -- Add any additional keymaps here
+
+-- C-/ should be comment instead of lazyterm
+vim.api.nvim_del_keymap("n", "<c-_>")
+vim.api.nvim_set_keymap("n", "<c-_>", "gcc", {})
+vim.api.nvim_set_keymap("v", "<c-_>", "gc", {})
+vim.api.nvim_set_keymap("n", "<Leader><c-_>", "gcgc", {})
diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
index 714cba8..563d752 100644
--- a/.config/nvim/lua/plugins/coding.lua
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -1,14 +1,4 @@
 return {
-
-	{
-		"echasnovski/mini.comment",
-		keys = {
-			{ "<Leader><C-_>", "gcgc", remap = true, silent = true, mode = "n", desc = "Uncomment whole comment" },
-			{ "<C-_>", "gcc", remap = true, silent = true, mode = "n" },
-			{ "<C-_>", "gc", remap = true, silent = true, mode = "v" },
-		},
-	},
-
 	{
 		"echasnovski/mini.pairs",
 		enabled = false,

From 256d0c34e498ecc3b23a733e9d40bb101bc87243 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 2 Oct 2023 21:51:56 +0200
Subject: [PATCH 140/656] nvim: lazyvim update

---
 .config/nvim/lazy-lock.json | 43 +++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 23 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index ffddaf7..58f706d 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,10 +1,10 @@
 {
-  "LazyVim": { "branch": "main", "commit": "50401d358b7be9b931b42fc3b537794920308bef" },
+  "LazyVim": { "branch": "main", "commit": "ecac59c9823c86ac4c916a4cc1aa761f43e040ec" },
   "LuaSnip": { "branch": "master", "commit": "480b032f6708573334f4437d3f83307d143f1a72" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "917083c0ab4fc328628f0a55c72415e1bd72ab13" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "08ab25507a92e22cec433f6750bb4a56a8cec22d" },
   "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" },
-  "bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" },
-  "catppuccin": { "branch": "main", "commit": "3d9a5ed556e289bce6c1fb0af89ec838360641b2" },
+  "bufferline.nvim": { "branch": "main", "commit": "357cc8f8eeb64702e6fcf2995e3b9becee99a5d3" },
+  "catppuccin": { "branch": "main", "commit": "7a4bcdadafc59a5bedbd866c643fa486d8cca4a1" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
@@ -12,48 +12,45 @@
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "1a8032ae496916ccc7a7a52ee79194fbef29f462" },
-  "dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" },
-  "flash.nvim": { "branch": "main", "commit": "cc8c7e03987134997d74ee87e55a5717279f2d05" },
-  "friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" },
-  "gitsigns.nvim": { "branch": "main", "commit": "bdeba1cec3faddd89146690c10b9a87949c0ee66" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "9637670896b68805430e2f72cf5d16be5b97a22a" },
-  "lazy.nvim": { "branch": "main", "commit": "3ad55ae678876516156cca2f361c51f7952a924b" },
+  "dressing.nvim": { "branch": "master", "commit": "8f4d62b7817455896a3c73cab642002072c114bc" },
+  "friendly-snippets": { "branch": "main", "commit": "43727c2ff84240e55d4069ec3e6158d74cb534b6" },
+  "gitsigns.nvim": { "branch": "main", "commit": "b14b9fba7d085ed8c11392aa51e575de84822bb1" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "ce2e8e410bc8b46a6938bfa3520bc6b85ca8a743" },
+  "lazy.nvim": { "branch": "main", "commit": "59335c5b9d116f5d3948f833288a89e2a829a005" },
   "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "2451adb9bdb0fd32140bf3aa8dbc17ff60050db3" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "e2705063f395b44f676cd26596a11007a2cbd3bd" },
   "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" },
   "mini.ai": { "branch": "main", "commit": "7ae226f331885e6f30e9a8229e113debc59308ae" },
   "mini.bufremove": { "branch": "main", "commit": "7821606e35c1ac931b56d8e3155f45ffe76ee7e5" },
   "mini.comment": { "branch": "main", "commit": "877acea5b2a32ff55f808fc0ebe9aa898648318c" },
   "mini.indentscope": { "branch": "main", "commit": "f60e9b51a6214c73a170ffc5445ce91560981031" },
-  "mini.pairs": { "branch": "main", "commit": "dfa9f6e2576bb8853be277d96b735af59d9be7c2" },
   "mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "71f1841ba6c652908678cece623f52c1fea8a6cd" },
-  "neoconf.nvim": { "branch": "main", "commit": "909179f44e94b4cb8331d46b31d3b77ca71127d5" },
-  "neodev.nvim": { "branch": "main", "commit": "67b7a5c9facd65077cc4486c73d1774d1a2ed582" },
+  "neoconf.nvim": { "branch": "main", "commit": "466ba6f645f63f91ac84d3dd986acede5d107f39" },
+  "neodev.nvim": { "branch": "main", "commit": "5147640bc8435ca3557a105ebd1143bc20420b60" },
   "noice.nvim": { "branch": "main", "commit": "396f9146529130904e07c45e90ecdbfa607534f3" },
+  "none-ls.nvim": { "branch": "main", "commit": "f39f627bbdfb33cc4ae4a95b4708e7dba7b9aafc" },
   "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
-  "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
   "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
-  "nvim-lspconfig": { "branch": "master", "commit": "bfdf2e91e7297a54bcc09d3e092a12bff69a1cf4" },
+  "nvim-lspconfig": { "branch": "master", "commit": "ac478757efcde1ac346f7044ab774e7cbb482533" },
   "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
   "nvim-noirbuddy": { "branch": "master", "commit": "67f945acee6da0ea4c11575c72ce8e930090ea95" },
-  "nvim-notify": { "branch": "master", "commit": "94859430020f5cf32a1b97ddd9e596fed9db7981" },
+  "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
   "nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" },
-  "nvim-treesitter": { "branch": "master", "commit": "d6c9c85e14e15bc59478a0d5d810e88dad0ac53f" },
+  "nvim-treesitter": { "branch": "master", "commit": "d96c216c54cc2d48d3c66ba7f0fc3c7c5b71b3b1" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "0c136439fb93fd94db9106250ff6f6858101422b" },
   "nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" },
   "persistence.nvim": { "branch": "main", "commit": "4b8051c01f696d8849a5cb8afa9767be8db16e40" },
   "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
   "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
-  "telescope.nvim": { "branch": "master", "commit": "84d53dfdbefbdf84e861a288abc71ef8ccafd04e" },
+  "telescope.nvim": { "branch": "master", "commit": "8c69f58427f98b2ca39a90a36db830c06e30351c" },
   "todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
-  "tokyonight.nvim": { "branch": "main", "commit": "8e670218651eaf02bf61c68ecdfdaa572bc14b47" },
+  "tokyonight.nvim": { "branch": "main", "commit": "e89caa3ad6d8da9d0dd981ec74a82c55adc61ffd" },
   "trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" },
-  "typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" },
   "vim-illuminate": { "branch": "master", "commit": "1b5d70332a51a1de05f281069851865a2bb1e6d7" },
   "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
   "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" },
   "yaml-companion.nvim": { "branch": "main", "commit": "4de1e1546abc461f62dee02fcac6a02debd6eb9e" },
-  "yanky.nvim": { "branch": "main", "commit": "51dfc7721cfa4bb5b1baf5f365b8a39394d89eb2" }
+  "yanky.nvim": { "branch": "main", "commit": "590a713b0372485f595eea36e7e3ab2069946794" }
 }
\ No newline at end of file

From 74b12bcfa5fd1a86bf2b6abae7b32893abc2e619 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 3 Oct 2023 15:18:14 +0200
Subject: [PATCH 141/656] wezterm: secondary

---
 .local/share/applications/wezterm-dln-dev-secondary.desktop | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.local/share/applications/wezterm-dln-dev-secondary.desktop b/.local/share/applications/wezterm-dln-dev-secondary.desktop
index afe10b5..8d40b0b 100644
--- a/.local/share/applications/wezterm-dln-dev-secondary.desktop
+++ b/.local/share/applications/wezterm-dln-dev-secondary.desktop
@@ -7,4 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config window_background_opacity=0.6 --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As1", "-t0"}' start --class=org.wezfurlong.wezterm-secondary
+Exec=/usr/bin/wezterm --config window_background_opacity=0.8 --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As1", "-t0"}' start --class=org.wezfurlong.wezterm-secondary

From ea69d13bcf9326abf8c63b7eae6abc0551b1d3ff Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 3 Oct 2023 15:18:39 +0200
Subject: [PATCH 142/656] wezterm: line height

---
 .config/wezterm/wezterm.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index f08c496..7b445fd 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -95,7 +95,7 @@ return {
 	allow_square_glyphs_to_overflow_width = "Always",
 	font_size = 13.5,
 	command_palette_font_size = 13.5,
-	line_height = 1.065,
+	line_height = 1.1,
 	initial_cols = 132,
 	initial_rows = 45,
 	use_resize_increments = true,

From 326f502d3878420e96a1f0ed38b8a1b682386222 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 4 Oct 2023 21:49:08 +0200
Subject: [PATCH 143/656] nvim: enable conform + prettier

---
 .config/nvim/lua/config/lazy.lua | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 4e1c2e3..a0e2c80 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -12,6 +12,8 @@ require("lazy").setup({
 		{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
 		-- import any extras modules here
 		-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
+		{ import = "lazyvim.plugins.extras.formatting.conform" },
+		{ import = "lazyvim.plugins.extras.formatting.prettier" },
 		{ import = "lazyvim.plugins.extras.coding.copilot" },
 		{ import = "lazyvim.plugins.extras.coding.yanky" },
 		{ import = "lazyvim.plugins.extras.lang.go" },

From 0cbf0441c0296e9f787a8610b5df3feec0067e79 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 4 Oct 2023 21:49:49 +0200
Subject: [PATCH 144/656] zsh: muted prompt

---
 .zshrc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.zshrc b/.zshrc
index 570c168..215a5e6 100644
--- a/.zshrc
+++ b/.zshrc
@@ -205,7 +205,7 @@ zstyle ':vcs_info:*' unstagedstr ' %F{#ff0}󰦒'
 zstyle ':vcs_info:*' stagedstr ' %F{#9ff}󰐖'
 
 setopt PROMPT_SUBST
-PROMPT=$'%F{#fff}%K{#d1002f}%{\e[3m%} ${PROMPT_LABEL} %{\e[0m%}%S%F{#d1002f}%k%{%G\Ue0ba%}%k%s%f%{\e[2;3m%}${PROMPT_PWD}%{\e[0m%} ${vcs_info_msg_0_}%# '
+PROMPT=$'%F{#aaa}%K{#333}%{\e[3m%} ${PROMPT_LABEL} %{\e[0m%}%S%F{#333}%k%{%G\Ue0ba%}%k%s%f%{\e[2;3m%}${PROMPT_PWD}%{\e[0m%} ${vcs_info_msg_0_}%# '
 
 ## vim
 export EDITOR=nvim

From 9ef30664bb4a022ef74a1f8a30d9bfc05b86da0d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 4 Oct 2023 21:50:02 +0200
Subject: [PATCH 145/656] nvim: lazy update

---
 .config/nvim/lazy-lock.json | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 58f706d..2bc7d9e 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,6 +1,6 @@
 {
-  "LazyVim": { "branch": "main", "commit": "ecac59c9823c86ac4c916a4cc1aa761f43e040ec" },
-  "LuaSnip": { "branch": "master", "commit": "480b032f6708573334f4437d3f83307d143f1a72" },
+  "LazyVim": { "branch": "main", "commit": "758520dcbbf0f40774beceaf65de3f464b23fc3f" },
+  "LuaSnip": { "branch": "master", "commit": "6085dfd1808fb0059e13d160317a10c3a68c5407" },
   "SchemaStore.nvim": { "branch": "main", "commit": "08ab25507a92e22cec433f6750bb4a56a8cec22d" },
   "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" },
   "bufferline.nvim": { "branch": "main", "commit": "357cc8f8eeb64702e6fcf2995e3b9becee99a5d3" },
@@ -10,12 +10,13 @@
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
+  "conform.nvim": { "branch": "master", "commit": "7ad988c2509ff1869c26ecdabebadc7943e78f6f" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "1a8032ae496916ccc7a7a52ee79194fbef29f462" },
   "dressing.nvim": { "branch": "master", "commit": "8f4d62b7817455896a3c73cab642002072c114bc" },
   "friendly-snippets": { "branch": "main", "commit": "43727c2ff84240e55d4069ec3e6158d74cb534b6" },
-  "gitsigns.nvim": { "branch": "main", "commit": "b14b9fba7d085ed8c11392aa51e575de84822bb1" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "ce2e8e410bc8b46a6938bfa3520bc6b85ca8a743" },
+  "gitsigns.nvim": { "branch": "main", "commit": "2272cf9f0c092e908f892f5b075e6cc2a8d3d07d" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "c60e76a638b1d2a4299b9bfc38461cdb02ae8397" },
   "lazy.nvim": { "branch": "main", "commit": "59335c5b9d116f5d3948f833288a89e2a829a005" },
   "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "e2705063f395b44f676cd26596a11007a2cbd3bd" },
@@ -27,17 +28,17 @@
   "mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "71f1841ba6c652908678cece623f52c1fea8a6cd" },
   "neoconf.nvim": { "branch": "main", "commit": "466ba6f645f63f91ac84d3dd986acede5d107f39" },
-  "neodev.nvim": { "branch": "main", "commit": "5147640bc8435ca3557a105ebd1143bc20420b60" },
-  "noice.nvim": { "branch": "main", "commit": "396f9146529130904e07c45e90ecdbfa607534f3" },
+  "neodev.nvim": { "branch": "main", "commit": "8cc5eb23452d355ea95b7253ca1367c3420352ff" },
+  "noice.nvim": { "branch": "main", "commit": "8d775bc8ac1a594a2ecdb80e092330afd916e4c3" },
   "none-ls.nvim": { "branch": "main", "commit": "f39f627bbdfb33cc4ae4a95b4708e7dba7b9aafc" },
   "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
   "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
-  "nvim-lspconfig": { "branch": "master", "commit": "ac478757efcde1ac346f7044ab774e7cbb482533" },
+  "nvim-lspconfig": { "branch": "master", "commit": "361a2878a41f23452457eec12a807ff59bc75882" },
   "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
   "nvim-noirbuddy": { "branch": "master", "commit": "67f945acee6da0ea4c11575c72ce8e930090ea95" },
   "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
   "nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" },
-  "nvim-treesitter": { "branch": "master", "commit": "d96c216c54cc2d48d3c66ba7f0fc3c7c5b71b3b1" },
+  "nvim-treesitter": { "branch": "master", "commit": "812c2dd8fe838bb26cb53f0d251116468c2cae37" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "0c136439fb93fd94db9106250ff6f6858101422b" },
   "nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" },
@@ -46,7 +47,7 @@
   "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
   "telescope.nvim": { "branch": "master", "commit": "8c69f58427f98b2ca39a90a36db830c06e30351c" },
   "todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
-  "tokyonight.nvim": { "branch": "main", "commit": "e89caa3ad6d8da9d0dd981ec74a82c55adc61ffd" },
+  "tokyonight.nvim": { "branch": "main", "commit": "ebe613949edc0ac2cd4b911d502c67b023673d87" },
   "trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" },
   "vim-illuminate": { "branch": "master", "commit": "1b5d70332a51a1de05f281069851865a2bb1e6d7" },
   "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },

From 3374a5247c5d02bd0a854d450b493b05db92043c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 4 Oct 2023 22:22:31 +0200
Subject: [PATCH 146/656] nvim: proto and terraform autoformat

---
 .config/nvim/lua/plugins/formatting.lua | 11 +++++++++++
 1 file changed, 11 insertions(+)
 create mode 100644 .config/nvim/lua/plugins/formatting.lua

diff --git a/.config/nvim/lua/plugins/formatting.lua b/.config/nvim/lua/plugins/formatting.lua
new file mode 100644
index 0000000..e51693d
--- /dev/null
+++ b/.config/nvim/lua/plugins/formatting.lua
@@ -0,0 +1,11 @@
+return {
+	{
+		"stevearc/conform.nvim",
+		opts = {
+			formatters_by_ft = {
+				["proto"] = { { "buf" } },
+				["terraform"] = { { "terraform_fmt" } },
+			},
+		},
+	},
+}

From 9cb610b2f9f6d481ce122d14b427315427aa29e5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 23 Oct 2023 10:49:05 +0200
Subject: [PATCH 147/656] Add contour config

---
 .config/contour/contour.yml | 769 ++++++++++++++++++++++++++++++++++++
 1 file changed, 769 insertions(+)
 create mode 100644 .config/contour/contour.yml

diff --git a/.config/contour/contour.yml b/.config/contour/contour.yml
new file mode 100644
index 0000000..8955087
--- /dev/null
+++ b/.config/contour/contour.yml
@@ -0,0 +1,769 @@
+# Default Contour Configuration File.
+
+# Overrides the auto-detected platform plugin to be loaded.
+#
+# Possible (incomplete list of) values are:
+# - auto        The platform will be auto-detected.
+# - xcb         Uses XCB plugin (for X11 environment).
+# - cocoa       Used to be run on Mac OS/X.
+# - direct2d    Windows platform plugin using Direct2D.
+# - winrt       Windows platform plugin using WinRT.
+#
+# Default: auto
+platform_plugin: auto
+
+# VT Renderer configuration.
+# ADVANCED! Do not touch unless you know what you are doing.
+renderer:
+  # Backend to use for rendering the terminal onto the screen
+  #
+  # Possible values are:
+  # - default     Uses the default rendering option as decided by the terminal.
+  # - software    Uses software-based rendering.
+  # - OpenGL      Use (possibly) hardware accelerated OpenGL
+  backend: OpenGL
+
+  # Number of hashtable slots to map to the texture tiles.
+  # Larger values may increase performance, but too large may also decrease.
+  # This value is rounded up to a value equal to the power of two.
+  #
+  # Default: 4096
+  tile_hashtable_slots: 4096
+
+  # Number of tiles that must fit at lest into the texture atlas.
+  #
+  # This does not include direct mapped tiles (US-ASCII glyphs,
+  # cursor shapes and decorations), if tile_direct_mapping is set to true).
+  #
+  # Value must be at least as large as grid cells available in the terminal view.
+  # This value is automatically adjusted if too small.
+  #
+  # Default: 4000
+  tile_cache_count: 4000
+
+  # Enables/disables the use of direct-mapped texture atlas tiles for
+  # the most often used ones (US-ASCII, cursor shapes, underline styles)
+  # You most likely do not want to touch this.
+  #
+  # Default: true
+  tile_direct_mapping: true
+
+# Word delimiters when selecting word-wise.
+word_delimiters: " /\\()\"'-.,:;<>~!@#$%^&*+=[]{}~?|│"
+
+# Default PTY read buffer size.
+#
+# This is an advance option. Use with care!
+# Default: 16384
+read_buffer_size: 16384
+
+# Size in bytes per PTY Buffer Object.
+#
+# This is an advanced option of an internal storage. Only change with care!
+pty_buffer_size: 1048576
+
+default_profile: main
+
+# Flag to determine whether to spawn new process or not when creating new terminal
+# Default: false
+spawn_new_process: false
+
+# Whether or not to reflow the lines on terminal resize events.
+# Default: true
+reflow_on_resize: true
+
+# Section of experimental features.
+# All experimental features are disabled by default and must be explicitly enabled here.
+# NOTE: Contour currently has no experimental features behind this configuration wall.
+# experimental:
+#     # Enables experimental support for feature X/Y/Z
+#     feature_xyz: true
+
+# This keyboard modifier can be used to bypass the terminal's mouse protocol,
+# which can be used to select screen content even if the an application
+# mouse protocol has been activated (Default: Shift).
+#
+# The same modifier values apply as with input modifiers (see below).
+bypass_mouse_protocol_modifier: Shift
+
+# Modifier to be pressed in order to initiate block-selection
+# using the left mouse button.
+#
+# This is usually the Control modifier, but on OS/X that is not possible,
+# so Alt or Meta would be recommended instead.
+#
+# Supported modifiers:
+# - Alt
+# - Control
+# - Shift
+# - Meta
+#
+# Default: Control
+mouse_block_selection_modifier: Control
+
+# Selects an action to perform when a text selection has been made.
+#
+# Possible values are:
+#
+# - None                        Does nothing
+# - CopyToClipboard             Copies the selection to the primary clipboard.
+# - CopyToSelectionClipboard    Copies the selection to the selection clipboard.
+#                               This is not supported on all platforms.
+#
+# Default: CopyToSelectionClipboard
+on_mouse_select: CopyToSelectionClipboard
+
+# Determines whether the instance is reloading the configuration files whenever it is changing or not.
+#
+# Default: false
+live_config: false
+
+# Inline image related default configuration and limits
+# -----------------------------------------------------
+images:
+  # Enable or disable sixel scrolling (SM/RM ?80 default)
+  sixel_scrolling: true
+  # Configures the maximum number of color registers available when rendering Sixel graphics.
+  sixel_register_count: 4096
+  # maximum width in pixels of an image to be accepted (0 defaults to system screen pixel width)
+  max_width: 0
+  # maximum height in pixels of an image to be accepted (0 defaults to system screen pixel height)
+  max_height: 0
+
+# Terminal Profiles
+# -----------------
+#
+# Dominates how your terminal visually looks like. You will need at least one terminal profile.
+profiles:
+  main:
+    # You can override the process to be started inside the terminal.
+    # If nothing is specified, the users' default login shell will be used.
+    # But you may as well log in to a remote host.
+    # shell: "ssh ubuntu-vm"
+    # shell: "/bin/bash"
+    # arguments: ["some", "optional", "arguments", "for", "the", "shell"]
+
+    # If this terminal is being executed from within Flatpak, enforces sandboxing
+    # then this boolean indicates whether or not that sandbox should be escaped or not.
+    #
+    # Default value is true.
+    #
+    # It only makes sense to set this value to false if you really know what you are doing.
+    escape_sandbox: true
+
+    # Advanced value that is useful when CopyPreviousMarkRange is used
+    # with multiline-prompts. This offset value is being added to the
+    # current cursor's line number minus 1 (i.e. the line above the current cursor).
+    #
+    # Default value is 0.
+    copy_last_mark_range_offset: 0
+
+    # Sets initial working directory when spawning a new terminal.
+    # A leading ~ is expanded to the user's home directory.
+    # Default value is the user's home directory.
+    initial_working_directory: "~"
+
+    # When this profile is *activated*, this flag decides
+    # whether or not the title bar will be shown
+    show_title_bar: false
+    # When this profile is being *activated*, this flag decides
+    # whether or not to put the terminal's screen into fullscreen mode.
+    #
+    # It is activated during startup as well as when switching from another profile to this one.
+    fullscreen: false
+
+    # When this profile is *activated*, this flag decides
+    # whether or not to put the window into maximized mode.
+    maximized: false
+
+    # Defines the class part of the WM_CLASS property of the window.
+    wm_class: "contour"
+
+    # Environment variables to be passed to the shell.
+    # environment:
+    #     TERM: contour
+    #     COLORTERM: truecolor
+
+    # Determines the terminal type that is being advertised.
+    # Possible values are:
+    #   - VT100
+    #   - VT220
+    #   - VT240
+    #   - VT330
+    #   - VT340
+    #   - VT320
+    #   - VT420
+    #   - VT510
+    #   - VT520
+    #   - VT525
+    # Default: VT525
+    terminal_id: VT525
+
+    # Determines the initial terminal size in characters.
+    terminal_size:
+      columns: 80
+      lines: 25
+
+    history:
+      # Number of lines to preserve (-1 for infinite).
+      limit: 1000
+      # Boolean indicating whether or not to scroll down to the bottom on screen updates.
+      auto_scroll_on_update: true
+      # Number of lines to scroll on ScrollUp & ScrollDown events.
+      # Default: 3
+      scroll_multiplier: 3
+
+    # visual scrollbar support
+    scrollbar:
+      # scroll bar position: Left, Right, Hidden (ignore-case)
+      position: Hidden
+      # whether or not to hide the scrollbar when in alt-screen.
+      hide_in_alt_screen: true
+
+    # mouse setting
+    mouse:
+      # whether or not to hide mouse when typing
+      #
+      # Default value: true
+      hide_while_typing: true
+
+    # Some VT sequences should need access permissions.
+    #
+    # These can be to:
+    # - allow     Allows the given functionality
+    # - deny      Denies the given functionality
+    # - ask       Asks the user interactively via popup dialog for permission of the given action.
+    #
+    # Default for all of these entries should be: "ask".
+    permissions:
+      # Allows changing the font via `OSC 50 ; Pt ST`.
+      change_font: ask
+      # Allows capturing the screen buffer via `CSI > Pm ; Ps ; Pc ST`.
+      # The response can be read from stdin as sequence `OSC 314 ; <screen capture> ST`
+      capture_buffer: ask
+      # Allows displaying the "Host Writable Statusline" programmatically using `DECSSDT 2`.
+      display_host_writable_statusline: ask
+
+    # If enabled, and you double-click on a word in the primary screen,
+    # all other words matching this word will be highlighted as well.
+    # So the double-clicked word will be selected as well as highlighted, along with
+    # all other words being simply highlighted.
+    #
+    # This is currently implemented by initiating a search on the double-clicked word.
+    # Therefore one can even use FocusNextSearchMatch and FocusPreviousSearchMatch to
+    # jump to the next/previous same word, also outside of the current viewport.
+    #
+    # Default: true
+    highlight_word_and_matches_on_double_click: true
+
+    # Font related configuration (font face, styles, size, rendering mode).
+    font:
+      # Initial font size in pixels.
+      size: 20
+
+      # DPI scaling factor applied on top of the system configured on (default: 1.0).
+      dpi_scale: 1.0
+
+      # Font Locator API
+      # Selects an engine to use for locating font files on the system.
+      # This is implicitly also responsible for font fallback
+      # Possible values are:
+      # - native          : automatically choose the best available on the current platform
+      # - fontconfig      : uses fontconfig to select fonts
+      # - CoreText        : uses OS/X CoreText to select fonts.
+      # - DirectWrite     : selects DirectWrite engine (Windows only)
+      locator: native
+
+      # Text shaping related settings
+      text_shaping:
+        # Selects which text shaping and font rendering engine to use.
+        # Supported values are:
+        # - native      : automatically choose the best available on the current platform.
+        # - DirectWrite : selects DirectWrite engine (Windows only)
+        # - CoreText    : selects CoreText engine (Mac OS/X only) (currently not implemented)
+        # - OpenShaper  : selects OpenShaper (harfbuzz/freetype/fontconfig, available on all
+        #                 platforms)
+        engine: native
+
+      # Uses builtin textures for pixel-perfect box drawing.
+      # If disabled, the font's provided box drawing characters
+      # will be used (Default: true).
+      builtin_box_drawing: true
+
+      # Font render modes tell the font rasterizer engine what rendering technique to use.
+      #
+      # Modes available are:
+      # - lcd          Uses a subpixel rendering technique optimized for LCD displays.
+      # - light        Uses a subpixel rendering technique in gray-scale.
+      # - gray         Uses standard gray-scaled anti-aliasing.
+      # - monochrome   Uses pixel-perfect bitmap rendering.
+      render_mode: gray
+
+      # Indicates whether or not to include *only* monospace fonts in the font and
+      # font-fallback list (Default: true).
+      strict_spacing: false
+
+      # Font family to use for displaying text.
+      #
+      # A font can be either described in detail as below or as a
+      # simple string value (e.g. "monospace" with the appropriate
+      # weight/slant applied automatically).
+      regular:
+        # Font family defines the font family name, such as:
+        # Fira Code", "Courier New", or "monospace" (default).
+        family: "Iosevka Term SS09 Light"
+
+        # Font weight can be one of:
+        #   thin, extra_light, light, demilight, book, normal,
+        #   medium, demibold, bold, extra_bold, black, extra_black.
+        weight: light
+
+        # Font slant can be one of: normal, italic, oblique.
+        slant: normal
+
+        # Set of optional font features to be enabled. This
+        # is usually a 4-letter code, such as ss01 or ss02 etc.
+        #
+        # Please see your font's documentation to find out what it
+        # supports.
+        #
+        # Default: []
+        features: [ss09]
+
+      # If bold/italic/bold_italic are not explicitly specified, the regular font with
+      # the respective weight and slant will be used.
+      bold:
+        family: "Iosevka Term SS09"
+        features: [ss09]
+        weight: demibold
+      italic:
+        family: "Iosevka Term Curly Slab"
+        weight: light
+        slant: italic
+      bold_italic:
+        family: "Iosevka Term Curly Slab Ex"
+        weight: regular
+        slant: italic
+      #bold: "Hack"
+      #italic: "Hack"
+      #bold_italic: "Hack"
+
+      # This is a special font to be used for displaying unicode symbols
+      # that are to be rendered in emoji presentation.
+      # Defaults to "emoji".
+      emoji: "Noto Color Emoji"
+
+    # Indicates whether or not bold text should be rendered in bright colors,
+    # for indexed colors.
+    #
+    # If disabled, normal color will be used instead.
+    #
+    # Default: false
+    draw_bold_text_with_bright_colors: false
+
+    # Terminal cursor display configuration
+    cursor:
+      # Supported shapes are:
+      #
+      # - block         a filled rectangle
+      # - rectangle     just the outline of a block
+      # - underscore    a line under the text
+      # - bar:          the well known i-Beam
+      shape: "bar"
+      # Determines whether or not the cursor will be blinking over time.
+      blinking: false
+      # Blinking interval (in milliseconds) to use when cursor is blinking.
+      blinking_interval: 500
+
+    # vi-like normal-mode specific settings.
+    # Note, currently only the cursor can be customized.
+    normal_mode:
+      cursor:
+        shape: block
+        blinking: false
+        blinking_interval: 500
+
+    # vi-like visual/visual-line/visual-block mode specific settings.
+    # Note, currently only the cursor can be customized.
+    visual_mode:
+      cursor:
+        shape: block
+        blinking: false
+        blinking_interval: 500
+
+    # Time duration in milliseconds for which yank highlight is shown.
+    vi_mode_highlight_timeout: 300
+
+    # Configures a `scrolloff` for cursor movements in normal and visual (block) modes.
+    #
+    # Default: 8
+    vi_mode_scrolloff: 8
+
+    status_line:
+      # Either none or indicator.
+      # This only reflects the initial state of the status line, as it can
+      # be changed at any time during runtime by the user or by an application.
+      display: none
+
+      # Position to place the status line to, if it is to be shown.
+      # This can be either value `top` or value `bottom`.
+      # Default: bottom
+      position: bottom
+
+      # Synchronize the window title with the Host Writable status_line if
+      # and only if the host writable status line was denied to be shown.
+      # Default: false
+      sync_to_window_title: false
+
+    # Background configuration
+    background:
+      # Background opacity to use. A value of 1.0 means fully opaque whereas 0.0 means fully
+      # transparent. Only values between 0.0 and 1.0 are allowed.
+      opacity: 1.0
+      # Some platforms can blur the transparent background (currently only Windows 10 is supported).
+      blur: false
+
+    # Specifies a colorscheme to use (alternatively the colors can be inlined).
+    colors: "default"
+
+    # Hyperlinks (via OSC-8) can be stylized and colorized on hover.
+    hyperlink_decoration:
+      normal: dotted
+      hover: underline
+
+# Color Profiles
+# --------------
+#
+# Here you can configure your color profiles, whereas a color can be expressed in standard web format,
+# with a leading # followed by red/green/blue values, 7 characters in total.
+# You may alternatively use 0x as prefix instead of #.
+# For example 0x102030 is equal to '#102030'.
+color_schemes:
+  default:
+    # Default colors
+    default:
+      # Default background color (this can be made transparent, see above).
+      background: "#11171d"
+      # Default foreground text color.
+      foreground: "#e3e0cd"
+
+    # Background image support.
+    background_image:
+      # Full path to the image to use as background.
+      #
+      # Default: empty string (disabled)
+      # path: '/Users/trapni/Pictures/bg.png'
+
+      # Image opacity to be applied to make the image not look to intense
+      # and not get too distracted by the background image.
+      # Default: 0.5
+      opacity: 0.5
+
+      # Optionally blurs background image to make it less distracting
+      # and keep the focus on the actual terminal contents.
+      #
+      # Default: false
+      blur: false
+
+    # Mandates the color of the cursor and potentially overridden text.
+    #
+    # The color can be specified in RGB as usual, plus
+    # - CellForeground: Selects the cell's foreground color.
+    # - CellBackground: Selects the cell's background color.
+    cursor:
+      # Specifies the color to be used for the actual cursor shape.
+      #
+      # Default: CellForeground
+      default: "#00d992"
+      # Specifies the color to be used for the characters that would
+      # be covered otherwise.
+      #
+      # Default: CellBackground
+      text: CellBackground
+
+    # color to pick for hyperlinks decoration, when hovering
+    hyperlink_decoration:
+      normal: "#f0f000"
+      hover: "#ff0000"
+
+    # Color to pick for vi_mode highlights.
+    # The value format is equivalent to how selection colors and alpha contribution is defined.
+    vi_mode_highlight:
+      foreground: CellForeground
+      foreground_alpha: 1.0
+      background: "#ffa500"
+      background_alpha: 0.5
+
+    # Color override for the current cursor's line when in vi_mode:
+    # The value format is equivalent to how selection colors and alpha contribution is defined.
+    # To disable cursorline in vi_mode, set foreground to CellForeground and background to CellBackground.
+    vi_mode_cursorline:
+      foreground: "#ffffff"
+      foreground_alpha: 0.2
+      background: "#808080"
+      background_alpha: 0.4
+
+    # The text selection color can be customized here.
+    # Leaving a value empty will default to the inverse of the content's color values.
+    #
+    # The color can be specified in RGB as usual, plus
+    # - CellForeground: Selects the cell's foreground color.
+    # - CellBackground: Selects the cell's background color.
+    selection:
+      # Specifies the color to be used for the selected text.
+      #
+      # Default: CellBackground
+      foreground: CellForeground
+      # Specifies the alpha value (between 0.0 and 1.0) the configured foreground color
+      # will contribute to the original color.
+      #
+      # A value of 1.0 will paint over, whereas a value of 0.5 will give
+      # a look of a half-transparently painted grid cell.
+      foreground_alpha: 1.0
+      # Specifies the color to be used for the selected background.
+      #
+      # Default: CellForeground
+      background: "#4040f0"
+      # Specifies the alpha value (between 0.0 and 1.0) the configured background color
+      # will contribute to the original color.
+      #
+      # A value of 1.0 will paint over, whereas a value of 0.5 will give
+      # a look of a half-transparently painted grid cell.
+      background_alpha: 0.5
+
+    # Search match highlighting. Similar to selection highlighting.
+    search_highlight:
+      foreground: CellBackground
+      background: CellForeground
+      foreground_alpha: 1.0
+      background_alpha: 1.0
+
+    # Search match highlighting (focused term). Similar to selection highlighting.
+    search_highlight_focused:
+      foreground: CellBackground
+      background: CellForeground
+      foreground_alpha: 1.0
+      background_alpha: 1.0
+
+    # Coloring for the word that is highlighted due to double-clicking it.
+    #
+    # The format is similar to selection highlighting.
+    word_highlight_current:
+      foreground: CellForeground
+      background: "#909090"
+      foreground_alpha: 1.0
+      background_alpha: 0.5
+
+    # Coloring for the word that is highlighted due to double-clicking
+    # another word that matches this word.
+    #
+    # The format is similar to selection highlighting.
+    word_highlight_other:
+      foreground: CellForeground
+      background: "#909090"
+      foreground_alpha: 1.0
+      background_alpha: 0.5
+
+    # Defines the colors to be used for the Indicator status line.
+    # Values must be in RGB form.
+    indicator_statusline:
+      # Default: default background
+      foreground: "#808080"
+      # Default: default foreground
+      background: "#000000"
+
+    # Alternate colors to be used for the indicator status line when
+    # this terminal is currently not in focus.
+    indicator_statusline_inactive:
+      # Default: default background
+      foreground: "#808080"
+      # Default: default foreground
+      background: "#000000"
+
+    # Colors for the IME (Input Method Editor) area.
+    input_method_editor:
+      # Default: default #FFFFFF
+      foreground: "#FFFFFF"
+      # Default: default #FF0000
+      background: "#FF0000"
+
+    # Normal colors
+    normal:
+      black: "#000000"
+      red: "#ff0035"
+      green: "#85ff00"
+      yellow: "#ffc900"
+      blue: "#00a7ff"
+      magenta: "#cb01ff"
+      cyan: "#00e0ff"
+      white: "#f0f0f0"
+
+    # Bright colors
+    bright:
+      black: "#000000"
+      red: "#ffb4af"
+      green: "#d2ffba"
+      yellow: "#ffebb7"
+      blue: "#b1deff"
+      magenta: "#edb5ff"
+      cyan: "#bdf4ff"
+      white: "#ffffff"
+    # Dim (faint) colors, if not set, they're automatically computed based on normal colors.
+    # dim:
+    #     black:   '#1d1f21'
+    #     red:     '#cc342b'
+    #     green:   '#198844'
+    #     yellow:  '#fba922'
+    #     blue:    '#3971ed'
+    #     magenta: '#a36ac7'
+    #     cyan:    '#3971ed'
+    #     white:   '#c5c8c6'
+
+# Key Bindings
+# ------------
+#
+# In this section you can customize key bindings.
+# Each array element in `input_mapping` represents one key binding,
+# whereas `mods` represents an array of keyboard modifiers that must be pressed - as well as
+# the `key` or `mouse` -  in order to activate the corresponding action,
+#
+# Additionally one can filter input mappings based on special terminal modes using the `modes` option:
+# - Alt       : The terminal is currently in alternate screen buffer, otherwise it is in primary screen buffer.
+# - AppCursor : The application key cursor mode is enabled (otherwise it's normal cursor mode).
+# - AppKeypad : The application keypad mode is enabled (otherwise it's the numeric keypad mode).
+# - Select    : The terminal has currently an active grid cell selection (such as selected text).
+# - Insert    : The Insert input mode is active, that is the default and one way to test
+#               that the input mode is not in normal mode or any of the visual select modes.
+# - Search    : There is a search term currently being edited or already present.
+# - Trace     : The terminal is currently in trace-mode, i.e., each VT sequence can be interactively
+#               single-step executed using custom actions. See TraceEnter/TraceStep/TraceLeave actions.
+#
+# You can combine these modes by concatenating them via | and negate a single one
+# by prefixing with ~.
+#
+# The `modes` option defaults to not filter at all (the input mappings always
+# match based on modifier and key press / mouse event).
+#
+# `key` represents keys on your keyboard, and `mouse` represents buttons
+# as well as the scroll wheel.
+#
+# Modifiers:
+# - Alt
+# - Control
+# - Shift
+# - Meta (this is the Windows key on Windows OS, and the Command key on OS/X, and Meta on anything else)
+#
+# Keys can be expressed case-insensitively symbolic:
+#   APOSTROPHE, ADD, BACKSLASH, COMMA, DECIMAL, DIVIDE, EQUAL, LEFT_BRACKET,
+#   MINUS, MULTIPLY, PERIOD, RIGHT_BRACKET, SEMICOLON, SLASH, SUBTRACT, SPACE
+#   Enter, Backspace, Tab, Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
+#   DownArrow, LeftArrow, RightArrow, UpArrow, Insert, Delete, Home, End, PageUp, PageDown,
+#   Numpad_NumLock, Numpad_Divide, Numpad_Multiply, Numpad_Subtract, Numpad_CapsLock,
+#   Numpad_Add, Numpad_Decimal, Numpad_Enter, Numpad_Equal,
+#   Numpad_0, Numpad_1, Numpad_2, Numpad_3, Numpad_4,
+#   Numpad_5, Numpad_6, Numpad_7, Numpad_8, Numpad_9
+# or in case of standard characters, just the character.
+#
+# Mouse buttons can be one of the following self-explanatory ones:
+#   Left, Middle, Right, WheelUp, WheelDown
+#
+# Actions:
+# - CancelSelection   Cancels currently active selection, if any.
+# - ChangeProfile     Changes the profile to the given profile `name`.
+# - ClearHistoryAndReset    Clears the history, performs a terminal hard reset and attempts to force a redraw of the currently running application.
+# - CopyPreviousMarkRange   Copies the most recent range that is delimited by vertical line marks into clipboard.
+# - CopySelection     Copies the current selection into the clipboard buffer.
+# - DecreaseFontSize  Decreases the font size by 1 pixel.
+# - DecreaseOpacity   Decreases the default-background opacity by 5%.
+# - FocusNextSearchMatch     Focuses the next search match (if any).
+# - FocusPreviousSearchMatch Focuses the next previous match (if any).
+# - FollowHyperlink   Follows the hyperlink that is exposed via OSC 8 under the current cursor position.
+# - IncreaseFontSize  Increases the font size by 1 pixel.
+# - IncreaseOpacity   Increases the default-background opacity by 5%.
+# - NewTerminal       Spawns a new terminal at the current terminals current working directory.
+# - NoSearchHighlight Disables current search highlighting, if anything is still highlighted due to a prior search.
+# - OpenConfiguration Opens the configuration file.
+# - OpenFileManager   Opens the current working directory in a system file manager.
+# - PasteClipboard    Pastes clipboard to standard input. Pass boolean parameter 'strip' to indicate whether or not to strip repetitive whitespaces down to one and newlines to whitespaces.
+# - PasteSelection    Pastes current selection to standard input.
+# - Quit              Quits the application.
+# - ReloadConfig      Forces a configuration reload.
+# - ResetConfig       Overwrites current configuration with builtin default configuration and loads it. Attention, all your current configuration will be lost due to overwrite!
+# - ResetFontSize     Resets font size to what is configured in the config file.
+# - ScreenshotVT      Takes a screenshot in form of VT escape sequences.
+# - ScrollDown        Scrolls down by the multiplier factor.
+# - ScrollMarkDown    Scrolls one mark down (if none present, bottom of the screen)
+# - ScrollMarkUp      Scrolls one mark up
+# - ScrollOneDown     Scrolls down by exactly one line.
+# - ScrollOneUp       Scrolls up by exactly one line.
+# - ScrollPageDown    Scrolls a page down.
+# - ScrollPageUp      Scrolls a page up.
+# - ScrollToBottom    Scrolls to the bottom of the screen buffer.
+# - ScrollToTop       Scrolls to the top of the screen buffer.
+# - ScrollUp          Scrolls up by the multiplier factor.
+# - SearchReverse     Initiates search mode (starting to search at current cursor position, moving upwards).
+# - SendChars         Writes given characters in `chars` member to the applications input.
+# - ToggleAllKeyMaps  Disables/enables responding to all keybinds (this keybind will be preserved when disabling all others).
+# - ToggleFullScreen  Enables/disables full screen mode.
+# - ToggleInputProtection Enables/disables terminal input protection.
+# - ToggleStatusLine  Shows/hides the VT320 compatible Indicator status line.
+# - ToggleTitleBar    Shows/Hides titlebar
+# - TraceBreakAtEmptyQueue Executes any pending VT sequence from the VT sequence buffer in trace mode, then waits.
+# - TraceEnter        Enables trace mode, suspending execution until explicitly requested to continue (See TraceLeave and TraceStep).
+# - TraceLeave        Disables trace mode. Any pending VT sequence will be flushed out and normal execution will be resumed.
+# - TraceStep         Executes a single VT sequence that is to be executed next.
+# - ViNormalMode      Enters/Leaves Vi-like normal mode. The cursor can then be moved via h/j/k/l movements in normal mode and text can be selected via v, yanked via y, and clipboard pasted via p.
+# - WriteScreen       Writes VT sequence in `chars` member to the screen (bypassing the application).
+
+input_mapping:
+  - { mods: [Control], mouse: Left, action: FollowHyperlink }
+  - { mods: [], mouse: Middle, action: PasteSelection }
+  - { mods: [], mouse: WheelDown, action: ScrollDown }
+  - { mods: [], mouse: WheelUp, action: ScrollUp }
+  - { mods: [Alt], key: Enter, action: ToggleFullscreen }
+  - { mods: [Alt], mouse: WheelDown, action: DecreaseOpacity }
+  - { mods: [Alt], mouse: WheelUp, action: IncreaseOpacity }
+  - { mods: [Control, Alt], key: S, action: ScreenshotVT }
+  - { mods: [Control, Shift], key: Plus, action: IncreaseFontSize }
+  - { mods: [Control], key: "0", action: ResetFontSize }
+  - { mods: [Control, Shift], key: Minus, action: DecreaseFontSize }
+  - { mods: [Control, Shift], key: "_", action: DecreaseFontSize }
+  - { mods: [Control, Shift], key: N, action: NewTerminal }
+  - { mods: [Control, Shift], key: V, action: PasteClipboard, strip: false }
+  - { mods: [Control, Alt], key: V, action: PasteClipboard, strip: true }
+  - { mods: [Control], key: C, action: CopySelection, mode: "Select|Insert" }
+  - { mods: [Control], key: C, action: CancelSelection, mode: "Select|Insert" }
+  - {
+      mods: [Control],
+      key: V,
+      action: PasteClipboard,
+      strip: false,
+      mode: "Select|Insert",
+    }
+  - { mods: [Control], key: V, action: CancelSelection, mode: "Select|Insert" }
+  - { mods: [], key: Escape, action: CancelSelection, mode: "Select|Insert" }
+  - { mods: [Control, Shift], key: Space, action: ViNormalMode, mode: "Insert" }
+  - { mods: [Control, Shift], key: Comma, action: OpenConfiguration }
+  - { mods: [Control, Shift], key: Q, action: Quit }
+  - { mods: [Control], mouse: WheelDown, action: DecreaseFontSize }
+  - { mods: [Control], mouse: WheelUp, action: IncreaseFontSize }
+  - { mods: [Shift], key: DownArrow, action: ScrollOneDown }
+  - { mods: [Shift], key: End, action: ScrollToBottom }
+  - { mods: [Shift], key: Home, action: ScrollToTop }
+  - { mods: [Shift], key: PageDown, action: ScrollPageDown }
+  - { mods: [Shift], key: PageUp, action: ScrollPageUp }
+  - { mods: [Shift], key: UpArrow, action: ScrollOneUp }
+  - { mods: [Control, Alt], key: K, action: ScrollMarkUp, mode: "~Alt" }
+  - { mods: [Control, Alt], key: J, action: ScrollMarkDown, mode: "~Alt" }
+  - { mods: [Shift], mouse: WheelDown, action: ScrollPageDown }
+  - { mods: [Shift], mouse: WheelUp, action: ScrollPageUp }
+  - { mods: [Control, Alt], key: O, action: OpenFileManager }
+  - { mods: [Control, Alt], key: ".", action: ToggleStatusLine }
+  - { mods: [Control, Shift], key: "F", action: SearchReverse }
+  - { mods: [Control, Shift], key: "H", action: NoSearchHighlight }
+  - { mods: [], key: "F3", action: FocusNextSearchMatch }
+  - { mods: [Shift], key: "F3", action: FocusPreviousSearchMatch }
+#   - { mods: [Control, Meta],  key: 'E',           action: TraceEnter,             mode: "~Trace" }
+#   - { mods: [Control, Meta],  key: 'E',           action: TraceLeave,             mode: "Trace" }
+#   - { mods: [Control, Meta],  key: 'N',           action: TraceStep,              mode: "Trace" }
+#   - { mods: [Control, Meta],  key: 'F',           action: TraceBreakAtEmptyQueue, mode: "Trace" }

From 02a8033fede04951a207b7608b71c5f1568a2fd0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 29 Oct 2023 09:48:27 +0100
Subject: [PATCH 148/656] nvim: lazy update

---
 .config/nvim/lazy-lock.json             | 87 +++++++++++++------------
 .config/nvim/lua/config/lazy.lua        |  2 -
 .config/nvim/lua/config/options.lua     |  1 +
 .config/nvim/lua/plugins/formatting.lua |  2 +
 4 files changed, 48 insertions(+), 44 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 2bc7d9e..3712cb0 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,57 +1,60 @@
 {
-  "LazyVim": { "branch": "main", "commit": "758520dcbbf0f40774beceaf65de3f464b23fc3f" },
-  "LuaSnip": { "branch": "master", "commit": "6085dfd1808fb0059e13d160317a10c3a68c5407" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "08ab25507a92e22cec433f6750bb4a56a8cec22d" },
-  "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" },
+  "LazyVim": { "branch": "main", "commit": "9a6b0f8928ad2e802cae36c6b05b94cd9a73451f" },
+  "LuaSnip": { "branch": "master", "commit": "80a8528f084a97b624ae443a6f50ff8074ba486b" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "976e7e3e9c400b99f1cb337b2ce804a9652571ec" },
   "bufferline.nvim": { "branch": "main", "commit": "357cc8f8eeb64702e6fcf2995e3b9becee99a5d3" },
-  "catppuccin": { "branch": "main", "commit": "7a4bcdadafc59a5bedbd866c643fa486d8cca4a1" },
+  "catppuccin": { "branch": "main", "commit": "b359f3eec32dcc6b7c9a26901dc235bbb6cd8a0b" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
-  "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
+  "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "7ad988c2509ff1869c26ecdabebadc7943e78f6f" },
+  "conform.nvim": { "branch": "master", "commit": "3d639d6155a63e3143920b739cee02f3faa1b4db" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
-  "copilot.lua": { "branch": "master", "commit": "1a8032ae496916ccc7a7a52ee79194fbef29f462" },
-  "dressing.nvim": { "branch": "master", "commit": "8f4d62b7817455896a3c73cab642002072c114bc" },
+  "copilot.lua": { "branch": "master", "commit": "688762a3999eeee54b78f447719854f52672ec02" },
+  "dashboard-nvim": { "branch": "master", "commit": "c71cab740e2add248c54c458b5ca9d6e77c30fa6" },
+  "dressing.nvim": { "branch": "master", "commit": "1f2d1206a03bd3add8aedf6251e4534611de577f" },
   "friendly-snippets": { "branch": "main", "commit": "43727c2ff84240e55d4069ec3e6158d74cb534b6" },
-  "gitsigns.nvim": { "branch": "main", "commit": "2272cf9f0c092e908f892f5b075e6cc2a8d3d07d" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "c60e76a638b1d2a4299b9bfc38461cdb02ae8397" },
-  "lazy.nvim": { "branch": "main", "commit": "59335c5b9d116f5d3948f833288a89e2a829a005" },
-  "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "e2705063f395b44f676cd26596a11007a2cbd3bd" },
-  "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" },
-  "mini.ai": { "branch": "main", "commit": "7ae226f331885e6f30e9a8229e113debc59308ae" },
-  "mini.bufremove": { "branch": "main", "commit": "7821606e35c1ac931b56d8e3155f45ffe76ee7e5" },
-  "mini.comment": { "branch": "main", "commit": "877acea5b2a32ff55f808fc0ebe9aa898648318c" },
-  "mini.indentscope": { "branch": "main", "commit": "f60e9b51a6214c73a170ffc5445ce91560981031" },
-  "mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "71f1841ba6c652908678cece623f52c1fea8a6cd" },
-  "neoconf.nvim": { "branch": "main", "commit": "466ba6f645f63f91ac84d3dd986acede5d107f39" },
-  "neodev.nvim": { "branch": "main", "commit": "8cc5eb23452d355ea95b7253ca1367c3420352ff" },
-  "noice.nvim": { "branch": "main", "commit": "8d775bc8ac1a594a2ecdb80e092330afd916e4c3" },
-  "none-ls.nvim": { "branch": "main", "commit": "f39f627bbdfb33cc4ae4a95b4708e7dba7b9aafc" },
-  "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
-  "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
-  "nvim-lspconfig": { "branch": "master", "commit": "361a2878a41f23452457eec12a807ff59bc75882" },
+  "gitsigns.nvim": { "branch": "main", "commit": "af0f583cd35286dd6f0e3ed52622728703237e50" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "64fdadb3ada61c4297452f7662789b01ee82ffcb" },
+  "lazy.nvim": { "branch": "main", "commit": "16603c6917435d8446f7357cb61095138a417085" },
+  "lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "40301e1c74bc0946eece13edf2b1c561cc497491" },
+  "mason.nvim": { "branch": "main", "commit": "cd7835b15f5a4204fc37e0aa739347472121a54c" },
+  "mini.ai": { "branch": "main", "commit": "fc9ce93eb8d58ce1a39101928fb5ea8f8b97844c" },
+  "mini.bufremove": { "branch": "main", "commit": "f53c7f27e36009fe61563c11cde154b94a0e5b94" },
+  "mini.comment": { "branch": "main", "commit": "e4320af992cd053a7da2f33d9f63a86c2ab6ce59" },
+  "mini.indentscope": { "branch": "main", "commit": "cbc07203ca8faae952ca373c1f6cc5881ce97af0" },
+  "mini.surround": { "branch": "main", "commit": "862cfaef72d789d320625ec34e2488a5cc8fd423" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "1236db954ce502eb5b340bcdb69aa057cc372e8d" },
+  "neoconf.nvim": { "branch": "main", "commit": "00dcf2b81c45de1768b4171faa16729f0888cfb8" },
+  "neodev.nvim": { "branch": "main", "commit": "f3f5d756f4043180523bb69072a104f7216b5f42" },
+  "noice.nvim": { "branch": "main", "commit": "92433164e2f7118d4122c7674c3834d9511722ba" },
+  "nui.nvim": { "branch": "main", "commit": "c0c8e347ceac53030f5c1ece1c5a5b6a17a25b32" },
+  "nvim-cmp": { "branch": "main", "commit": "51260c02a8ffded8e16162dcf41a23ec90cfba62" },
+  "nvim-lint": { "branch": "master", "commit": "962a76877a4479a535b935bd7ef35ad41ba308b2" },
+  "nvim-lspconfig": { "branch": "master", "commit": "d0467b9574b48429debf83f8248d8cee79562586" },
   "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
   "nvim-noirbuddy": { "branch": "master", "commit": "67f945acee6da0ea4c11575c72ce8e930090ea95" },
   "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
-  "nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" },
-  "nvim-treesitter": { "branch": "master", "commit": "812c2dd8fe838bb26cb53f0d251116468c2cae37" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "0c136439fb93fd94db9106250ff6f6858101422b" },
-  "nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" },
-  "persistence.nvim": { "branch": "main", "commit": "4b8051c01f696d8849a5cb8afa9767be8db16e40" },
-  "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
+  "nvim-spectre": { "branch": "master", "commit": "696cff781a4a7ecc91549736835e2acbd00fe859" },
+  "nvim-treesitter": { "branch": "master", "commit": "d2fe87062dde25e7fdadac061f6ca04541275e31" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "2806d83e3965017382ce08792ee527e708fa1bd4" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "e69a504baf2951d52e1f1fbb05145d43f236cbf1" },
+  "nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "92e688f013c69f90c9bbd596019ec10235bc51de" },
+  "nvim-web-devicons": { "branch": "master", "commit": "5de460ca7595806044eced31e3c36c159a493857" },
+  "persistence.nvim": { "branch": "main", "commit": "ad538bfd5336f1335cdb6fd4e0b0eebfa6e12f32" },
+  "plenary.nvim": { "branch": "master", "commit": "50012918b2fc8357b87cff2a7f7f0446e47da174" },
   "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
-  "telescope.nvim": { "branch": "master", "commit": "8c69f58427f98b2ca39a90a36db830c06e30351c" },
-  "todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
-  "tokyonight.nvim": { "branch": "main", "commit": "ebe613949edc0ac2cd4b911d502c67b023673d87" },
-  "trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" },
-  "vim-illuminate": { "branch": "master", "commit": "1b5d70332a51a1de05f281069851865a2bb1e6d7" },
+  "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
+  "telescope.nvim": { "branch": "master", "commit": "4522d7e3ea75ffddabdc39957168a8a7060b5df0" },
+  "todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" },
+  "tokyonight.nvim": { "branch": "main", "commit": "f247ee700b569ed43f39320413a13ba9b0aef0db" },
+  "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
+  "vim-illuminate": { "branch": "master", "commit": "3bd2ab64b5d63b29e05691e624927e5ebbf0fb86" },
   "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
-  "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" },
+  "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
   "yaml-companion.nvim": { "branch": "main", "commit": "4de1e1546abc461f62dee02fcac6a02debd6eb9e" },
-  "yanky.nvim": { "branch": "main", "commit": "590a713b0372485f595eea36e7e3ab2069946794" }
+  "yanky.nvim": { "branch": "main", "commit": "c1211c6c6d983a72c74dde44df8575a64d50562f" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index a0e2c80..4e1c2e3 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -12,8 +12,6 @@ require("lazy").setup({
 		{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
 		-- import any extras modules here
 		-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
-		{ import = "lazyvim.plugins.extras.formatting.conform" },
-		{ import = "lazyvim.plugins.extras.formatting.prettier" },
 		{ import = "lazyvim.plugins.extras.coding.copilot" },
 		{ import = "lazyvim.plugins.extras.coding.yanky" },
 		{ import = "lazyvim.plugins.extras.lang.go" },
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 298a8c0..18c2447 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -9,6 +9,7 @@ opt.clipboard = ""
 
 vim.g.do_filetype_lua = 1
 
+vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
 vim.o.autochdir = true
 vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
 vim.o.scrolloff = 7
diff --git a/.config/nvim/lua/plugins/formatting.lua b/.config/nvim/lua/plugins/formatting.lua
index e51693d..07e34da 100644
--- a/.config/nvim/lua/plugins/formatting.lua
+++ b/.config/nvim/lua/plugins/formatting.lua
@@ -3,6 +3,8 @@ return {
 		"stevearc/conform.nvim",
 		opts = {
 			formatters_by_ft = {
+				["html"] = { { "prettierd", "prettier" } },
+				["sass"] = { { "prettierd", "prettier" } },
 				["proto"] = { { "buf" } },
 				["terraform"] = { { "terraform_fmt" } },
 			},

From 2f0cc73f6831457ff3a45fbccda9af14047996fe Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 29 Oct 2023 09:54:18 +0100
Subject: [PATCH 149/656] wezterm: default font size

---
 .config/wezterm/wezterm.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 7b445fd..a0c8f0b 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -93,7 +93,7 @@ return {
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
 	allow_square_glyphs_to_overflow_width = "Always",
-	font_size = 13.5,
+	font_size = 20,
 	command_palette_font_size = 13.5,
 	line_height = 1.1,
 	initial_cols = 132,

From fe48f382c27992c33f47cad60af19295f9b4d1fe Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Nov 2023 20:04:31 +0100
Subject: [PATCH 150/656] nvim: telescope layout

---
 .config/nvim/lua/plugins/editor.lua | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index c1ca23a..0ce8233 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -3,4 +3,27 @@ return {
 		"folke/flash.nvim",
 		enabled = false,
 	},
+	{
+		"telescope.nvim",
+		opts = {
+			defaults = {
+				layout_strategy = "vertical",
+				layout_config = {
+					anchor = "top",
+					vertical = {
+						prompt_position = "top",
+						mirror = true,
+						-- preview_width = 0.5,
+						preview_height = 0.5,
+					},
+					width = 0.9,
+					height = 0.9,
+					preview_cutoff = 10,
+				},
+				-- sorting_strategy = "ascending",
+				winblend = 0,
+				wrap_results = true,
+			},
+		},
+	},
 }

From 8cd16682e63cac38ee009fece051a40a9bc6f74d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 2 Nov 2023 20:04:55 +0100
Subject: [PATCH 151/656] nvim: lazyvim update

---
 .config/nvim/lazy-lock.json | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 3712cb0..fbea556 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,26 +1,26 @@
 {
   "LazyVim": { "branch": "main", "commit": "9a6b0f8928ad2e802cae36c6b05b94cd9a73451f" },
   "LuaSnip": { "branch": "master", "commit": "80a8528f084a97b624ae443a6f50ff8074ba486b" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "976e7e3e9c400b99f1cb337b2ce804a9652571ec" },
-  "bufferline.nvim": { "branch": "main", "commit": "357cc8f8eeb64702e6fcf2995e3b9becee99a5d3" },
-  "catppuccin": { "branch": "main", "commit": "b359f3eec32dcc6b7c9a26901dc235bbb6cd8a0b" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "98afa085f8bee6a7d4ffb1b025248e4d0555a14b" },
+  "bufferline.nvim": { "branch": "main", "commit": "9e8d2f695dd50ab6821a6a53a840c32d2067a78a" },
+  "catppuccin": { "branch": "main", "commit": "40dc9f0621c55bd40da4ad0731fac44d15bb393a" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "3d639d6155a63e3143920b739cee02f3faa1b4db" },
+  "conform.nvim": { "branch": "master", "commit": "2c1e852fbf723b7d89b14fd28089472d92edeeb9" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "688762a3999eeee54b78f447719854f52672ec02" },
   "dashboard-nvim": { "branch": "master", "commit": "c71cab740e2add248c54c458b5ca9d6e77c30fa6" },
   "dressing.nvim": { "branch": "master", "commit": "1f2d1206a03bd3add8aedf6251e4534611de577f" },
   "friendly-snippets": { "branch": "main", "commit": "43727c2ff84240e55d4069ec3e6158d74cb534b6" },
   "gitsigns.nvim": { "branch": "main", "commit": "af0f583cd35286dd6f0e3ed52622728703237e50" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "64fdadb3ada61c4297452f7662789b01ee82ffcb" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "29be0919b91fb59eca9e90690d76014233392bef" },
   "lazy.nvim": { "branch": "main", "commit": "16603c6917435d8446f7357cb61095138a417085" },
   "lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "40301e1c74bc0946eece13edf2b1c561cc497491" },
-  "mason.nvim": { "branch": "main", "commit": "cd7835b15f5a4204fc37e0aa739347472121a54c" },
+  "mason.nvim": { "branch": "main", "commit": "eabf6d347fdb75be360d4c0ced1145670a171453" },
   "mini.ai": { "branch": "main", "commit": "fc9ce93eb8d58ce1a39101928fb5ea8f8b97844c" },
   "mini.bufremove": { "branch": "main", "commit": "f53c7f27e36009fe61563c11cde154b94a0e5b94" },
   "mini.comment": { "branch": "main", "commit": "e4320af992cd053a7da2f33d9f63a86c2ab6ce59" },
@@ -28,7 +28,7 @@
   "mini.surround": { "branch": "main", "commit": "862cfaef72d789d320625ec34e2488a5cc8fd423" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "1236db954ce502eb5b340bcdb69aa057cc372e8d" },
   "neoconf.nvim": { "branch": "main", "commit": "00dcf2b81c45de1768b4171faa16729f0888cfb8" },
-  "neodev.nvim": { "branch": "main", "commit": "f3f5d756f4043180523bb69072a104f7216b5f42" },
+  "neodev.nvim": { "branch": "main", "commit": "80487e4f7bfa11c2ef2a1b461963db019aad6a73" },
   "noice.nvim": { "branch": "main", "commit": "92433164e2f7118d4122c7674c3834d9511722ba" },
   "nui.nvim": { "branch": "main", "commit": "c0c8e347ceac53030f5c1ece1c5a5b6a17a25b32" },
   "nvim-cmp": { "branch": "main", "commit": "51260c02a8ffded8e16162dcf41a23ec90cfba62" },
@@ -38,7 +38,7 @@
   "nvim-noirbuddy": { "branch": "master", "commit": "67f945acee6da0ea4c11575c72ce8e930090ea95" },
   "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
   "nvim-spectre": { "branch": "master", "commit": "696cff781a4a7ecc91549736835e2acbd00fe859" },
-  "nvim-treesitter": { "branch": "master", "commit": "d2fe87062dde25e7fdadac061f6ca04541275e31" },
+  "nvim-treesitter": { "branch": "master", "commit": "198015cca117d41e7d1fd404e0cdf3235084749b" },
   "nvim-treesitter-context": { "branch": "master", "commit": "2806d83e3965017382ce08792ee527e708fa1bd4" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "e69a504baf2951d52e1f1fbb05145d43f236cbf1" },
   "nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" },
@@ -56,5 +56,5 @@
   "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
   "yaml-companion.nvim": { "branch": "main", "commit": "4de1e1546abc461f62dee02fcac6a02debd6eb9e" },
-  "yanky.nvim": { "branch": "main", "commit": "c1211c6c6d983a72c74dde44df8575a64d50562f" }
+  "yanky.nvim": { "branch": "main", "commit": "ad6484873a88c1012c67eda8e2fba7bafef4f135" }
 }
\ No newline at end of file

From 4878f466b482cc221318998a6fb0568f78522d7b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 19 Nov 2023 13:50:41 +0100
Subject: [PATCH 152/656] nerdctl + buildkit config

---
 .config/buildkit/buildkitd.toml | 6 ++++++
 .config/nerdctl/nerdctl.toml    | 3 +++
 2 files changed, 9 insertions(+)
 create mode 100644 .config/buildkit/buildkitd.toml
 create mode 100644 .config/nerdctl/nerdctl.toml

diff --git a/.config/buildkit/buildkitd.toml b/.config/buildkit/buildkitd.toml
new file mode 100644
index 0000000..728ed62
--- /dev/null
+++ b/.config/buildkit/buildkitd.toml
@@ -0,0 +1,6 @@
+[worker.oci]
+  enabled = false
+
+[worker.containerd]
+  enabled = true
+  rootless = true
diff --git a/.config/nerdctl/nerdctl.toml b/.config/nerdctl/nerdctl.toml
new file mode 100644
index 0000000..6bbbda3
--- /dev/null
+++ b/.config/nerdctl/nerdctl.toml
@@ -0,0 +1,3 @@
+debug_full = false
+snapshotter = "native"
+insecure_registry = false

From 29d9faa20b146e5313a6cb223869bb3444994c4a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 26 Dec 2023 21:18:49 +0100
Subject: [PATCH 153/656] git: add gerrit-clone, new aliases

---
 .gitconfig | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index ee18805..318dcc8 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -37,13 +37,14 @@ sl = branchless smartlog
 sync = branchless sync
 sw = branchless switch
 s = branchless switch -i
-n = branchless switch -d main
+new = !git fetch -u origin main:main && git branchless switch -d origin/main
+
+gerrit-clone = "!f() { git clone ssh://gerrit-ssh.shelman.io:2222/$1 && (cd $1 && mkdir -p `git rev-parse --git-dir`/hooks/ && scp -O -P 2222 gerrit-ssh.shelman.io:hooks/commit-msg `git rev-parse --git-dir`/hooks/commit-msg && chmod +x `git rev-parse --git-dir`/hooks/commit-msg && git branchless init); }; f"
 
-gerrit-new = !git fetch origin main && git checkout --detach origin/main
 gerrit-push = !git push origin HEAD:refs/for/main
 gerrit-push-wip = !git push origin HEAD:refs/for/main%wip
 gerrit-push-ready = !git push origin HEAD:refs/for/main%ready
-gerrit-replace = !git commit --amend -a && git push origin HEAD:refs/for/main
+gerrit-replace = !git branchless amend && git push origin HEAD:refs/for/main
 gerrit-config = !git fetch origin refs/meta/config:refs/remotes/origin/meta/config && git checkout FETCH_HEAD
 gerrit-config-push = !git push origin HEAD:refs/meta/config
 gp = gerrit-push

From c2023b81ac609d93e57bb1c10a65dc840bb22f74 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 26 Dec 2023 21:36:25 +0100
Subject: [PATCH 154/656] git: add gerrit-switch alias to select a change
 interactively

---
 .gitconfig | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.gitconfig b/.gitconfig
index 318dcc8..6142a4a 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -41,6 +41,12 @@ new = !git fetch -u origin main:main && git branchless switch -d origin/main
 
 gerrit-clone = "!f() { git clone ssh://gerrit-ssh.shelman.io:2222/$1 && (cd $1 && mkdir -p `git rev-parse --git-dir`/hooks/ && scp -O -P 2222 gerrit-ssh.shelman.io:hooks/commit-msg `git rev-parse --git-dir`/hooks/commit-msg && chmod +x `git rev-parse --git-dir`/hooks/commit-msg && git branchless init); }; f"
 
+gerrit-switch = !(ssh `git remote get-url origin | cut -d / -f -3` gerrit query --format=JSON --current-patch-set status:open project:`git remote get-url origin | cut -d / -f 4-` \
+    | jq -sr 'map(select(.number) | \"\\(.number) @ \\(.currentPatchSet.ref) - \\(.subject)\")|join(\"\\n\")' \
+    | fzf +s -d ' ' \
+    | cut -d ' ' -f3 \
+    | xargs -n1 git fetch origin) && git checkout FETCH_HEAD
+
 gerrit-push = !git push origin HEAD:refs/for/main
 gerrit-push-wip = !git push origin HEAD:refs/for/main%wip
 gerrit-push-ready = !git push origin HEAD:refs/for/main%ready

From 3c12e2f7463ca3acd58f61ab5e78f0379cbc59c1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 27 Dec 2023 00:43:23 +0100
Subject: [PATCH 155/656] git: add git-st script

---
 .gitconfig |  7 ++++++-
 bin/git-st | 31 +++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100755 bin/git-st

diff --git a/.gitconfig b/.gitconfig
index 6142a4a..6deb7af 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -39,7 +39,12 @@ sw = branchless switch
 s = branchless switch -i
 new = !git fetch -u origin main:main && git branchless switch -d origin/main
 
-gerrit-clone = "!f() { git clone ssh://gerrit-ssh.shelman.io:2222/$1 && (cd $1 && mkdir -p `git rev-parse --git-dir`/hooks/ && scp -O -P 2222 gerrit-ssh.shelman.io:hooks/commit-msg `git rev-parse --git-dir`/hooks/commit-msg && chmod +x `git rev-parse --git-dir`/hooks/commit-msg && git branchless init); }; f"
+gerrit-clone = "!f() { \
+  git clone ssh://gerrit-ssh.shelman.io:2222/$1 \
+  && (cd $1 && mkdir -p `git rev-parse --git-dir`/hooks/ \
+  && scp -O -P 2222 gerrit-ssh.shelman.io:hooks/commit-msg `git rev-parse --git-dir`/hooks/commit-msg \
+  && chmod +x `git rev-parse --git-dir`/hooks/commit-msg \
+  && git branchless init); }; f"
 
 gerrit-switch = !(ssh `git remote get-url origin | cut -d / -f -3` gerrit query --format=JSON --current-patch-set status:open project:`git remote get-url origin | cut -d / -f 4-` \
     | jq -sr 'map(select(.number) | \"\\(.number) @ \\(.currentPatchSet.ref) - \\(.subject)\")|join(\"\\n\")' \
diff --git a/bin/git-st b/bin/git-st
new file mode 100755
index 0000000..a982342
--- /dev/null
+++ b/bin/git-st
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+git branchless smartlog || true
+printf '\n'
+
+awk -vOFS='' '
+    NR==FNR {
+        all[i++] = $0;
+        difffiles[$1] = $0;
+        next;
+    }
+    ! ($2 in difffiles) {
+        print; next;
+    }
+    {
+        gsub($2, difffiles[$2]);
+        print;
+    }
+    END {
+        if (NR != FNR) {
+            # Had diff output
+            exit;
+        }
+        # Had no diff output, just print lines from git status -sb
+        for (i in all) {
+            print all[i];
+        }
+    }
+' \
+    <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //')\
+    <(git -c color.status=always status -sb)

From 635841761e027852d74d5a99ff5b0ea6853c109e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 27 Dec 2023 12:37:56 +0100
Subject: [PATCH 156/656] nvim: add templ filetype

---
 .config/nvim/lazy-lock.json         | 84 ++++++++++++++---------------
 .config/nvim/lua/config/options.lua |  7 +++
 2 files changed, 49 insertions(+), 42 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index fbea556..4424d56 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,54 +1,54 @@
 {
-  "LazyVim": { "branch": "main", "commit": "9a6b0f8928ad2e802cae36c6b05b94cd9a73451f" },
-  "LuaSnip": { "branch": "master", "commit": "80a8528f084a97b624ae443a6f50ff8074ba486b" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "98afa085f8bee6a7d4ffb1b025248e4d0555a14b" },
-  "bufferline.nvim": { "branch": "main", "commit": "9e8d2f695dd50ab6821a6a53a840c32d2067a78a" },
-  "catppuccin": { "branch": "main", "commit": "40dc9f0621c55bd40da4ad0731fac44d15bb393a" },
+  "LazyVim": { "branch": "main", "commit": "879e29504d43e9f178d967ecc34d482f902e5a91" },
+  "LuaSnip": { "branch": "master", "commit": "07f5d974203a5d957e7b464020261a657f59556d" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "771c9517bf36f431361cbaac1ddc8499c7e5c5d3" },
+  "bufferline.nvim": { "branch": "main", "commit": "e48ce1805697e4bb97bc171c081e849a65859244" },
+  "catppuccin": { "branch": "main", "commit": "4fbab1f01488718c3d54034a473d0346346b90e3" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
-  "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
+  "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "2c1e852fbf723b7d89b14fd28089472d92edeeb9" },
+  "conform.nvim": { "branch": "master", "commit": "86393c143b8d1b7bdae1449fd25de315fd967fd7" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
-  "copilot.lua": { "branch": "master", "commit": "688762a3999eeee54b78f447719854f52672ec02" },
-  "dashboard-nvim": { "branch": "master", "commit": "c71cab740e2add248c54c458b5ca9d6e77c30fa6" },
-  "dressing.nvim": { "branch": "master", "commit": "1f2d1206a03bd3add8aedf6251e4534611de577f" },
-  "friendly-snippets": { "branch": "main", "commit": "43727c2ff84240e55d4069ec3e6158d74cb534b6" },
-  "gitsigns.nvim": { "branch": "main", "commit": "af0f583cd35286dd6f0e3ed52622728703237e50" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "29be0919b91fb59eca9e90690d76014233392bef" },
-  "lazy.nvim": { "branch": "main", "commit": "16603c6917435d8446f7357cb61095138a417085" },
-  "lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "40301e1c74bc0946eece13edf2b1c561cc497491" },
-  "mason.nvim": { "branch": "main", "commit": "eabf6d347fdb75be360d4c0ced1145670a171453" },
-  "mini.ai": { "branch": "main", "commit": "fc9ce93eb8d58ce1a39101928fb5ea8f8b97844c" },
-  "mini.bufremove": { "branch": "main", "commit": "f53c7f27e36009fe61563c11cde154b94a0e5b94" },
-  "mini.comment": { "branch": "main", "commit": "e4320af992cd053a7da2f33d9f63a86c2ab6ce59" },
-  "mini.indentscope": { "branch": "main", "commit": "cbc07203ca8faae952ca373c1f6cc5881ce97af0" },
-  "mini.surround": { "branch": "main", "commit": "862cfaef72d789d320625ec34e2488a5cc8fd423" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "1236db954ce502eb5b340bcdb69aa057cc372e8d" },
-  "neoconf.nvim": { "branch": "main", "commit": "00dcf2b81c45de1768b4171faa16729f0888cfb8" },
-  "neodev.nvim": { "branch": "main", "commit": "80487e4f7bfa11c2ef2a1b461963db019aad6a73" },
+  "copilot.lua": { "branch": "master", "commit": "858bbfa6fa81c88fb1f64107d7981f1658619e0a" },
+  "dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" },
+  "dressing.nvim": { "branch": "master", "commit": "94b0d24483d56f3777ee0c8dc51675f21709318c" },
+  "friendly-snippets": { "branch": "main", "commit": "53d3df271d031c405255e99410628c26a8f0d2b0" },
+  "gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "0dca9284bce128e60da18693d92999968d6cb523" },
+  "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
+  "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "56e435e09f8729af2d41973e81a0db440f8fe9c9" },
+  "mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
+  "mini.ai": { "branch": "main", "commit": "f7787cff9cc42004f722ca1e64e6af4e64e34177" },
+  "mini.bufremove": { "branch": "main", "commit": "020243bfed8c8b941f2c20626faf3ea39c0c0e1b" },
+  "mini.comment": { "branch": "main", "commit": "67f00d3ebbeae15e84584d971d0c32aad4f4f3a4" },
+  "mini.indentscope": { "branch": "main", "commit": "5a8369475cd7cd6f207a4d288406d03b0fc48bdb" },
+  "mini.surround": { "branch": "main", "commit": "7bf8915ba15d7a4f3c2afe7868d3c15a858d73f1" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" },
+  "neoconf.nvim": { "branch": "main", "commit": "64437787dba70fce50dad7bfbb97d184c5bc340f" },
+  "neodev.nvim": { "branch": "main", "commit": "029899ea32d3dc8ed8c910ceca2ee5d16e566c11" },
   "noice.nvim": { "branch": "main", "commit": "92433164e2f7118d4122c7674c3834d9511722ba" },
-  "nui.nvim": { "branch": "main", "commit": "c0c8e347ceac53030f5c1ece1c5a5b6a17a25b32" },
-  "nvim-cmp": { "branch": "main", "commit": "51260c02a8ffded8e16162dcf41a23ec90cfba62" },
-  "nvim-lint": { "branch": "master", "commit": "962a76877a4479a535b935bd7ef35ad41ba308b2" },
-  "nvim-lspconfig": { "branch": "master", "commit": "d0467b9574b48429debf83f8248d8cee79562586" },
-  "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
-  "nvim-noirbuddy": { "branch": "master", "commit": "67f945acee6da0ea4c11575c72ce8e930090ea95" },
-  "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
-  "nvim-spectre": { "branch": "master", "commit": "696cff781a4a7ecc91549736835e2acbd00fe859" },
-  "nvim-treesitter": { "branch": "master", "commit": "198015cca117d41e7d1fd404e0cdf3235084749b" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "2806d83e3965017382ce08792ee527e708fa1bd4" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "e69a504baf2951d52e1f1fbb05145d43f236cbf1" },
-  "nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "92e688f013c69f90c9bbd596019ec10235bc51de" },
-  "nvim-web-devicons": { "branch": "master", "commit": "5de460ca7595806044eced31e3c36c159a493857" },
+  "nui.nvim": { "branch": "main", "commit": "c9b4de623d19a85b353ff70d2ae9c77143abe69c" },
+  "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" },
+  "nvim-lint": { "branch": "master", "commit": "32f98300881f38f4e022391f240188fec42f74db" },
+  "nvim-lspconfig": { "branch": "master", "commit": "9099871a7c7e1c16122e00d70208a2cd02078d80" },
+  "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
+  "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
+  "nvim-notify": { "branch": "master", "commit": "27a6649ba6b22828ccc67c913f95a5407a2d8bec" },
+  "nvim-spectre": { "branch": "master", "commit": "d8906855f1949ac97b1e77aaf8d3fe12ed158ddc" },
+  "nvim-treesitter": { "branch": "master", "commit": "27f68c0b6a87cbad900b3d016425450af8268026" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "652ec514d6ba8bc4a3c2de76c855fe668e2c7196" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "0e2d5bd4cbe75849a013901555d436a48c6680cb" },
+  "nvim-ts-autotag": { "branch": "main", "commit": "8515e48a277a2f4947d91004d9aa92c29fdc5e18" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "1277b4a1f451b0f18c0790e1a7f12e1e5fdebfee" },
+  "nvim-web-devicons": { "branch": "master", "commit": "43aa2ddf476012a2155f5f969ee55ab17174da7a" },
   "persistence.nvim": { "branch": "main", "commit": "ad538bfd5336f1335cdb6fd4e0b0eebfa6e12f32" },
-  "plenary.nvim": { "branch": "master", "commit": "50012918b2fc8357b87cff2a7f7f0446e47da174" },
+  "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
   "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
-  "telescope.nvim": { "branch": "master", "commit": "4522d7e3ea75ffddabdc39957168a8a7060b5df0" },
+  "telescope.nvim": { "branch": "master", "commit": "ae6708a90b89a686f85b51288f488f4186dff2d4" },
   "todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" },
   "tokyonight.nvim": { "branch": "main", "commit": "f247ee700b569ed43f39320413a13ba9b0aef0db" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
@@ -56,5 +56,5 @@
   "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
   "yaml-companion.nvim": { "branch": "main", "commit": "4de1e1546abc461f62dee02fcac6a02debd6eb9e" },
-  "yanky.nvim": { "branch": "main", "commit": "ad6484873a88c1012c67eda8e2fba7bafef4f135" }
+  "yanky.nvim": { "branch": "main", "commit": "6bb9ffd3cad4c9876bda54e19d0659de28a4f84f" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 18c2447..608968e 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -14,3 +14,10 @@ vim.o.autochdir = true
 vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
 vim.o.scrolloff = 7
 vim.o.updatetime = 100
+
+-- additional filetypes
+vim.filetype.add({
+	extension = {
+		templ = "templ",
+	},
+})

From 045541c72988d898d29f1616002fcf5b43fda24a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 27 Dec 2023 12:38:18 +0100
Subject: [PATCH 157/656] buildkitd: use unprivileged containerd

---
 .config/buildkit/buildkitd.toml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/buildkit/buildkitd.toml b/.config/buildkit/buildkitd.toml
index 728ed62..b273b2b 100644
--- a/.config/buildkit/buildkitd.toml
+++ b/.config/buildkit/buildkitd.toml
@@ -4,3 +4,4 @@
 [worker.containerd]
   enabled = true
   rootless = true
+  address = "/run/user/1000/containerd/containerd.sock"

From e73da671abc55a08b4c5df04d8b9e4e975bf8ccd Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 27 Dec 2023 12:38:40 +0100
Subject: [PATCH 158/656] zsh: set GOPROXY

---
 .zshrc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.zshrc b/.zshrc
index 215a5e6..9e79464 100644
--- a/.zshrc
+++ b/.zshrc
@@ -321,6 +321,7 @@ if [ -f '/home/dln/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/dln/goo
 
 ## Golang
 export PATH=$HOME/go/bin:$PATH
+export GOPROXY=https://athens.aarn.shelman.io
 
 ## Ansible
 export ANSIBLE_NOCOWS=1

From 7540f0540d08ebb254e60f1492aadf7688ab714b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 27 Dec 2023 12:39:05 +0100
Subject: [PATCH 159/656] zsh: abbr updates

---
 .config/zsh-abbr/user-abbreviations | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations
index 8ad9b83..b0d3a00 100644
--- a/.config/zsh-abbr/user-abbreviations
+++ b/.config/zsh-abbr/user-abbreviations
@@ -2,11 +2,12 @@ abbr "b"="git branch -va"
 abbr "c"="git commit"
 abbr "d"="git diff --stat -p -C --color-words"
 abbr "g"="git"
+abbr "gsw"="git gerrit-switch"
 abbr "k"="kubectl"
 abbr "new"="git checkout --detach main"
 abbr "p"="git push"
 abbr "rec"="git record"
-abbr "s"="git status"
+abbr "s"="git st"
 abbr "sl"="git branchless smartlog"
 abbr "sw"="git branchless switch --interactive"
 abbr "sy"="git sync --pull"

From ed3b8eeae76bbd3082ae1b5ce846e10d112ec4f9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 28 Dec 2023 11:27:46 +0100
Subject: [PATCH 160/656] git: fancy git-st status script

---
 bin/git-st | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/bin/git-st b/bin/git-st
index a982342..764d628 100755
--- a/bin/git-st
+++ b/bin/git-st
@@ -1,7 +1,10 @@
 #!/usr/bin/env bash
 
-git branchless smartlog || true
-printf '\n'
+if git branchless query HEAD >/dev/null 2>&1; then
+	printf '\n ● \e[1m'
+	git branchless query HEAD
+	printf '\e[2;38;5;242m%*s\e[0m\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' '-'
+fi
 
 awk -vOFS='' '
     NR==FNR {
@@ -27,5 +30,7 @@ awk -vOFS='' '
         }
     }
 ' \
-    <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //')\
-    <(git -c color.status=always status -sb)
+	<(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') \
+	<(git -c color.status=always status -sb)
+
+printf '\n'

From 4f0c383f9f36176559bd1fe25a15a7a0b2bdc497 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 2 Jan 2024 23:33:20 +0100
Subject: [PATCH 161/656] nvim: emoji cmp

---
 .config/nvim/lazy-lock.json         | 37 +++++++++++++++++------------
 .config/nvim/lua/config/lazy.lua    |  1 +
 .config/nvim/lua/plugins/coding.lua |  8 +++++++
 3 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 4424d56..f320ffa 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,26 +1,28 @@
 {
   "LazyVim": { "branch": "main", "commit": "879e29504d43e9f178d967ecc34d482f902e5a91" },
-  "LuaSnip": { "branch": "master", "commit": "07f5d974203a5d957e7b464020261a657f59556d" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "771c9517bf36f431361cbaac1ddc8499c7e5c5d3" },
+  "LuaSnip": { "branch": "master", "commit": "8ae1dedd988eb56441b7858bd1e8554dfadaa46d" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "90149d11708d38037e340bf7a668e1a79217680d" },
   "bufferline.nvim": { "branch": "main", "commit": "e48ce1805697e4bb97bc171c081e849a65859244" },
-  "catppuccin": { "branch": "main", "commit": "4fbab1f01488718c3d54034a473d0346346b90e3" },
+  "catppuccin": { "branch": "main", "commit": "5e36ca599f4aa41bdd87fbf2c5aae4397ac55074" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
+  "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "86393c143b8d1b7bdae1449fd25de315fd967fd7" },
+  "conform.nvim": { "branch": "master", "commit": "c4b2efb8aee4af0ef179a9b49ba401de3c4ef5d2" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "858bbfa6fa81c88fb1f64107d7981f1658619e0a" },
   "dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" },
   "dressing.nvim": { "branch": "master", "commit": "94b0d24483d56f3777ee0c8dc51675f21709318c" },
   "friendly-snippets": { "branch": "main", "commit": "53d3df271d031c405255e99410628c26a8f0d2b0" },
   "gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "0dca9284bce128e60da18693d92999968d6cb523" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "3c8a185da4b8ab7aef487219f5e001b11d4b6aaf" },
   "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
   "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "56e435e09f8729af2d41973e81a0db440f8fe9c9" },
-  "mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
+  "mason-nvim-dap.nvim": { "branch": "main", "commit": "9e82ded0515186edd4f69e4ce6b1a5f1b55b47e9" },
+  "mason.nvim": { "branch": "main", "commit": "a09da6ac634926a299dd439da08bdb547a8ca011" },
   "mini.ai": { "branch": "main", "commit": "f7787cff9cc42004f722ca1e64e6af4e64e34177" },
   "mini.bufremove": { "branch": "main", "commit": "020243bfed8c8b941f2c20626faf3ea39c0c0e1b" },
   "mini.comment": { "branch": "main", "commit": "67f00d3ebbeae15e84584d971d0c32aad4f4f3a4" },
@@ -28,27 +30,32 @@
   "mini.surround": { "branch": "main", "commit": "7bf8915ba15d7a4f3c2afe7868d3c15a858d73f1" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" },
   "neoconf.nvim": { "branch": "main", "commit": "64437787dba70fce50dad7bfbb97d184c5bc340f" },
-  "neodev.nvim": { "branch": "main", "commit": "029899ea32d3dc8ed8c910ceca2ee5d16e566c11" },
+  "neodev.nvim": { "branch": "main", "commit": "2a8630847dbb93455936156c0689678e4eaee319" },
   "noice.nvim": { "branch": "main", "commit": "92433164e2f7118d4122c7674c3834d9511722ba" },
-  "nui.nvim": { "branch": "main", "commit": "c9b4de623d19a85b353ff70d2ae9c77143abe69c" },
+  "none-ls.nvim": { "branch": "main", "commit": "5c72382d14ea9debccf52dd06adff086e98f6e22" },
+  "nui.nvim": { "branch": "main", "commit": "80445d015d2b5f9af0d9e8bce63d303bc86eda8a" },
   "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" },
-  "nvim-lint": { "branch": "master", "commit": "32f98300881f38f4e022391f240188fec42f74db" },
-  "nvim-lspconfig": { "branch": "master", "commit": "9099871a7c7e1c16122e00d70208a2cd02078d80" },
+  "nvim-dap": { "branch": "master", "commit": "f0dca670fa059eb89dda8869a6310c804241345c" },
+  "nvim-dap-go": { "branch": "main", "commit": "a5cc8dcad43f0732585d4793deb02a25c4afb766" },
+  "nvim-dap-ui": { "branch": "master", "commit": "34160a7ce6072ef332f350ae1d4a6a501daf0159" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "d4542ac257d3c7ee4131350db6179ae6340ce40b" },
+  "nvim-lint": { "branch": "master", "commit": "4dbc7ec60b33b656f7c54bb945671a55b18699f2" },
+  "nvim-lspconfig": { "branch": "master", "commit": "ce0e625df61be77abe1340fbc9afe9ad39b31dd8" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
-  "nvim-notify": { "branch": "master", "commit": "27a6649ba6b22828ccc67c913f95a5407a2d8bec" },
+  "nvim-notify": { "branch": "master", "commit": "ebcdd8219e2a2cbc0a4bef68002f6867f1fde269" },
   "nvim-spectre": { "branch": "master", "commit": "d8906855f1949ac97b1e77aaf8d3fe12ed158ddc" },
-  "nvim-treesitter": { "branch": "master", "commit": "27f68c0b6a87cbad900b3d016425450af8268026" },
+  "nvim-treesitter": { "branch": "master", "commit": "65ef62092ef997d2ecf68ede01a0afbda17808c3" },
   "nvim-treesitter-context": { "branch": "master", "commit": "652ec514d6ba8bc4a3c2de76c855fe668e2c7196" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "0e2d5bd4cbe75849a013901555d436a48c6680cb" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "85b9d0cbd4ff901abcda862b50dbb34e0901848b" },
   "nvim-ts-autotag": { "branch": "main", "commit": "8515e48a277a2f4947d91004d9aa92c29fdc5e18" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "1277b4a1f451b0f18c0790e1a7f12e1e5fdebfee" },
-  "nvim-web-devicons": { "branch": "master", "commit": "43aa2ddf476012a2155f5f969ee55ab17174da7a" },
+  "nvim-web-devicons": { "branch": "master", "commit": "cff25ce621e6d15fae0b0bfe38c00be50ce38468" },
   "persistence.nvim": { "branch": "main", "commit": "ad538bfd5336f1335cdb6fd4e0b0eebfa6e12f32" },
   "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
   "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
-  "telescope.nvim": { "branch": "master", "commit": "ae6708a90b89a686f85b51288f488f4186dff2d4" },
+  "telescope.nvim": { "branch": "master", "commit": "3466159b0fcc1876483f6f53587562628664d850" },
   "todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" },
   "tokyonight.nvim": { "branch": "main", "commit": "f247ee700b569ed43f39320413a13ba9b0aef0db" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 4e1c2e3..8478c8c 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -18,6 +18,7 @@ require("lazy").setup({
 		{ import = "lazyvim.plugins.extras.lang.json" },
 		{ import = "lazyvim.plugins.extras.lang.typescript" },
 		{ import = "lazyvim.plugins.extras.lang.yaml" },
+		{ import = "lazyvim.plugins.extras.lsp.none-ls" },
 		-- import/override with your plugins
 		{ import = "plugins" },
 	},
diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
index 563d752..f5b7e2e 100644
--- a/.config/nvim/lua/plugins/coding.lua
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -3,4 +3,12 @@ return {
 		"echasnovski/mini.pairs",
 		enabled = false,
 	},
+
+	{
+		"nvim-cmp",
+		dependencies = { "hrsh7th/cmp-emoji" },
+		opts = function(_, opts)
+			table.insert(opts.sources, { name = "emoji" })
+		end,
+	},
 }

From f88aa21285c60c48e1743778bfa7342e71992bb8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 10 Jan 2024 22:12:00 +0100
Subject: [PATCH 162/656] nvim: use cue fmt for cue files

---
 .config/nvim/lazy-lock.json             | 42 ++++++++++++-------------
 .config/nvim/lua/plugins/formatting.lua |  1 +
 2 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index f320ffa..2439d2b 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,7 +1,7 @@
 {
   "LazyVim": { "branch": "main", "commit": "879e29504d43e9f178d967ecc34d482f902e5a91" },
-  "LuaSnip": { "branch": "master", "commit": "8ae1dedd988eb56441b7858bd1e8554dfadaa46d" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "90149d11708d38037e340bf7a668e1a79217680d" },
+  "LuaSnip": { "branch": "master", "commit": "82108e7e31cc6fc223cc5df5cae6d89f70bb199f" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "fcb1522fefd0f9029b7dc71aa2664d2d0ead0fb3" },
   "bufferline.nvim": { "branch": "main", "commit": "e48ce1805697e4bb97bc171c081e849a65859244" },
   "catppuccin": { "branch": "main", "commit": "5e36ca599f4aa41bdd87fbf2c5aae4397ac55074" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
@@ -10,19 +10,19 @@
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "c4b2efb8aee4af0ef179a9b49ba401de3c4ef5d2" },
+  "conform.nvim": { "branch": "master", "commit": "75e7c5c7eb5fbd53f8b12dc420b31ec70770b231" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
-  "copilot.lua": { "branch": "master", "commit": "858bbfa6fa81c88fb1f64107d7981f1658619e0a" },
+  "copilot.lua": { "branch": "master", "commit": "b03617a6dc4bc88b65ab5deac1631da9a9c2dcaf" },
   "dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" },
   "dressing.nvim": { "branch": "master", "commit": "94b0d24483d56f3777ee0c8dc51675f21709318c" },
-  "friendly-snippets": { "branch": "main", "commit": "53d3df271d031c405255e99410628c26a8f0d2b0" },
-  "gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" },
+  "friendly-snippets": { "branch": "main", "commit": "69a2c1675b66e002799f5eef803b87a12f593049" },
+  "gitsigns.nvim": { "branch": "main", "commit": "3e6e91b09f0468c32d3b96dcacf4b947f037ce25" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3c8a185da4b8ab7aef487219f5e001b11d4b6aaf" },
   "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
   "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "56e435e09f8729af2d41973e81a0db440f8fe9c9" },
-  "mason-nvim-dap.nvim": { "branch": "main", "commit": "9e82ded0515186edd4f69e4ce6b1a5f1b55b47e9" },
-  "mason.nvim": { "branch": "main", "commit": "a09da6ac634926a299dd439da08bdb547a8ca011" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "0989bdf4fdf7b5aa4c74131d7ffccc3f399ac788" },
+  "mason-nvim-dap.nvim": { "branch": "main", "commit": "3614a39aae98ccd34124b072939d6283853b3dd2" },
+  "mason.nvim": { "branch": "main", "commit": "e110bc3be1a7309617cecd77bfe4bf86ba1b8134" },
   "mini.ai": { "branch": "main", "commit": "f7787cff9cc42004f722ca1e64e6af4e64e34177" },
   "mini.bufremove": { "branch": "main", "commit": "020243bfed8c8b941f2c20626faf3ea39c0c0e1b" },
   "mini.comment": { "branch": "main", "commit": "67f00d3ebbeae15e84584d971d0c32aad4f4f3a4" },
@@ -30,32 +30,32 @@
   "mini.surround": { "branch": "main", "commit": "7bf8915ba15d7a4f3c2afe7868d3c15a858d73f1" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" },
   "neoconf.nvim": { "branch": "main", "commit": "64437787dba70fce50dad7bfbb97d184c5bc340f" },
-  "neodev.nvim": { "branch": "main", "commit": "2a8630847dbb93455936156c0689678e4eaee319" },
+  "neodev.nvim": { "branch": "main", "commit": "be8d4d4cab6c13c6a572269c9d6a63774baba9a0" },
   "noice.nvim": { "branch": "main", "commit": "92433164e2f7118d4122c7674c3834d9511722ba" },
-  "none-ls.nvim": { "branch": "main", "commit": "5c72382d14ea9debccf52dd06adff086e98f6e22" },
-  "nui.nvim": { "branch": "main", "commit": "80445d015d2b5f9af0d9e8bce63d303bc86eda8a" },
+  "none-ls.nvim": { "branch": "main", "commit": "fbdcbf8e152529af846b3a333f039751829b84c2" },
+  "nui.nvim": { "branch": "main", "commit": "35da9ca1de0fc4dda96c2e214d93d363c145f418" },
   "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" },
-  "nvim-dap": { "branch": "master", "commit": "f0dca670fa059eb89dda8869a6310c804241345c" },
+  "nvim-dap": { "branch": "master", "commit": "aad46274f09ba29933e4cef2257cdda5ec19cf7a" },
   "nvim-dap-go": { "branch": "main", "commit": "a5cc8dcad43f0732585d4793deb02a25c4afb766" },
-  "nvim-dap-ui": { "branch": "master", "commit": "34160a7ce6072ef332f350ae1d4a6a501daf0159" },
+  "nvim-dap-ui": { "branch": "master", "commit": "7e5e16427aaf814dc2d58e1b219def9ef2fa2435" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "d4542ac257d3c7ee4131350db6179ae6340ce40b" },
-  "nvim-lint": { "branch": "master", "commit": "4dbc7ec60b33b656f7c54bb945671a55b18699f2" },
-  "nvim-lspconfig": { "branch": "master", "commit": "ce0e625df61be77abe1340fbc9afe9ad39b31dd8" },
+  "nvim-lint": { "branch": "master", "commit": "8df53b5dde8ea80f0a039775777eae6648a10229" },
+  "nvim-lspconfig": { "branch": "master", "commit": "796394fd19fb878e8dbc4fd1e9c9c186ed07a5f4" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
-  "nvim-notify": { "branch": "master", "commit": "ebcdd8219e2a2cbc0a4bef68002f6867f1fde269" },
+  "nvim-notify": { "branch": "master", "commit": "1576123bff3bed67bc673a3076e591abfe5d8ca9" },
   "nvim-spectre": { "branch": "master", "commit": "d8906855f1949ac97b1e77aaf8d3fe12ed158ddc" },
-  "nvim-treesitter": { "branch": "master", "commit": "65ef62092ef997d2ecf68ede01a0afbda17808c3" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "652ec514d6ba8bc4a3c2de76c855fe668e2c7196" },
+  "nvim-treesitter": { "branch": "master", "commit": "8cd2b230174efbf7b5d9f49fe2f90bda6b5eb16e" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "400a99ad43ac78af1148061da3491cba2637ad29" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "85b9d0cbd4ff901abcda862b50dbb34e0901848b" },
   "nvim-ts-autotag": { "branch": "main", "commit": "8515e48a277a2f4947d91004d9aa92c29fdc5e18" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "1277b4a1f451b0f18c0790e1a7f12e1e5fdebfee" },
-  "nvim-web-devicons": { "branch": "master", "commit": "cff25ce621e6d15fae0b0bfe38c00be50ce38468" },
+  "nvim-web-devicons": { "branch": "master", "commit": "db0c864375c198cacc171ff373e76bfce2a85045" },
   "persistence.nvim": { "branch": "main", "commit": "ad538bfd5336f1335cdb6fd4e0b0eebfa6e12f32" },
   "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
   "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
-  "telescope.nvim": { "branch": "master", "commit": "3466159b0fcc1876483f6f53587562628664d850" },
+  "telescope.nvim": { "branch": "master", "commit": "4367e05c06d19f28c514e1498bcd9410f4bc65b2" },
   "todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" },
   "tokyonight.nvim": { "branch": "main", "commit": "f247ee700b569ed43f39320413a13ba9b0aef0db" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
diff --git a/.config/nvim/lua/plugins/formatting.lua b/.config/nvim/lua/plugins/formatting.lua
index 07e34da..1cd976c 100644
--- a/.config/nvim/lua/plugins/formatting.lua
+++ b/.config/nvim/lua/plugins/formatting.lua
@@ -3,6 +3,7 @@ return {
 		"stevearc/conform.nvim",
 		opts = {
 			formatters_by_ft = {
+				["cue"] = { { "cue_fmt" } },
 				["html"] = { { "prettierd", "prettier" } },
 				["sass"] = { { "prettierd", "prettier" } },
 				["proto"] = { { "buf" } },

From 92c475e20fdc4f5dcf45ed77e061f40367213fb8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 25 Jan 2024 11:17:56 +0100
Subject: [PATCH 163/656] k9s: add <Shift-l> get all pod logs plugin

---
 .config/k9s/plugins.yaml | 12 ++++++++++++
 1 file changed, 12 insertions(+)
 create mode 100644 .config/k9s/plugins.yaml

diff --git a/.config/k9s/plugins.yaml b/.config/k9s/plugins.yaml
new file mode 100644
index 0000000..ef8a5bf
--- /dev/null
+++ b/.config/k9s/plugins.yaml
@@ -0,0 +1,12 @@
+plugins:
+  raw-logs-follow:
+    shortCut: Shift-L
+    description: kubectl logs
+    scopes:
+      - po
+    command: bash
+    background: false
+    args:
+      - -c
+      - |
+        kubectl logs $NAME -n $NAMESPACE --context $CONTEXT | bat --wrap=never --pager="less" --force-colorization

From affaebbc1397cc7829cf80b62f810da876590265 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 25 Jan 2024 11:25:37 +0100
Subject: [PATCH 164/656] k9s: add <Shift-k> ktoolbox plugin

---
 .config/k9s/plugins.yaml | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/.config/k9s/plugins.yaml b/.config/k9s/plugins.yaml
index ef8a5bf..59b9f8c 100644
--- a/.config/k9s/plugins.yaml
+++ b/.config/k9s/plugins.yaml
@@ -10,3 +10,13 @@ plugins:
       - -c
       - |
         kubectl logs $NAME -n $NAMESPACE --context $CONTEXT | bat --wrap=never --pager="less" --force-colorization
+  toolbox:
+    shortCut: Shift-K
+    description: ktoolbox in current namespace
+    scopes:
+      - all
+    command: ktoolbox
+    background: false
+    args:
+      - -n
+      - $NAMESPACE

From 09b2992cce682713035c506629b37573204271e0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 8 Feb 2024 10:23:41 +0100
Subject: [PATCH 165/656] nvim: updated yamlls schemas for k8s + friends

---
 .config/nvim/lua/plugins/lsp.lua  | 35 +++++++++++++++++++++++++++++++
 .config/nvim/lua/plugins/yaml.lua | 25 ----------------------
 2 files changed, 35 insertions(+), 25 deletions(-)
 create mode 100644 .config/nvim/lua/plugins/lsp.lua
 delete mode 100644 .config/nvim/lua/plugins/yaml.lua

diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
new file mode 100644
index 0000000..a95915f
--- /dev/null
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -0,0 +1,35 @@
+return {
+	{
+		"neovim/nvim-lspconfig",
+		opts = {
+			inlay_hints = { enabled = true },
+			capabilities = {
+				workspace = {
+					didChangeWatchedFiles = {
+						dynamicRegistration = false,
+					},
+				},
+			},
+			---@type lspconfig.options
+			servers = {
+				yamlls = {
+					settings = {
+						yaml = {
+							schemas = {
+								kubernetes = "*.yaml",
+								["http://json.schemastore.org/github-workflow"] = ".github/workflows/*",
+								["http://json.schemastore.org/github-action"] = ".github/action.{yml,yaml}",
+								["http://json.schemastore.org/ansible-stable-2.9"] = "roles/tasks/*.{yml,yaml}",
+								["http://json.schemastore.org/kustomization"] = "kustomization.{yml,yaml}",
+								["http://json.schemastore.org/chart"] = "Chart.{yml,yaml}",
+								["https://json.schemastore.org/dependabot-v2"] = ".github/dependabot.{yml,yaml}",
+								["https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json"] = "*api*.{yml,yaml}",
+								["https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.29.1/all.json"] = "/*.yaml",
+							},
+						},
+					},
+				},
+			},
+		},
+	},
+}
diff --git a/.config/nvim/lua/plugins/yaml.lua b/.config/nvim/lua/plugins/yaml.lua
deleted file mode 100644
index d14f2a4..0000000
--- a/.config/nvim/lua/plugins/yaml.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-return {
-	{
-		"someone-stole-my-name/yaml-companion.nvim",
-		dependencies = {
-			{ "neovim/nvim-lspconfig" },
-			{ "nvim-lua/plenary.nvim" },
-			{ "nvim-telescope/telescope.nvim" },
-		},
-		config = function()
-			require("yaml-companion").setup()
-			require("telescope").load_extension("yaml_schema")
-			local cfg = require("yaml-companion").setup({
-				-- Add any options here, or leave empty to use the default settings
-				-- Additional schemas available in Telescope picker
-				schemas = {
-					{
-						name = "Kubernetes 1.25.9",
-						uri = "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.25.9-standalone-strict/all.json",
-					},
-				},
-			})
-			require("lspconfig")["yamlls"].setup(cfg)
-		end,
-	},
-}

From 994ee848f6b7d9cda314a4bf8b83680f99c7c661 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 8 Feb 2024 10:23:55 +0100
Subject: [PATCH 166/656] nvim: osc7 goodness

---
 .config/nvim/lua/config/options.lua | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 608968e..3e0ab0f 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -21,3 +21,10 @@ vim.filetype.add({
 		templ = "templ",
 	},
 })
+
+-- AutoCommand OSC7 workaround for tmux
+-- see https://github.com/neovim/neovim/issues/21771
+vim.api.nvim_create_autocmd("dirchanged", {
+	pattern = "*",
+	command = 'call chansend(v:stderr, printf("\\033]7;%s\\033", v:event.cwd))',
+})

From 2c6762d8e61b2b0c2aefac7f2f852606b846c7c0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 12 Feb 2024 15:25:27 +0100
Subject: [PATCH 167/656] nvim: add comment string for CUE files

---
 .config/nvim/lua/config/autocmds.lua | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/.config/nvim/lua/config/autocmds.lua b/.config/nvim/lua/config/autocmds.lua
index 27e9e06..b5f7062 100644
--- a/.config/nvim/lua/config/autocmds.lua
+++ b/.config/nvim/lua/config/autocmds.lua
@@ -1,3 +1,16 @@
 -- Autocmds are automatically loaded on the VeryLazy event
 -- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
 -- Add any additional autocmds here
+
+local function augroup(name)
+	return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true })
+end
+
+-- Set comment string for CUE files
+vim.api.nvim_create_autocmd("FileType", {
+	group = augroup("cue"),
+	pattern = { "cue" },
+	callback = function(ev)
+		vim.bo[ev.buf].commentstring = "// %s"
+	end,
+})

From 64d50a238b102850179cad785663bea4a71a8297 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 14 Feb 2024 21:37:25 +0100
Subject: [PATCH 168/656] zsh: Give atuin a whirl

---
 .config/atuin/config.toml | 188 ++++++++++++++++++++++++++++++++++++++
 .zsh/history.zsh          |  38 ++++++++
 .zshrc                    |  13 +--
 3 files changed, 233 insertions(+), 6 deletions(-)
 create mode 100644 .config/atuin/config.toml
 create mode 100644 .zsh/history.zsh

diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml
new file mode 100644
index 0000000..7eacfda
--- /dev/null
+++ b/.config/atuin/config.toml
@@ -0,0 +1,188 @@
+## where to store your database, default is your system data directory
+## linux/mac: ~/.local/share/atuin/history.db
+## windows: %USERPROFILE%/.local/share/atuin/history.db
+# db_path = "~/.history.db"
+
+## where to store your encryption key, default is your system data directory
+## linux/mac: ~/.local/share/atuin/key
+## windows: %USERPROFILE%/.local/share/atuin/key
+# key_path = "~/.key"
+
+## where to store your auth session token, default is your system data directory
+## linux/mac: ~/.local/share/atuin/session
+## windows: %USERPROFILE%/.local/share/atuin/session
+# session_path = "~/.session"
+
+## date format used, either "us" or "uk"
+# dialect = "us"
+
+## default timezone to use when displaying time
+## either "l", "local" to use the system's current local timezone, or an offset
+## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
+## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
+# timezone = "local"
+
+## enable or disable automatic sync
+# auto_sync = true
+
+## enable or disable automatic update checks
+# update_check = true
+
+## address of the sync server
+# sync_address = "https://api.atuin.sh"
+
+## how often to sync history. note that this is only triggered when a command
+## is ran, so sync intervals may well be longer
+## set it to 0 to sync after every command
+# sync_frequency = "10m"
+
+## which search mode to use
+## possible values: prefix, fulltext, fuzzy, skim
+# search_mode = "fuzzy"
+
+## which filter mode to use
+## possible values: global, host, session, directory
+# filter_mode = "global"
+
+## With workspace filtering enabled, Atuin will filter for commands executed
+## in any directory within a git repository tree (default: false)
+# workspaces = false
+# workspaces = true
+
+## which filter mode to use when atuin is invoked from a shell up-key binding
+## the accepted values are identical to those of "filter_mode"
+## leave unspecified to use same mode set in "filter_mode"
+# filter_mode_shell_up_key_binding = "global"
+
+## which search mode to use when atuin is invoked from a shell up-key binding
+## the accepted values are identical to those of "search_mode"
+## leave unspecified to use same mode set in "search_mode"
+# search_mode_shell_up_key_binding = "fuzzy"
+
+## which style to use
+## possible values: auto, full, compact
+# style = "auto"
+style = "compact"
+
+## the maximum number of lines the interface should take up
+## set it to 0 to always go full screen
+# inline_height = 0
+
+## Invert the UI - put the search bar at the top , Default to `false`
+# invert = false
+
+## enable or disable showing a preview of the selected command
+## useful when the command is longer than the terminal width and is cut off
+# show_preview = false
+
+## what to do when the escape key is pressed when searching
+## possible values: return-original, return-query
+# exit_mode = "return-original"
+
+## possible values: emacs, subl
+# word_jump_mode = "emacs"
+
+## characters that count as a part of a word
+# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+
+## number of context lines to show when scrolling by pages
+# scroll_context_lines = 1
+
+## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
+## alt-0 .. alt-9
+# ctrl_n_shortcuts = false
+
+ctrl_n_shortcuts = true
+
+## default history list format - can also be specified with the --format arg
+# history_format = "{time}\t{command}\t{duration}"
+
+## prevent commands matching any of these regexes from being written to history.
+## Note that these regular expressions are unanchored, i.e. if they don't start
+## with ^ or end with $, they'll match anywhere in the command.
+## For details on the supported regular expression syntax, see
+## https://docs.rs/regex/latest/regex/#syntax
+# history_filter = [
+#   "^secret-cmd",
+#   "^innocuous-cmd .*--secret=.+"
+# ]
+
+history_filter = [
+  "VAULT_TOKEN=",
+]
+
+## prevent commands run with cwd matching any of these regexes from being written
+## to history. Note that these regular expressions are unanchored, i.e. if they don't
+## start with ^ or end with $, they'll match anywhere in CWD.
+## For details on the supported regular expression syntax, see
+## https://docs.rs/regex/latest/regex/#syntax
+# cwd_filter = [
+#   "^/very/secret/area"
+# ]
+
+cwd_filter = [
+  "^~/media",
+  "^/home/dln/media"
+]
+
+## Configure the maximum height of the preview to show.
+## Useful when you have long scripts in your history that you want to distinguish
+## by more than the first few lines.
+# max_preview_height = 4
+
+## Configure whether or not to show the help row, which includes the current Atuin
+## version (and whether an update is available), a keymap hint, and the total
+## amount of commands in your history.
+# show_help = true
+show_help = false
+
+## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
+## 1. AWS key id
+## 2. Github pat (old and new)
+## 3. Slack oauth tokens (bot, user)
+## 4. Slack webhooks
+## 5. Stripe live/test keys
+# secrets_filter = true
+
+## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
+# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
+enter_accept = true
+
+
+## Defaults to "emacs".  This specifies the keymap on the startup of `atuin
+## search`.  If this is set to "auto", the startup keymap mode in the Atuin
+## search is automatically selected based on the shell's keymap where the
+## keybinding is defined.  If this is set to "emacs", "vim-insert", or
+## "vim-normal", the startup keymap mode in the Atuin search is forced to be
+## the specified one.
+# keymap_mode = "auto"
+
+## Cursor style in each keymap mode.  If specified, the cursor style is changed
+## in entering the cursor shape.  Available values are "default" and
+## "{blink,steady}-{block,underilne,bar}".
+# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
+
+# network_connect_timeout = 5
+# network_timeout = 5
+
+## Timeout (in seconds) for acquiring a local database connection (sqlite)
+# local_timeout = 5
+
+## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc. 
+## Alternatively, set env NO_MOTION=true
+# prefers_reduced_motion = false
+
+#[stats]
+# Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
+#common_subcommands = [
+#  "cargo",
+#  "go",
+#  "git",
+#  "npm",
+#  "yarn",
+#  "pnpm",
+#  "kubectl",
+#]
+#
+# Set commands that should be totally stripped and ignored from stats
+#common_prefix = ["sudo"]
diff --git a/.zsh/history.zsh b/.zsh/history.zsh
new file mode 100644
index 0000000..c46bf6f
--- /dev/null
+++ b/.zsh/history.zsh
@@ -0,0 +1,38 @@
+typeset -g MY_HISTORY_SEARCH_OFFSET=0
+typeset -g MY_HISTORY_SEARCH_PREFIX=""
+
+function my-history-prefix-search() {
+    if [[ $LASTWIDGET != my-history-prefix-search-* ]]; then
+        # start state machine
+        MY_HISTORY_SEARCH_OFFSET=-1
+        MY_HISTORY_SEARCH_PREFIX="$LBUFFER"
+    fi
+    local offset_delta=$1
+    local offset=$((MY_HISTORY_SEARCH_OFFSET + $offset_delta))
+
+    (($offset < 0)) && return
+    local result=$(
+        atuin search \
+            --search-mode prefix \
+            --limit 1 \
+            --offset $offset \
+            --format '{command}' \
+            "$MY_HISTORY_SEARCH_PREFIX"
+    )
+    if [[ -n "$result" ]]; then
+        BUFFER=$result
+        CURSOR=${#BUFFER}
+        MY_HISTORY_SEARCH_OFFSET=$offset
+    fi
+}
+
+function my-history-prefix-search-backward-widget() {
+    my-history-prefix-search +1
+}
+
+function my-history-prefix-search-forward-widget() {
+    my-history-prefix-search -1
+}
+
+zle -N my-history-prefix-search-backward-widget
+zle -N my-history-prefix-search-forward-widget
diff --git a/.zshrc b/.zshrc
index 9e79464..75c2071 100644
--- a/.zshrc
+++ b/.zshrc
@@ -15,8 +15,6 @@ zi load zsh-users/zsh-completions
 zi ice wait lucid
 zi load zdharma-continuum/fast-syntax-highlighting
 zi ice wait lucid
-zi load zsh-users/zsh-history-substring-search
-zi ice wait lucid
 zi load nix-community/nix-zsh-completions
 zi ice wait lucid
 zi load olets/zsh-abbr
@@ -98,12 +96,12 @@ _cwd_gitroot() {
 }
 zle -N _cwd_gitroot
 
+source $HOME/.zsh/history.zsh
+
 ## Keybindings
 bindkey -e
-bindkey '^[[A' history-beginning-search-backward
-bindkey '^[[B' history-beginning-search-forward
-bindkey '^P' history-beginning-search-backward
-bindkey '^N' history-beginning-search-forward
+bindkey '^P' my-history-prefix-search-backward-widget
+bindkey '^N' my-history-prefix-search-forward-widget
 bindkey '^g' _jump
 
 
@@ -341,3 +339,6 @@ function _grc() {
   _normal
 }
 compdef _grc grc
+
+# Atuin history
+eval "$(atuin init zsh)"

From c0e875a4ebf85dd572637c6ad8a3498c4f7e728b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 17 Feb 2024 12:49:21 +0100
Subject: [PATCH 169/656] add pst script for internal pastebin

---
 bin/pst | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 create mode 100755 bin/pst

diff --git a/bin/pst b/bin/pst
new file mode 100755
index 0000000..3239f28
--- /dev/null
+++ b/bin/pst
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -eo pipefail
+
+URL="https://paste.aarn.shelman.io"
+
+FILEPATH="$1"
+FILENAME=$(basename -- "$FILEPATH")
+EXTENSION="${FILENAME##*.}"
+
+RESPONSE=$(curl -s --data-binary "@${FILEPATH:-/dev/stdin}" --url $URL)
+PASTELINK="$URL$RESPONSE"
+
+[ -z "$EXTENSION" ] &&
+	echo "$PASTELINK" ||
+	echo "$PASTELINK.$EXTENSION"

From 6e7f8fc004f973e17b1ad840a2b9f5b3ef42a6da Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 28 Feb 2024 11:53:46 +0100
Subject: [PATCH 170/656] atuin: enter_accept nothxplz

---
 .config/atuin/config.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml
index 7eacfda..554307f 100644
--- a/.config/atuin/config.toml
+++ b/.config/atuin/config.toml
@@ -146,7 +146,7 @@ show_help = false
 
 ## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
 # This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
-enter_accept = true
+enter_accept = false
 
 
 ## Defaults to "emacs".  This specifies the keymap on the startup of `atuin

From e191b29748d58ab692d72bfa1e075dc1a76682b0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 28 Feb 2024 12:23:35 +0100
Subject: [PATCH 171/656] zsh: bind C-p to atuin prefix search

---
 .zsh/history.zsh | 38 --------------------------------------
 .zshrc           |  5 +----
 2 files changed, 1 insertion(+), 42 deletions(-)
 delete mode 100644 .zsh/history.zsh

diff --git a/.zsh/history.zsh b/.zsh/history.zsh
deleted file mode 100644
index c46bf6f..0000000
--- a/.zsh/history.zsh
+++ /dev/null
@@ -1,38 +0,0 @@
-typeset -g MY_HISTORY_SEARCH_OFFSET=0
-typeset -g MY_HISTORY_SEARCH_PREFIX=""
-
-function my-history-prefix-search() {
-    if [[ $LASTWIDGET != my-history-prefix-search-* ]]; then
-        # start state machine
-        MY_HISTORY_SEARCH_OFFSET=-1
-        MY_HISTORY_SEARCH_PREFIX="$LBUFFER"
-    fi
-    local offset_delta=$1
-    local offset=$((MY_HISTORY_SEARCH_OFFSET + $offset_delta))
-
-    (($offset < 0)) && return
-    local result=$(
-        atuin search \
-            --search-mode prefix \
-            --limit 1 \
-            --offset $offset \
-            --format '{command}' \
-            "$MY_HISTORY_SEARCH_PREFIX"
-    )
-    if [[ -n "$result" ]]; then
-        BUFFER=$result
-        CURSOR=${#BUFFER}
-        MY_HISTORY_SEARCH_OFFSET=$offset
-    fi
-}
-
-function my-history-prefix-search-backward-widget() {
-    my-history-prefix-search +1
-}
-
-function my-history-prefix-search-forward-widget() {
-    my-history-prefix-search -1
-}
-
-zle -N my-history-prefix-search-backward-widget
-zle -N my-history-prefix-search-forward-widget
diff --git a/.zshrc b/.zshrc
index 75c2071..edc52aa 100644
--- a/.zshrc
+++ b/.zshrc
@@ -96,12 +96,9 @@ _cwd_gitroot() {
 }
 zle -N _cwd_gitroot
 
-source $HOME/.zsh/history.zsh
-
 ## Keybindings
 bindkey -e
-bindkey '^P' my-history-prefix-search-backward-widget
-bindkey '^N' my-history-prefix-search-forward-widget
+bindkey '^P' atuin-up-search
 bindkey '^g' _jump
 
 

From 1481603e9bd9c050dad60ce1614a46dc0e3a72a8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 28 Feb 2024 12:24:17 +0100
Subject: [PATCH 172/656] autin: config goodness

---
 .config/atuin/config.toml | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml
index 554307f..09a16f8 100644
--- a/.config/atuin/config.toml
+++ b/.config/atuin/config.toml
@@ -43,11 +43,12 @@
 ## which filter mode to use
 ## possible values: global, host, session, directory
 # filter_mode = "global"
+filter_mode = "session"
 
 ## With workspace filtering enabled, Atuin will filter for commands executed
 ## in any directory within a git repository tree (default: false)
 # workspaces = false
-# workspaces = true
+workspaces = true
 
 ## which filter mode to use when atuin is invoked from a shell up-key binding
 ## the accepted values are identical to those of "filter_mode"
@@ -58,6 +59,7 @@
 ## the accepted values are identical to those of "search_mode"
 ## leave unspecified to use same mode set in "search_mode"
 # search_mode_shell_up_key_binding = "fuzzy"
+search_mode_shell_up_key_binding = "prefix"
 
 ## which style to use
 ## possible values: auto, full, compact
@@ -67,9 +69,11 @@ style = "compact"
 ## the maximum number of lines the interface should take up
 ## set it to 0 to always go full screen
 # inline_height = 0
+inline_height = 10
 
 ## Invert the UI - put the search bar at the top , Default to `false`
 # invert = false
+invert = true
 
 ## enable or disable showing a preview of the selected command
 ## useful when the command is longer than the terminal width and is cut off
@@ -172,6 +176,8 @@ enter_accept = false
 ## Alternatively, set env NO_MOTION=true
 # prefers_reduced_motion = false
 
+prefers_reduced_motion = true
+
 #[stats]
 # Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
 #common_subcommands = [
@@ -183,6 +189,20 @@ enter_accept = false
 #  "pnpm",
 #  "kubectl",
 #]
-#
+
+[stats]
+common_subcommands = [
+  "cargo",
+  "go",
+  "git",
+  "nix",
+  "npm",
+  "yarn",
+  "pnpm",
+  "kubectl",
+  "task",
+]
 # Set commands that should be totally stripped and ignored from stats
 #common_prefix = ["sudo"]
+#
+common_prefix = ["doas", "sudo"]

From 10180be4fefe9aeea55f7c0ee219c656a1feb3d1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 29 Feb 2024 23:29:39 +0100
Subject: [PATCH 173/656] nvim: add rust extras

---
 .config/nvim/lua/config/lazy.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 8478c8c..31ca937 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -16,6 +16,7 @@ require("lazy").setup({
 		{ import = "lazyvim.plugins.extras.coding.yanky" },
 		{ import = "lazyvim.plugins.extras.lang.go" },
 		{ import = "lazyvim.plugins.extras.lang.json" },
+		{ import = "lazyvim.plugins.extras.lang.rust" },
 		{ import = "lazyvim.plugins.extras.lang.typescript" },
 		{ import = "lazyvim.plugins.extras.lang.yaml" },
 		{ import = "lazyvim.plugins.extras.lsp.none-ls" },

From 736ba022a52cbd38c325cb47eb021b040fae6a17 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 3 Mar 2024 22:20:36 +0100
Subject: [PATCH 174/656] atuin: tweaks

---
 .config/atuin/config.toml | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml
index 09a16f8..17ba8dc 100644
--- a/.config/atuin/config.toml
+++ b/.config/atuin/config.toml
@@ -43,12 +43,12 @@
 ## which filter mode to use
 ## possible values: global, host, session, directory
 # filter_mode = "global"
-filter_mode = "session"
+#filter_mode = "session"
 
 ## With workspace filtering enabled, Atuin will filter for commands executed
 ## in any directory within a git repository tree (default: false)
 # workspaces = false
-workspaces = true
+# workspaces = true
 
 ## which filter mode to use when atuin is invoked from a shell up-key binding
 ## the accepted values are identical to those of "filter_mode"
@@ -69,11 +69,11 @@ style = "compact"
 ## the maximum number of lines the interface should take up
 ## set it to 0 to always go full screen
 # inline_height = 0
-inline_height = 10
+inline_height = 6
 
 ## Invert the UI - put the search bar at the top , Default to `false`
 # invert = false
-invert = true
+# invert = true
 
 ## enable or disable showing a preview of the selected command
 ## useful when the command is longer than the terminal width and is cut off
@@ -111,9 +111,7 @@ ctrl_n_shortcuts = true
 #   "^innocuous-cmd .*--secret=.+"
 # ]
 
-history_filter = [
-  "VAULT_TOKEN=",
-]
+history_filter = ["VAULT_TOKEN="]
 
 ## prevent commands run with cwd matching any of these regexes from being written
 ## to history. Note that these regular expressions are unanchored, i.e. if they don't
@@ -124,10 +122,7 @@ history_filter = [
 #   "^/very/secret/area"
 # ]
 
-cwd_filter = [
-  "^~/media",
-  "^/home/dln/media"
-]
+cwd_filter = ["^~/media", "^/home/dln/media"]
 
 ## Configure the maximum height of the preview to show.
 ## Useful when you have long scripts in your history that you want to distinguish
@@ -150,7 +145,8 @@ show_help = false
 
 ## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
 # This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
-enter_accept = false
+# enter_accept = false
+enter_accept = true
 
 
 ## Defaults to "emacs".  This specifies the keymap on the startup of `atuin

From aac1be1b75f5b40cf3c49838a43440f26d90f960 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 3 Mar 2024 22:20:57 +0100
Subject: [PATCH 175/656] nvim: onward

---
 .config/nvim/lazy-lock.json              | 106 ++++++++++++-----------
 .config/nvim/lua/config/lazy.lua         |   2 +-
 .config/nvim/lua/config/options.lua      |   2 +-
 .config/nvim/lua/plugins/colorscheme.lua |  79 +++++++++--------
 .config/nvim/lua/plugins/lsp.lua         |  30 +++++++
 .config/nvim/lua/plugins/ui.lua          |  60 +++++++++++++
 6 files changed, 187 insertions(+), 92 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 2439d2b..192f34b 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,67 +1,69 @@
 {
-  "LazyVim": { "branch": "main", "commit": "879e29504d43e9f178d967ecc34d482f902e5a91" },
-  "LuaSnip": { "branch": "master", "commit": "82108e7e31cc6fc223cc5df5cae6d89f70bb199f" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "fcb1522fefd0f9029b7dc71aa2664d2d0ead0fb3" },
-  "bufferline.nvim": { "branch": "main", "commit": "e48ce1805697e4bb97bc171c081e849a65859244" },
-  "catppuccin": { "branch": "main", "commit": "5e36ca599f4aa41bdd87fbf2c5aae4397ac55074" },
+  "LazyVim": { "branch": "main", "commit": "fe72424e77cb9c953084bbcaaa0eb7fe8056dc70" },
+  "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "ebe6fe2e78c19a0cf6e82752ab6f3ac55c35ef99" },
+  "bufferline.nvim": { "branch": "main", "commit": "b15c6daf5a64426c69732b31a951f4e438cb6590" },
+  "catppuccin": { "branch": "main", "commit": "c0de3b46811fe1ce3912e2245a9dfbea6b41c300" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "75e7c5c7eb5fbd53f8b12dc420b31ec70770b231" },
+  "conform.nvim": { "branch": "master", "commit": "34b81e70da83e26c048290204de44268eb59814e" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
-  "copilot.lua": { "branch": "master", "commit": "b03617a6dc4bc88b65ab5deac1631da9a9c2dcaf" },
-  "dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" },
-  "dressing.nvim": { "branch": "master", "commit": "94b0d24483d56f3777ee0c8dc51675f21709318c" },
-  "friendly-snippets": { "branch": "main", "commit": "69a2c1675b66e002799f5eef803b87a12f593049" },
-  "gitsigns.nvim": { "branch": "main", "commit": "3e6e91b09f0468c32d3b96dcacf4b947f037ce25" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "3c8a185da4b8ab7aef487219f5e001b11d4b6aaf" },
-  "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
-  "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "0989bdf4fdf7b5aa4c74131d7ffccc3f399ac788" },
-  "mason-nvim-dap.nvim": { "branch": "main", "commit": "3614a39aae98ccd34124b072939d6283853b3dd2" },
-  "mason.nvim": { "branch": "main", "commit": "e110bc3be1a7309617cecd77bfe4bf86ba1b8134" },
-  "mini.ai": { "branch": "main", "commit": "f7787cff9cc42004f722ca1e64e6af4e64e34177" },
-  "mini.bufremove": { "branch": "main", "commit": "020243bfed8c8b941f2c20626faf3ea39c0c0e1b" },
-  "mini.comment": { "branch": "main", "commit": "67f00d3ebbeae15e84584d971d0c32aad4f4f3a4" },
-  "mini.indentscope": { "branch": "main", "commit": "5a8369475cd7cd6f207a4d288406d03b0fc48bdb" },
-  "mini.surround": { "branch": "main", "commit": "7bf8915ba15d7a4f3c2afe7868d3c15a858d73f1" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" },
-  "neoconf.nvim": { "branch": "main", "commit": "64437787dba70fce50dad7bfbb97d184c5bc340f" },
-  "neodev.nvim": { "branch": "main", "commit": "be8d4d4cab6c13c6a572269c9d6a63774baba9a0" },
-  "noice.nvim": { "branch": "main", "commit": "92433164e2f7118d4122c7674c3834d9511722ba" },
-  "none-ls.nvim": { "branch": "main", "commit": "fbdcbf8e152529af846b3a333f039751829b84c2" },
-  "nui.nvim": { "branch": "main", "commit": "35da9ca1de0fc4dda96c2e214d93d363c145f418" },
-  "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" },
-  "nvim-dap": { "branch": "master", "commit": "aad46274f09ba29933e4cef2257cdda5ec19cf7a" },
-  "nvim-dap-go": { "branch": "main", "commit": "a5cc8dcad43f0732585d4793deb02a25c4afb766" },
-  "nvim-dap-ui": { "branch": "master", "commit": "7e5e16427aaf814dc2d58e1b219def9ef2fa2435" },
+  "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
+  "crates.nvim": { "branch": "main", "commit": "ec2b04a380c9f3a8e6ca38c230e4990d71978143" },
+  "dashboard-nvim": { "branch": "master", "commit": "413442b12d85315fc626c44a0ce4929b213ef604" },
+  "dressing.nvim": { "branch": "master", "commit": "6f212262061a2120e42da0d1e87326e8a41c0478" },
+  "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
+  "gitsigns.nvim": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" },
+  "lazy.nvim": { "branch": "main", "commit": "28126922c9b54e35a192ac415788f202c3944c9f" },
+  "lualine.nvim": { "branch": "master", "commit": "7d131a8d3ba5016229e8a1d08bf8782acea98852" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" },
+  "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
+  "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" },
+  "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
+  "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
+  "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
+  "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
+  "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "f3941c57ec85d7bdb44fa53fd858fd80f159018f" },
+  "neoconf.nvim": { "branch": "main", "commit": "8d7150e9d6113f01421c34c5aeb0f586afa232e0" },
+  "neodev.nvim": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" },
+  "noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
+  "none-ls.nvim": { "branch": "main", "commit": "ff3819c52ca04232fb70fbd6c1639de9abcbe122" },
+  "nui.nvim": { "branch": "main", "commit": "b81333d12f824dbed5eb231c8a4409a290fdd848" },
+  "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
+  "nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" },
+  "nvim-dap-go": { "branch": "main", "commit": "64f73400761e2d19459e664a52ea478f3a4420e7" },
+  "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "d4542ac257d3c7ee4131350db6179ae6340ce40b" },
-  "nvim-lint": { "branch": "master", "commit": "8df53b5dde8ea80f0a039775777eae6648a10229" },
-  "nvim-lspconfig": { "branch": "master", "commit": "796394fd19fb878e8dbc4fd1e9c9c186ed07a5f4" },
+  "nvim-lint": { "branch": "master", "commit": "e824adb9bc01647f71e55457353a68f0f37f9931" },
+  "nvim-lspconfig": { "branch": "master", "commit": "c932a56bf25167b1e88d2a1ebe35bb774b41019a" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
-  "nvim-notify": { "branch": "master", "commit": "1576123bff3bed67bc673a3076e591abfe5d8ca9" },
-  "nvim-spectre": { "branch": "master", "commit": "d8906855f1949ac97b1e77aaf8d3fe12ed158ddc" },
-  "nvim-treesitter": { "branch": "master", "commit": "8cd2b230174efbf7b5d9f49fe2f90bda6b5eb16e" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "400a99ad43ac78af1148061da3491cba2637ad29" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "85b9d0cbd4ff901abcda862b50dbb34e0901848b" },
-  "nvim-ts-autotag": { "branch": "main", "commit": "8515e48a277a2f4947d91004d9aa92c29fdc5e18" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "1277b4a1f451b0f18c0790e1a7f12e1e5fdebfee" },
-  "nvim-web-devicons": { "branch": "master", "commit": "db0c864375c198cacc171ff373e76bfce2a85045" },
-  "persistence.nvim": { "branch": "main", "commit": "ad538bfd5336f1335cdb6fd4e0b0eebfa6e12f32" },
-  "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
-  "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
+  "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
+  "nvim-spectre": { "branch": "master", "commit": "3712ff0cdf4f9f877d9ca708d835a877d9a0abaf" },
+  "nvim-treesitter": { "branch": "master", "commit": "63ca90eaa3ce1cc668add8828a9e3d6728dbbdf1" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "b8d1ffe58a88e0356da56b167373e89c4579ce15" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "95933e762e28f9d38b572d65e7e4da9d2f4d90cb" },
+  "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
+  "nvim-web-devicons": { "branch": "master", "commit": "4adea17610d140a99c313e3f79a9dc01825d59ae" },
+  "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
+  "plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" },
+  "rasmus.nvim": { "branch": "main", "commit": "f824de95d446686e479781c0c2b778c177da528f" },
+  "rust-tools.nvim": { "branch": "master", "commit": "676187908a1ce35ffcd727c654ed68d851299d3e" },
+  "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
-  "telescope.nvim": { "branch": "master", "commit": "4367e05c06d19f28c514e1498bcd9410f4bc65b2" },
-  "todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" },
-  "tokyonight.nvim": { "branch": "main", "commit": "f247ee700b569ed43f39320413a13ba9b0aef0db" },
+  "telescope.nvim": { "branch": "master", "commit": "aa83606299c5beeaf80e656efbf07bde258db7be" },
+  "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
+  "tokyonight.nvim": { "branch": "main", "commit": "610179f7f12db3d08540b6cc61434db2eaecbcff" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
-  "vim-illuminate": { "branch": "master", "commit": "3bd2ab64b5d63b29e05691e624927e5ebbf0fb86" },
-  "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
+  "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
+  "vim-startuptime": { "branch": "master", "commit": "308b0088a864c4711a96e45b6734cf9294074f65" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
-  "yaml-companion.nvim": { "branch": "main", "commit": "4de1e1546abc461f62dee02fcac6a02debd6eb9e" },
-  "yanky.nvim": { "branch": "main", "commit": "6bb9ffd3cad4c9876bda54e19d0659de28a4f84f" }
+  "yanky.nvim": { "branch": "main", "commit": "7c5cbf0122ff2dfbb6a92f14885894f65949cc8b" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 31ca937..b4773e7 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -32,7 +32,7 @@ require("lazy").setup({
 		version = false, -- always use the latest git commit
 		-- version = "*", -- try installing the latest stable version for plugins that support semver
 	},
-	install = { colorscheme = { "noirbuddy", "tokyonight", "habamax" } },
+	install = { colorscheme = { "eyes" } },
 	checker = { enabled = true }, -- automatically check for plugin updates
 	performance = {
 		rtp = {
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 3e0ab0f..3426dee 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -5,7 +5,7 @@
 local opt = vim.opt
 
 opt.relativenumber = false
-opt.clipboard = ""
+opt.clipboard = "unnamedplus"
 
 vim.g.do_filetype_lua = 1
 
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index c569cd1..9ad67d2 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,4 +1,21 @@
 return {
+	{
+		"kvrohit/rasmus.nvim",
+		dependencies = {
+			{ "tjdevries/colorbuddy.nvim" },
+		},
+		lazy = false,
+		priority = 1000,
+		config = function()
+			vim.g.rasmus_variant = "monochrome"
+			vim.g.rasmus_bold_functions = true
+			vim.g.rasmus_bold_comments = false
+			vim.g.rasmus_italic_comments = true
+			vim.g.rasmus_transparent = true
+
+			-- vim.cmd("colorscheme rasmus")
+		end,
+	},
 
 	{
 		"jesseleite/nvim-noirbuddy",
@@ -12,7 +29,6 @@ return {
 	{
 		"LazyVim/LazyVim",
 		opts = {
-			-- colorscheme = "noirbuddy",
 			colorscheme = function()
 				require("noirbuddy").setup({
 					preset = "slate",
@@ -25,57 +41,44 @@ return {
 					colors = {
 						-- background = "#0d1219",
 						background = "#11171d",
-						primary = "#FFECB3",
+						-- background = "#1e2835",
+						primary = "#FFECD3",
 						secondary = "#B0BEC5",
-
+						--
 						diagnostic_info = "#00d992",
 						diagnostic_hint = "#00d992",
 					},
 				})
-
+				--
 				local Color, colors, Group, groups, styles = require("colorbuddy").setup()
 				Color.new("string", "#D7CCC8")
 				Color.new("symbol", "#ECEFF1")
 				--
 				Color.new("comment", "#E57373", nil, styles.italic)
 				Color.new("hlargs", "#FFF8E1")
-
+				--
 				Color.new("illuminate_bg", "#112210")
 				Color.new("illuminate_fg", "#00d992")
-
+				--
 				-- Color.new("search_bg", "#554411")
 				-- Color.new("search_fg", "#FFF0C0")
 				--
 				Color.new("search_bg", "#223311")
 				Color.new("search_fg", "#CCFF33")
-
-				Color.new("IndentBlanklineIndent5", "#E06C75", styles.nocombine)
-				Color.new("IndentBlanklineIndent6", "#E5C07B", styles.nocombine)
-				Color.new("IndentBlanklineIndent3", "#98C379", styles.nocombine)
-				Color.new("IndentBlanklineIndent4", "#56B6C2", styles.nocombine)
-				Color.new("IndentBlanklineIndent1", "#61AFEF", styles.nocombine)
-				Color.new("IndentBlanklineIndent2", "#C678DD", styles.nocombine)
-				Group.new("IndentBlanklineIndent1", colors.IndentBlanklineIndent1:dark(0.2))
-				Group.new("IndentBlanklineIndent2", colors.IndentBlanklineIndent2:dark(0.2))
-				Group.new("IndentBlanklineIndent3", colors.IndentBlanklineIndent3:dark(0.2))
-				Group.new("IndentBlanklineIndent4", colors.IndentBlanklineIndent4:dark(0.2))
-				Group.new("IndentBlanklineIndent5", colors.IndentBlanklineIndent5:dark(0.2))
-				Group.new("IndentBlanklineIndent6", colors.IndentBlanklineIndent6:dark(0.2))
-
-				Color.new("IndentBlanklineContextChar", "#00a972", styles.nocombine)
-				Group.new("IndentBlanklineContextChar", colors.IndentBlanklineContextChar)
-
+				--
 				Color.new("MiniIndentscopeSymbol", "#00d992")
 				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
-
+				--
 				Color.new("CursorFg", "#000000", styles.nocombine)
 				Color.new("CursorBg", "#00d992", styles.nocombine)
 				Group.new("Cursor", colors.CursorFg, colors.CursorBg)
-
+				Color.new("CursorLine", "#141b23")
+				Group.new("CursorLine", nil, colors.CursorLine)
+				--
 				Color.new("NavicTextFg", "#5fbf9f")
 				Color.new("NavicTextBg", "#333333")
 				Color.new("NavicIcon", "#5fbf9f")
-
+				--
 				Group.new("NavicText", colors.NavicTextFg, colors.NavicTextBg)
 				Group.new("NavicIcon", colors.NavicIcon, colors.NavicTextBg)
 				Group.link("NavicIconsFile", groups.NavicIcon)
@@ -104,11 +107,11 @@ return {
 				Group.link("NavicIconsEvent", groups.NavicIcon)
 				Group.link("NavicIconsOperator", groups.NavicIcon)
 				Group.link("NavicIconsTypeParameter", groups.NavicIcon)
-
+				--
 				Color.new("NormalFloatFg", "#b8d1ef", styles.nocombine)
 				Color.new("NormalFloatBg", "#335a88", styles.nocombine)
 				Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
-
+				--
 				Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
 				Color.new("PmenuSelBg", "#335a88", styles.nocombine)
 				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
@@ -118,40 +121,40 @@ return {
 				-- Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
 				-- Group.link("TroubleText", groups.TroubleNormal)
 				-- Group.link("TroubleSource", groups.TroubleNormal)
-
+				--
 				Color.new("Error", "#ffce60", styles.nocombine)
 				Group.new("ErrorMsg", colors.Error)
-
+				--
 				Color.new("FlashLabelFg", "#220011")
 				Color.new("FlashLabelBg", "#EA1199")
 				Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
-
+				--
 				Group.new("TelescopeTitle", colors.primary)
 				Group.new("TelescopeBorder", colors.secondary)
 				Group.new("@comment", colors.comment, nil, styles.italic)
 				Group.new("@string", colors.string, nil, styles.italic)
-
+				--
 				Group.new("@keyword", colors.noir_2)
 				Group.new("@keyword.function", colors.noir_2)
 				Group.new("@keyword.return", colors.noir_1)
-
+				--
 				Group.new("@operator", colors.noir_1)
 				Group.new("@keyword.operator", colors.noir_1)
 				-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
 				Group.new("@type.builtin", colors.noir_2)
-
+				--
 				Group.new("@variable", colors.symbol, nil, styles.italic)
 				Group.new("Hlargs", colors.hlargs, nil, styles.italic)
-
+				--
 				Group.new("@function", colors.noir_1, nil, styles.bold)
 				Group.new("@method", colors.noir_1, nil, styles.bold)
-
+				--
 				Group.new("@punctuation", colors.noir_4)
 				Group.new("@punctuation.bracket", colors.noir_4)
 				Group.new("@punctuation.delimiter", colors.noir_4)
-
+				--
 				Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
-
+				--
 				Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
 				Group.new("IncSearch", colors.search_fg, colors.search_bg)
 			end,
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index a95915f..db126a3 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -12,6 +12,36 @@ return {
 			},
 			---@type lspconfig.options
 			servers = {
+				rust_analyzer = {
+					keys = {
+						{ "K", "<cmd>RustHoverActions<cr>", desc = "Hover Actions (Rust)" },
+						{ "<leader>cR", "<cmd>RustCodeAction<cr>", desc = "Code Action (Rust)" },
+						{ "<leader>dr", "<cmd>RustDebuggables<cr>", desc = "Run Debuggables (Rust)" },
+					},
+					settings = {
+						["rust-analyzer"] = {
+							cargo = {
+								allFeatures = true,
+								loadOutDirsFromCheck = true,
+								runBuildScripts = true,
+							},
+							-- Add clippy lints for Rust.
+							checkOnSave = {
+								allFeatures = true,
+								command = "clippy",
+								extraArgs = { "--no-deps" },
+							},
+							procMacro = {
+								enable = true,
+								ignored = {
+									["async-trait"] = { "async_trait" },
+									["napi-derive"] = { "napi" },
+									["async-recursion"] = { "async_recursion" },
+								},
+							},
+						},
+					},
+				},
 				yamlls = {
 					settings = {
 						yaml = {
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index 20f2641..ab6dcb4 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -1,6 +1,27 @@
+local hooks = require("ibl.hooks")
+-- create the highlight groups in the highlight setup hook, so they are reset
+-- every time the colorscheme changes
+hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
+	local Color, colors, Group, groups, styles = require("colorbuddy").setup()
+	Color.new("IndentBlanklineIndent", "#1e2835", styles.nocombine)
+	Group.new("IndentBlanklineIndent1", colors.IndentBlanklineIndent:light(0.1))
+	Group.new("IndentBlanklineIndent2", colors.IndentBlanklineIndent:light(0.15))
+	Group.new("IndentBlanklineIndent3", colors.IndentBlanklineIndent:light(0.2))
+	Group.new("IndentBlanklineIndent4", colors.IndentBlanklineIndent:light(0.25))
+	Group.new("IndentBlanklineIndent5", colors.IndentBlanklineIndent:light(0.3))
+	Group.new("IndentBlanklineIndent6", colors.IndentBlanklineIndent:light(0.35))
+
+	Color.new("IndentBlanklineContextChar", "#f0a972", styles.nocombine)
+	Group.new("IndentBlanklineContextChar", colors.IndentBlanklineContextChar)
+end)
+
 return {
 	{
 		"lukas-reineke/indent-blankline.nvim",
+		dependencies = {
+			{ "tjdevries/colorbuddy.nvim" },
+		},
+		main = "ibl",
 		opts = {
 			indent = {
 				char = "┊",
@@ -29,4 +50,43 @@ return {
 			},
 		},
 	},
+
+	{
+		"rcarriga/nvim-notify",
+		opts = {
+			timeout = 1500,
+			background_colour = "#1e2835",
+		},
+	},
+
+	{
+		"nvim-lualine/lualine.nvim",
+		dependencies = {
+			"jesseleite/nvim-noirbuddy",
+			"nvim-tree/nvim-web-devicons",
+		},
+		config = function()
+			-- Option 1:
+			local noirbuddy_lualine = require("noirbuddy.plugins.lualine")
+
+			local theme = noirbuddy_lualine.theme
+			-- optional, you can define those yourself if you need
+			local sections = noirbuddy_lualine.sections
+			local inactive_sections = noirbuddy_lualine.inactive_sections
+
+			require("lualine").setup({
+				options = {
+					icons_enabled = true,
+					theme = theme,
+					filetype = { colored = false },
+					component_separators = { left = "", right = "" },
+					section_separators = { left = "", right = "" },
+					disabled_filetypes = {},
+					always_divide_middle = true,
+				},
+				sections = sections,
+				inactive_sections = inactive_sections,
+			})
+		end,
+	},
 }

From 6516c5306f84353ab542c9e5f4a13d37c750ffbf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Mar 2024 19:45:46 +0100
Subject: [PATCH 176/656] wezterm: use iosevka shelman font

---
 .config/wezterm/wezterm.lua | 80 ++++++-------------------------------
 1 file changed, 13 insertions(+), 67 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index a0c8f0b..535811a 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -5,11 +5,11 @@ local act = wezterm.action
 local dev_host = "dln-dev"
 local spawn_dev_nvim = { "ssh", dev_host, "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
 
-local function font_with_fallback(name, params)
-	local names = { name, "Noto Color Emoji" }
-	return wezterm.font_with_fallback(names, params)
-end
-
+-- local function font_with_fallback(name, params)
+-- 	local names = { name, "Noto Color Emoji" }
+-- 	return wezterm.font_with_fallback(names, params)
+-- end
+--
 wezterm.add_to_config_reload_watch_list(os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm")
 
 return {
@@ -17,85 +17,28 @@ return {
 	color_scheme_dirs = {
 		os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm",
 	},
-	font = font_with_fallback("Iosevka Term SS09", { weight = "Light" }),
+	font = wezterm.font({ family = "IosevkaShelman Nerd Font" }),
 	font_rules = {
 		{
 			italic = false,
 			intensity = "Half",
 			reverse = false,
-			font = font_with_fallback("Iosevka Term SS09", { weight = "Thin" }),
-		},
-		{
-			italic = false,
-			intensity = "Bold",
-			reverse = false,
-			font = font_with_fallback("Iosevka Term SS09", { weight = "DemiBold" }),
+			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight" }),
 		},
 		{
 			italic = true,
 			intensity = "Normal",
 			reverse = false,
-			font = font_with_fallback("Iosevka Term Curly Slab", { weight = "Light", italic = true }),
-		},
-		{
-			italic = true,
-			intensity = "Half",
-			reverse = false,
-			font = font_with_fallback("Iosevka Term SS15", { weight = "ExtraLight", italic = true }),
-		},
-		{
-			italic = true,
-			intensity = "Bold",
-			reverse = false,
-			font = font_with_fallback("Iosevka Term Curly Slab Ex", { weight = "Regular", italic = true }),
-		},
-
-		-- Reversed
-		{
-			reverse = true,
-			italic = false,
-			intensity = "Normal",
-			font = font_with_fallback("Iosevka Term SS09", { weight = "Regular" }),
-		},
-		{
-			reverse = true,
-			italic = false,
-			intensity = "Half",
-			font = font_with_fallback("Iosevka Term SS09", { weight = "Light" }),
-		},
-		{
-			reverse = true,
-			italic = true,
-			intensity = "Half",
-			font = font_with_fallback("Iosevka Term Curly Slab", { weight = "ExtraLight", italic = true }),
-		},
-		{
-			reverse = true,
-			italic = true,
-			intensity = "Normal",
-			font = font_with_fallback("Iosevka Term Curly Slab", { weight = "Light", italic = true }),
-		},
-		{
-			reverse = true,
-			italic = true,
-			intensity = "Bold",
-			font = font_with_fallback("Iosevka Term Curly Slab Ex", { weight = "Bold", italic = true }),
-		},
-		{
-			reverse = true,
-			italic = false,
-			intensity = "Bold",
-			font = font_with_fallback("Iosevka Term SS09", { weight = "Bold" }),
+			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
 		},
 	},
 	front_end = "WebGpu",
 	webgpu_power_preference = "HighPerformance",
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
-	allow_square_glyphs_to_overflow_width = "Always",
-	font_size = 20,
+	-- allow_square_glyphs_to_overflow_width = "Always",
+	font_size = 16,
 	command_palette_font_size = 13.5,
-	line_height = 1.1,
 	initial_cols = 132,
 	initial_rows = 45,
 	use_resize_increments = true,
@@ -107,10 +50,13 @@ return {
 		top = 0,
 		bottom = 0,
 	},
+	unicode_version = 14,
 	default_cursor_style = "SteadyBlock",
 	cursor_thickness = "6px",
 	cursor_blink_rate = 0,
 	hide_mouse_cursor_when_typing = false,
+	underline_position = -12,
+	underline_thickness = 2,
 	enable_wayland = true,
 	enable_tab_bar = false,
 	tab_bar_at_bottom = true,

From fa08caa326a967d034925f23865e3d5325c3f7d7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Mar 2024 19:47:26 +0100
Subject: [PATCH 177/656] wezterm: explicitly request tty in ssh

---
 .local/share/applications/wezterm-dln-dev-secondary.desktop | 2 +-
 .local/share/applications/wezterm-dln-dev.desktop           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.local/share/applications/wezterm-dln-dev-secondary.desktop b/.local/share/applications/wezterm-dln-dev-secondary.desktop
index 8d40b0b..39b281b 100644
--- a/.local/share/applications/wezterm-dln-dev-secondary.desktop
+++ b/.local/share/applications/wezterm-dln-dev-secondary.desktop
@@ -7,4 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config window_background_opacity=0.8 --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As1", "-t0"}' start --class=org.wezfurlong.wezterm-secondary
+Exec=/usr/bin/wezterm --config window_background_opacity=0.8 --config 'default_prog={"ssh", "-tq", "dln-dev", "--", "tmux", "-u", "new", "-As1", "-t0"}' start --class=org.wezfurlong.wezterm-secondary
diff --git a/.local/share/applications/wezterm-dln-dev.desktop b/.local/share/applications/wezterm-dln-dev.desktop
index 6398802..277cb3a 100644
--- a/.local/share/applications/wezterm-dln-dev.desktop
+++ b/.local/share/applications/wezterm-dln-dev.desktop
@@ -7,4 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As0", "-t0"}' start --class=wezterm-dln-dev
+Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-tq", "dln-dev", "--", "tmux", "-u", "new", "-As0", "-t0"}' start --class=wezterm-dln-dev

From 49a43e46c6c2b0fa1ad2bec442743cbcba615358 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Mar 2024 19:48:02 +0100
Subject: [PATCH 178/656] ssh: disable compression

---
 .ssh/config | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.ssh/config b/.ssh/config
index ffa3826..df495cf 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -12,9 +12,11 @@ Include ~/.ssh/private_config
 Host 10.1.100.16
 Host dln-dev
 Hostname 10.1.100.16
+ #Hostname aarn.shelman.io
+ #Port 2022
 ForwardAgent yes
 ExitOnForwardFailure yes
-Compression yes
+Compression no
 LocalForward 127.0.0.1:3000 127.0.0.1:3000
 LocalForward 127.0.0.1:8000 127.0.0.1:8000
 LocalForward 127.0.0.1:8080 127.0.0.1:8080

From 2f27ec5095560135f7cd11bf1271484800d46e12 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Mar 2024 19:48:30 +0100
Subject: [PATCH 179/656] Remove deprecated fontconfig

---
 .config/fontconfig/fonts.conf | 46 -----------------------------------
 1 file changed, 46 deletions(-)
 delete mode 100644 .config/fontconfig/fonts.conf

diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf
deleted file mode 100644
index b06e4c3..0000000
--- a/.config/fontconfig/fonts.conf
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-<fontconfig>
- <alias>
-  <family>serif</family>
-  <prefer>
-   <family>Noto Color Emoji</family>
-  </prefer>
- </alias>
- <alias>
-  <family>sans-serif</family>
-  <prefer>
-   <family>Noto Color Emoji</family>
-  </prefer>
- </alias>
- <alias>
-  <family>monospace</family>
-  <prefer>
-   <family>Noto Color Emoji</family>
-  </prefer>
- </alias>
- <!--
- <dir>~/.fonts</dir>
- <match target="font">
-  <edit mode="assign" name="hinting">
-   <bool>true</bool>
-  </edit>
- </match>
- <match target="font">
-  <edit mode="assign" name="hintstyle">
-   <const>hintmedium</const>
-  </edit>
-   </match>
- -->
- <match target="font">
-  <edit name="hinting" mode="assign">
-   <bool>true</bool>
-  </edit>
- </match>
- <match target="font">
-  <edit name="hintstyle" mode="assign">
-   <const>hintslight</const>
-  </edit>
- </match>
- <dir>~/.fonts</dir>
-</fontconfig>

From 7411069e3577927e9949890339c820c45b95682d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 8 Mar 2024 19:51:32 +0100
Subject: [PATCH 180/656] zsh: fresh prompt

---
 .config/starship.toml | 50 +++++++++++++++++++++++++++
 .zshrc                | 79 ++-----------------------------------------
 2 files changed, 53 insertions(+), 76 deletions(-)
 create mode 100644 .config/starship.toml

diff --git a/.config/starship.toml b/.config/starship.toml
new file mode 100644
index 0000000..4e5bd81
--- /dev/null
+++ b/.config/starship.toml
@@ -0,0 +1,50 @@
+"$schema" = 'https://starship.rs/config-schema.json'
+
+add_newline = false
+
+format = """\
+$directory\
+($character)\
+"""
+
+right_format = """\
+$git_status$git_state$git_branch$git_commit
+$hostname"""
+
+[hostname]
+ssh_only = false
+format =  " [](fg:#333333)[ $hostname ](italic dimmed bg:#333333)"
+disabled = false
+
+[directory]
+fish_style_pwd_dir_length = 1
+truncation_length = 1
+truncate_to_repo = false
+truncation_symbol = "…"
+style = "italic dimmed"
+
+[character]
+success_symbol = "[%](bold)"
+error_symbol = "[%](bold red)"
+
+[git_branch]
+format = "[$symbol$branch]($style)"
+style = "italic bold fg:#00d992"
+symbol = " "
+truncation_length = 16
+truncation_symbol = ""
+
+[git_commit]
+format = "[ $hash$tag]($style) "
+style = "fg:#00d992"
+
+[git_state]
+style = ""
+
+[git_status]
+format = '([$all_status$ahead_behind]($style)) '
+style = "fg:#00d992"
+modified = "[ 󰦒](fg:#FFEE58)"
+deleted = "[ ✘](fg:#FF5722)"
+untracked = "[ ?](fg:#CE93D8)"
+staged = "[ 󰐖](fg:#80DEEA)"
diff --git a/.zshrc b/.zshrc
index edc52aa..a8b5490 100644
--- a/.zshrc
+++ b/.zshrc
@@ -59,11 +59,6 @@ setopt null_glob
 
 export LC_ALL=en_US.UTF-8
 
-## Autosuggest
-# ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#D7CCC8,italic"
-# ZSH_AUTOSUGGEST_USE_ASYNC=1
-# ZSH_AUTOSUGGEST_STRATEGY=(history completion)
-
 export PATH=$HOME/bin:$HOME/.cargo/bin:$PATH
 
 redraw-prompt() {
@@ -89,7 +84,7 @@ typeset -gaU chpwd_functions
 chpwd_functions+=fre_chpwd
 
 _cwd_gitroot() {
-  _gitroot=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
+  _gitroot=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
   _dir=$((echo "$_gitroot" && fd -td . "$_gitroot") | fzf-tmux -p 90%,40% -y 0)
   [ -n "$_dir" ] && cd $_dir
   zle && zle redraw-prompt
@@ -141,66 +136,9 @@ rg() {
 }
 
 
-## Jujutsu
-jj_chpwd() {
-  _state="$JJ_REPO"
-  JJ_REPO=$(jj workspace root --ignore-working-copy 2>/dev/null)
-  if [[ "$JJ_REPO" == "$_state" ]]; then
-    return
-  fi
-  if [[ -n "$JJ_REPO" ]]; then
-    abbr add -S --force "b"="jj branch list"
-    abbr add -S --force "c"="jj commit"
-    abbr add -S --force "d"="jj show"
-    abbr add -S --force "new"="jj new main"
-    abbr add -S --force "p"="jj git push"
-    abbr add -S --force "s"="jj status"
-    abbr add -S --force "sl"="jj log --ignore-working-copy"
-    abbr add -S --force "sy"="jj git fetch"
-  else
-    abbr erase -S b
-    abbr erase -S c
-    abbr erase -S d
-    abbr erase -S new
-    abbr erase -S p
-    abbr erase -S s
-    abbr erase -S sl
-    abbr erase -S sy
-  fi
-}
-chpwd_functions+=jj_chpwd
-
-
 ## Prompt
-
-prompt_chpwd() {
-  if [[ ${#PWD} < 25 ]]; then
-    PROMPT_PWD="$PWD"
-  else
-    PROMPT_PWD="$(shrink_path -t -l -e "%{%G\e[2;3;38;5;202m\U2026\e[0;2;3m%}")"
-  fi
-}
-chpwd_functions+=prompt_chpwd
-
-prompt_precmd() {
-  PROMPT_LABEL="$HOST"
-  print -n '\e[5 q'          # Fix cursor
-  print -n "\e]7;${PWD}\a"   # OSC 7 for terminal pwd
-}
-
-precmd_functions+=(prompt_precmd)
-
-autoload -Uz vcs_info
-chpwd_functions+=vcs_info
-precmd_functions+=vcs_info
-
-zstyle ':vcs_info:git:*' check-for-changes true
-zstyle ':vcs_info:git:*' formats '%F{#559955} %1.25b%u%c%f '
-zstyle ':vcs_info:*' unstagedstr ' %F{#ff0}󰦒'
-zstyle ':vcs_info:*' stagedstr ' %F{#9ff}󰐖'
-
-setopt PROMPT_SUBST
-PROMPT=$'%F{#aaa}%K{#333}%{\e[3m%} ${PROMPT_LABEL} %{\e[0m%}%S%F{#333}%k%{%G\Ue0ba%}%k%s%f%{\e[2;3m%}${PROMPT_PWD}%{\e[0m%} ${vcs_info_msg_0_}%# '
+setopt TRANSIENT_RPROMPT
+eval "$(starship init zsh)"
 
 ## vim
 export EDITOR=nvim
@@ -275,17 +213,6 @@ if [ ! -f "${fpath[1]}/_task" ]; then
   curl -sLo "${fpath[1]}/_task" https://raw.githubusercontent.com/go-task/task/main/completion/zsh/_task
 fi
 
-## sapling
-if [ ! -f "${fpath[1]}/_sl" ]; then
-  # See: https://github.com/facebook/sapling/pull/369
-  curl -sLo "${fpath[1]}/_sl" https://github.com/facebook/sapling/raw/d6157db1ebc0868cf70805756e32541bd681bac2/eden/scm/contrib/zsh_completion_sl
-fi
-
-## jujutsu
-if [ ! -f "${fpath[1]}/_jj" ]; then
-	command -v jj >/dev/null 2>&1 && jj util completion --zsh > "${fpath[1]}/_jj"
-fi
-
 ## kapp
 if [ ! -f "${fpath[1]}/_kapp" ]; then
 	command -v kapp >/dev/null 2>&1 && kapp completion zsh --tty=false > "${fpath[1]}/_kapp"

From 5f2a658772f0ec297426c3e57d62b6b00ff07e8b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 8 Mar 2024 19:52:21 +0100
Subject: [PATCH 181/656] tmux: pane border and nav

---
 .tmux.conf | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/.tmux.conf b/.tmux.conf
index 6988918..b890397 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -21,13 +21,18 @@ set-environment -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/gcr/ssh"
 set -g update-environment "BUILDCOMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION"
 set -g default-command zsh
 set -g history-limit 10000
-
+#
 set -g default-terminal "wezterm"
 set -ga terminal-features '*:overline:strikethrough:usstyle:RGB'
 
 # Key bindings
+bind -n M-Tab if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window'
+bind -n M-h select-pane -L
+bind -n M-l select-pane -R
 bind -n M-Left select-pane -L
 bind -n M-Right select-pane -R
+bind -n M-j select-pane -U
+bind -n M-k select-pane -D
 bind -n M-Up select-pane -U
 bind -n M-Down select-pane -D
 bind -n M-1 select-window -t nvim
@@ -63,6 +68,8 @@ setw -g window-status-format ""
 setw -g window-status-current-format ""
 setw -g window-status-separator ""
 set -g status-style "bg=#444444,fg=#dddddd,italics"
+set -g pane-border-style "fg=#334455"
+set -g pane-active-border-style "fg=#334455"
 set -g status-position bottom
 set -g status-left-length 0
 set -g status-right-length 0

From 2fb69d78a96f46b7dc7879ddea947bcb5cb42ac1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 8 Mar 2024 19:53:06 +0100
Subject: [PATCH 182/656] tmux: nvim edit helper selects first pane in first
 window

---
 bin/tmux-edit-helper | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper
index da98fa3..95b1e65 100755
--- a/bin/tmux-edit-helper
+++ b/bin/tmux-edit-helper
@@ -18,7 +18,7 @@ fi
 
 _nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
 
-tmux select-window -t nvim 2>/dev/null && exec nvim --server "$_nvim_socket" --remote "$_file"
+(tmux select-window -t nvim 2>/dev/null && tmux select-pane -t 0) && exec nvim --server "$_nvim_socket" --remote "$_file"
 
 # nvim is not running/listening on remote socket, so start it.
 tmux new-window -S -n nvim \

From a93d3578a3dc233a06d19918925c8a2824fa6d86 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 8 Mar 2024 19:53:33 +0100
Subject: [PATCH 183/656] nvim: color scheme tweaks

---
 .config/nvim/lazy-lock.json              | 46 ++++++------
 .config/nvim/lua/config/lazy.lua         |  2 +-
 .config/nvim/lua/plugins/colorscheme.lua | 91 +++++++++++++++++-------
 .config/nvim/lua/plugins/lsp.lua         | 20 +++---
 4 files changed, 100 insertions(+), 59 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 192f34b..ca65459 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,26 +1,29 @@
 {
-  "LazyVim": { "branch": "main", "commit": "fe72424e77cb9c953084bbcaaa0eb7fe8056dc70" },
+  "LazyVim": { "branch": "main", "commit": "e3bfcb9bf74292dc846f5d1710fbb2e8f36a687a" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "ebe6fe2e78c19a0cf6e82752ab6f3ac55c35ef99" },
-  "bufferline.nvim": { "branch": "main", "commit": "b15c6daf5a64426c69732b31a951f4e438cb6590" },
-  "catppuccin": { "branch": "main", "commit": "c0de3b46811fe1ce3912e2245a9dfbea6b41c300" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "6eb5d8d9ec9f81b75aaa6d15d0f6dc12a066fd3f" },
+  "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
+  "bufferline.nvim": { "branch": "main", "commit": "64e2c5def50dfd6b6f14d96a45fa3d815a4a1eef" },
+  "catppuccin": { "branch": "main", "commit": "045e3499d9ec8d84635fb08877ae44fd33f6a38d" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
-  "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
+  "cmp-emoji": { "branch": "main", "commit": "0acd702358230abeb6576769f7116e766bca28a0" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "34b81e70da83e26c048290204de44268eb59814e" },
+  "conform.nvim": { "branch": "master", "commit": "5a15cc46e75cad804fd51ec5af9227aeb1d1bdaa" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
-  "crates.nvim": { "branch": "main", "commit": "ec2b04a380c9f3a8e6ca38c230e4990d71978143" },
+  "crates.nvim": { "branch": "main", "commit": "535773ed3b321d68ddd6ef8cd5a1e07b345026a6" },
   "dashboard-nvim": { "branch": "master", "commit": "413442b12d85315fc626c44a0ce4929b213ef604" },
   "dressing.nvim": { "branch": "master", "commit": "6f212262061a2120e42da0d1e87326e8a41c0478" },
   "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
   "gitsigns.nvim": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" },
+  "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "indent-blankline.nvim": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" },
-  "lazy.nvim": { "branch": "main", "commit": "28126922c9b54e35a192ac415788f202c3944c9f" },
-  "lualine.nvim": { "branch": "master", "commit": "7d131a8d3ba5016229e8a1d08bf8782acea98852" },
+  "lazy.nvim": { "branch": "main", "commit": "83493db50a434a4c5c648faf41e2ead80f96e478" },
+  "lualine.nvim": { "branch": "master", "commit": "8b56462bfb746760465264de41b4907310f113ec" },
+  "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" },
@@ -29,36 +32,35 @@
   "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "f3941c57ec85d7bdb44fa53fd858fd80f159018f" },
-  "neoconf.nvim": { "branch": "main", "commit": "8d7150e9d6113f01421c34c5aeb0f586afa232e0" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "459c60317cc1d251f6eb3b6f010d015d5d24b806" },
+  "neoconf.nvim": { "branch": "main", "commit": "db1d1bd45f4e91da6abc898281711fa47eda0ece" },
   "neodev.nvim": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" },
   "noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
   "none-ls.nvim": { "branch": "main", "commit": "ff3819c52ca04232fb70fbd6c1639de9abcbe122" },
-  "nui.nvim": { "branch": "main", "commit": "b81333d12f824dbed5eb231c8a4409a290fdd848" },
+  "nui.nvim": { "branch": "main", "commit": "756c59f46057cd2d43619cd3a6d4e01b2aa60295" },
   "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
   "nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" },
   "nvim-dap-go": { "branch": "main", "commit": "64f73400761e2d19459e664a52ea478f3a4420e7" },
   "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "d4542ac257d3c7ee4131350db6179ae6340ce40b" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "a5fc69240869c0fee8ff176bc9e4efdf8bdfb596" },
   "nvim-lint": { "branch": "master", "commit": "e824adb9bc01647f71e55457353a68f0f37f9931" },
-  "nvim-lspconfig": { "branch": "master", "commit": "c932a56bf25167b1e88d2a1ebe35bb774b41019a" },
+  "nvim-lspconfig": { "branch": "master", "commit": "94cf4adb81158817520e18d2174963d8e1424df9" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "3712ff0cdf4f9f877d9ca708d835a877d9a0abaf" },
-  "nvim-treesitter": { "branch": "master", "commit": "63ca90eaa3ce1cc668add8828a9e3d6728dbbdf1" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "b8d1ffe58a88e0356da56b167373e89c4579ce15" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "95933e762e28f9d38b572d65e7e4da9d2f4d90cb" },
+  "nvim-treesitter": { "branch": "master", "commit": "57205313dda0ac82ac69e21d5e2a80f3297c14cc" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "b8b7e52c1517d401d7c519787d5dc4528c41291a" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "b7a0bfa3e93697ca5b61b15df633404bf8f45883" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
   "nvim-web-devicons": { "branch": "master", "commit": "4adea17610d140a99c313e3f79a9dc01825d59ae" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
-  "plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" },
-  "rasmus.nvim": { "branch": "main", "commit": "f824de95d446686e479781c0c2b778c177da528f" },
-  "rust-tools.nvim": { "branch": "master", "commit": "676187908a1ce35ffcd727c654ed68d851299d3e" },
+  "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" },
+  "rustaceanvim": { "branch": "master", "commit": "387ca846d632f8c90631536341ca1778b4c2c497" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
-  "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
-  "telescope.nvim": { "branch": "master", "commit": "aa83606299c5beeaf80e656efbf07bde258db7be" },
+  "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
+  "telescope.nvim": { "branch": "master", "commit": "7472420f8734c710bd7009081cef9b97f08a3821" },
   "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
   "tokyonight.nvim": { "branch": "main", "commit": "610179f7f12db3d08540b6cc61434db2eaecbcff" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index b4773e7..9affbf2 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -32,7 +32,7 @@ require("lazy").setup({
 		version = false, -- always use the latest git commit
 		-- version = "*", -- try installing the latest stable version for plugins that support semver
 	},
-	install = { colorscheme = { "eyes" } },
+	-- install = { colorscheme = { "eyes" } },
 	checker = { enabled = true }, -- automatically check for plugin updates
 	performance = {
 		rtp = {
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 9ad67d2..30f2076 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,20 +1,32 @@
 return {
-	{
-		"kvrohit/rasmus.nvim",
-		dependencies = {
-			{ "tjdevries/colorbuddy.nvim" },
-		},
-		lazy = false,
-		priority = 1000,
-		config = function()
-			vim.g.rasmus_variant = "monochrome"
-			vim.g.rasmus_bold_functions = true
-			vim.g.rasmus_bold_comments = false
-			vim.g.rasmus_italic_comments = true
-			vim.g.rasmus_transparent = true
+	-- {
+	-- 	"kvrohit/rasmus.nvim",
+	-- 	dependencies = {
+	-- 		{ "tjdevries/colorbuddy.nvim" },
+	-- 	},
+	-- 	lazy = false,
+	-- 	priority = 1000,
+	-- 	config = function()
+	-- 		vim.g.rasmus_variant = "monochrome"
+	-- 		vim.g.rasmus_bold_functions = true
+	-- 		vim.g.rasmus_bold_comments = false
+	-- 		vim.g.rasmus_italic_comments = true
+	-- 		vim.g.rasmus_transparent = true
+	--
+	-- 		-- vim.cmd("colorscheme rasmus")
+	-- 	end,
+	-- },
 
-			-- vim.cmd("colorscheme rasmus")
-		end,
+	-- {
+	-- 	"LazyVim/LazyVim",
+	-- 	opts = {
+	-- 		colorscheme = "default",
+	-- 	},
+	-- },
+
+	{
+		"p00f/alabaster.nvim",
+		lazy = false,
 	},
 
 	{
@@ -39,9 +51,7 @@ return {
 						undercurl = true,
 					},
 					colors = {
-						-- background = "#0d1219",
 						background = "#11171d",
-						-- background = "#1e2835",
 						primary = "#FFECD3",
 						secondary = "#B0BEC5",
 						--
@@ -51,6 +61,12 @@ return {
 				})
 				--
 				local Color, colors, Group, groups, styles = require("colorbuddy").setup()
+
+				Color.new("ColorColumn", "#171e26")
+				Group.new("ColorColumn", nil, colors.ColorColumn)
+				Color.new("normal", "#e3e0cd")
+				Group.new("Normal", colors.normal, nil)
+
 				Color.new("string", "#D7CCC8")
 				Color.new("symbol", "#ECEFF1")
 				--
@@ -70,15 +86,15 @@ return {
 				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
 				--
 				Color.new("CursorFg", "#000000", styles.nocombine)
-				Color.new("CursorBg", "#00d992", styles.nocombine)
+				Color.new("CursorBg", "#23fdb6", styles.nocombine)
 				Group.new("Cursor", colors.CursorFg, colors.CursorBg)
 				Color.new("CursorLine", "#141b23")
 				Group.new("CursorLine", nil, colors.CursorLine)
-				--
+
 				Color.new("NavicTextFg", "#5fbf9f")
 				Color.new("NavicTextBg", "#333333")
 				Color.new("NavicIcon", "#5fbf9f")
-				--
+
 				Group.new("NavicText", colors.NavicTextFg, colors.NavicTextBg)
 				Group.new("NavicIcon", colors.NavicIcon, colors.NavicTextBg)
 				Group.link("NavicIconsFile", groups.NavicIcon)
@@ -107,16 +123,40 @@ return {
 				Group.link("NavicIconsEvent", groups.NavicIcon)
 				Group.link("NavicIconsOperator", groups.NavicIcon)
 				Group.link("NavicIconsTypeParameter", groups.NavicIcon)
-				--
+
 				Color.new("NormalFloatFg", "#b8d1ef", styles.nocombine)
 				Color.new("NormalFloatBg", "#335a88", styles.nocombine)
 				Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
-				--
+
 				Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
 				Color.new("PmenuSelBg", "#335a88", styles.nocombine)
 				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
+
+				Color.new("PmenuSelBg", "#335a88", styles.nocombine)
+				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
+
+				Color.new("TreesitterContext", "#233344", styles.nocombine)
+				Group.new("TreesitterContext", nil, colors.TreesitterContext)
+
+				-- Color.new("NonText", "#955252", styles.nocombine)
+				Color.new("NonText", "#955252", styles.nocombine)
+
+				Color.new("comment2", "#51a0cf")
+				Group.new("Comment", colors.NonText, nil, styles.italic + styles.bold)
+				Group.new("LspInlayHint", colors.comment2, nil, styles.italic)
+
+				Group.new("NonText", colors.NonText, nil, styles.italic)
+				Group.new("NonText", colors.NonText, nil, styles.italic)
+
+				Color.new("spelling", "#ffce60")
+				Group.new("SpellBad", colors.spelling, nil, styles.undercurl)
+
+				Color.new("LspInfoTitle", "#955252")
+				Group.new("LspInfoTitle", colors.LspInfoTitle, nil, styles.italic)
+				-- Group.new("DiagnosticHint", colors.LspInfoTitle, nil, styles.italic)
 				--
 				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
+				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
 				-- Color.new("TroubleBg", "#260200", styles.nocombine)
 				-- Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
 				-- Group.link("TroubleText", groups.TroubleNormal)
@@ -131,8 +171,9 @@ return {
 				--
 				Group.new("TelescopeTitle", colors.primary)
 				Group.new("TelescopeBorder", colors.secondary)
-				Group.new("@comment", colors.comment, nil, styles.italic)
+				Group.new("@comment", colors.comment, nil, styles.italic + styles.bold)
 				Group.new("@string", colors.string, nil, styles.italic)
+
 				--
 				Group.new("@keyword", colors.noir_2)
 				Group.new("@keyword.function", colors.noir_2)
@@ -143,8 +184,8 @@ return {
 				-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
 				Group.new("@type.builtin", colors.noir_2)
 				--
-				Group.new("@variable", colors.symbol, nil, styles.italic)
-				Group.new("Hlargs", colors.hlargs, nil, styles.italic)
+				Group.new("@variable", colors.symbol, nil)
+				Group.new("Hlargs", colors.hlargs, nil)
 				--
 				Group.new("@function", colors.noir_1, nil, styles.bold)
 				Group.new("@method", colors.noir_1, nil, styles.bold)
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index db126a3..3a94ba6 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -2,15 +2,14 @@ return {
 	{
 		"neovim/nvim-lspconfig",
 		opts = {
-			inlay_hints = { enabled = true },
-			capabilities = {
-				workspace = {
-					didChangeWatchedFiles = {
-						dynamicRegistration = false,
-					},
-				},
-			},
-			---@type lspconfig.options
+			-- inlay_hints = { enabled = true },
+			-- capabilities = {
+			-- 	workspace = {
+			-- 		didChangeWatchedFiles = {
+			-- 			dynamicRegistration = false,
+			-- 		},
+			-- 	},
+			-- },
 			servers = {
 				rust_analyzer = {
 					keys = {
@@ -46,11 +45,10 @@ return {
 					settings = {
 						yaml = {
 							schemas = {
-								kubernetes = "*.yaml",
+								-- kubernetes = "*.yaml",
 								["http://json.schemastore.org/github-workflow"] = ".github/workflows/*",
 								["http://json.schemastore.org/github-action"] = ".github/action.{yml,yaml}",
 								["http://json.schemastore.org/ansible-stable-2.9"] = "roles/tasks/*.{yml,yaml}",
-								["http://json.schemastore.org/kustomization"] = "kustomization.{yml,yaml}",
 								["http://json.schemastore.org/chart"] = "Chart.{yml,yaml}",
 								["https://json.schemastore.org/dependabot-v2"] = ".github/dependabot.{yml,yaml}",
 								["https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json"] = "*api*.{yml,yaml}",

From 0b405b354a8424d23be4886ca11e05594e81b992 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 8 Mar 2024 19:53:45 +0100
Subject: [PATCH 184/656] test-term: alignment

---
 bin/test-term.sh | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/bin/test-term.sh b/bin/test-term.sh
index 9780da5..2942743 100755
--- a/bin/test-term.sh
+++ b/bin/test-term.sh
@@ -1,19 +1,19 @@
-echo -ne '\e[0mnormal\e[0m\t\t\t\t\t'
+echo -ne '\e[0mnormal\e[0m\t\t\t'
 echo -e '\e[7m reverse \e[0m'
 
-echo -ne '\e[2mdim\e[0m\t\t\t\t\t\t'
+echo -ne '\e[2mdim\e[0m\t\t\t'
 echo -e '\e[7;2m reverse dim \e[0m'
 
-echo -ne '\e[1mbold\e[0m\t\t\t\t\t'
+echo -ne '\e[1mbold\e[0m\t\t\t'
 echo -e '\e[7;1m reverse bold \e[0m'
 
-echo -ne '\e[3mitalic\e[0m\t\t\t\t\t'
+echo -ne '\e[3mitalic\e[0m\t\t\t'
 echo -e '\e[7;3m reverse italic \e[0m'
 
-echo -ne '\e[2;3mdim italic\e[0m\t\t\t\t'
+echo -ne '\e[2;3mdim italic\e[0m\t\t'
 echo -e '\e[7;2;3m reverse dim italic \e[0m'
 
-echo -ne '\e[1;3mbold italic\e[0m\t\t\t\t'
+echo -ne '\e[1;3mbold italic\e[0m\t\t'
 echo -e '\e[7;1;3m reverse bold italic \e[0m'
 
 echo
@@ -55,7 +55,7 @@ echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format
 echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[0m'
 
 echo
-echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷"
+echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷 ❤️ "
 
 echo
 echo "Ligatures:"

From 09e2c2e0fd07c99479028f8858f0a34699fbe505 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 9 Mar 2024 18:34:05 +0100
Subject: [PATCH 185/656] zsh: use p10k for prompt with transient prompt

---
 .p10k.zsh | 1723 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 .zshrc    |   15 +-
 2 files changed, 1736 insertions(+), 2 deletions(-)
 create mode 100644 .p10k.zsh

diff --git a/.p10k.zsh b/.p10k.zsh
new file mode 100644
index 0000000..05d0a0e
--- /dev/null
+++ b/.p10k.zsh
@@ -0,0 +1,1723 @@
+# Generated by Powerlevel10k configuration wizard on 2024-03-09 at 10:48 CET.
+# Based on romkatv/powerlevel10k/config/p10k-lean.zsh, checksum 52020.
+# Wizard options: nerdfont-v3 + powerline, large icons, unicode, lean, 24h time,
+# 2 lines, dotted, no frame, darkest-ornaments, compact, few icons, concise,
+# transient_prompt, instant_prompt=verbose.
+# Type `p10k configure` to generate another config.
+#
+# Config for Powerlevel10k with lean prompt style. Type `p10k configure` to generate
+# your own config based on it.
+#
+# Tip: Looking for a nice color? Here's a one-liner to print colormap.
+#
+#   for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
+
+# Temporarily change options.
+'builtin' 'local' '-a' 'p10k_config_opts'
+[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
+[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
+[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
+'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
+
+() {
+  emulate -L zsh -o extended_glob
+
+  # Unset all configuration options. This allows you to apply configuration changes without
+  # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
+  unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
+
+  # Zsh >= 5.1 is required.
+  [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
+
+  # The list of segments shown on the left. Fill it with the most important segments.
+  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
+    # =========================[ Line #1 ]=========================
+    # os_icon               # os identifier
+    dir                     # current directory
+    # vcs                     # git status
+    # =========================[ Line #2 ]=========================
+    newline                 # \n
+    prompt_char             # prompt symbol
+  )
+
+  # The list of segments shown on the right. Fill it with less important segments.
+  # Right prompt on the last prompt line (where you are typing your commands) gets
+  # automatically hidden when the input line reaches it. Right prompt above the
+  # last prompt line gets hidden if it would overlap with left prompt.
+  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
+    # =========================[ Line #1 ]=========================
+    status                  # exit code of the last command
+    command_execution_time  # duration of the last command
+    background_jobs         # presence of background jobs
+    # direnv                  # direnv status (https://direnv.net/)
+    # asdf                    # asdf version manager (https://github.com/asdf-vm/asdf)
+    # virtualenv              # python virtual environment (https://docs.python.org/3/library/venv.html)
+    # anaconda                # conda environment (https://conda.io/)
+    # pyenv                   # python environment (https://github.com/pyenv/pyenv)
+    # goenv                   # go environment (https://github.com/syndbg/goenv)
+    # nodenv                  # node.js version from nodenv (https://github.com/nodenv/nodenv)
+    # nvm                     # node.js version from nvm (https://github.com/nvm-sh/nvm)
+    # nodeenv                 # node.js environment (https://github.com/ekalinin/nodeenv)
+    # node_version          # node.js version
+    # go_version            # go version (https://golang.org)
+    # rust_version          # rustc version (https://www.rust-lang.org)
+    # dotnet_version        # .NET version (https://dotnet.microsoft.com)
+    # php_version           # php version (https://www.php.net/)
+    # laravel_version       # laravel php framework version (https://laravel.com/)
+    # java_version          # java version (https://www.java.com/)
+    # package               # name@version from package.json (https://docs.npmjs.com/files/package.json)
+    # rbenv                   # ruby version from rbenv (https://github.com/rbenv/rbenv)
+    # rvm                     # ruby version from rvm (https://rvm.io)
+    # fvm                     # flutter version management (https://github.com/leoafarias/fvm)
+    # luaenv                  # lua version from luaenv (https://github.com/cehoffman/luaenv)
+    # jenv                    # java version from jenv (https://github.com/jenv/jenv)
+    # plenv                   # perl version from plenv (https://github.com/tokuhirom/plenv)
+    # perlbrew                # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
+    # phpenv                  # php version from phpenv (https://github.com/phpenv/phpenv)
+    # scalaenv                # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
+    # haskell_stack           # haskell version from stack (https://haskellstack.org/)
+    # kubecontext             # current kubernetes context (https://kubernetes.io/)
+    # terraform               # terraform workspace (https://www.terraform.io)
+    # terraform_version     # terraform version (https://www.terraform.io)
+    # aws                     # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
+    # aws_eb_env              # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
+    # azure                   # azure account name (https://docs.microsoft.com/en-us/cli/azure)
+    # gcloud                  # google cloud cli account and project (https://cloud.google.com/)
+    # google_app_cred         # google application credentials (https://cloud.google.com/docs/authentication/production)
+    # toolbox                 # toolbox name (https://github.com/containers/toolbox)
+    # context                 # user@hostname
+    # nordvpn                 # nordvpn connection status, linux only (https://nordvpn.com/)
+    # ranger                  # ranger shell (https://github.com/ranger/ranger)
+    # yazi                    # yazi shell (https://github.com/sxyazi/yazi)
+    # nnn                     # nnn shell (https://github.com/jarun/nnn)
+    # lf                      # lf shell (https://github.com/gokcehan/lf)
+    # xplr                    # xplr shell (https://github.com/sayanarijit/xplr)
+    # vim_shell               # vim shell indicator (:sh)
+    # midnight_commander      # midnight commander shell (https://midnight-commander.org/)
+    # nix_shell               # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
+    # chezmoi_shell           # chezmoi shell (https://www.chezmoi.io/)
+    # vpn_ip                # virtual private network indicator
+    # load                  # CPU load
+    # disk_usage            # disk usage
+    # ram                   # free RAM
+    # swap                  # used swap
+    # todo                    # todo items (https://github.com/todotxt/todo.txt-cli)
+    # timewarrior             # timewarrior tracking status (https://timewarrior.net/)
+    # taskwarrior             # taskwarrior task count (https://taskwarrior.org/)
+    # per_directory_history   # Oh My Zsh per-directory-history local/global indicator
+    # cpu_arch              # CPU architecture
+    # time                    # current time
+    vcs
+    # =========================[ Line #2 ]=========================
+    newline
+    # ip                    # ip address and bandwidth usage for a specified network interface
+    # public_ip             # public IP address
+    # proxy                 # system-wide http/https/ftp proxy
+    # battery               # internal battery
+    # wifi                  # wifi speed
+    # example               # example user-defined segment (see prompt_example function below)
+    context
+    time
+  )
+
+  # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
+  typeset -g POWERLEVEL9K_MODE=nerdfont-v3
+  # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
+  # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
+  typeset -g POWERLEVEL9K_ICON_PADDING=moderate
+
+  # Basic style options that define the overall look of your prompt. You probably don't want to
+  # change them.
+  typeset -g POWERLEVEL9K_BACKGROUND=                            # transparent background
+  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE=  # no surrounding whitespace
+  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' '  # separate segments with a space
+  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR=        # no end-of-line symbol
+
+  # When set to true, icons appear before content on both sides of the prompt. When set
+  # to false, icons go after content. If empty or not set, icons go before content in the left
+  # prompt and after content in the right prompt.
+  #
+  # You can also override it for a specific segment:
+  #
+  #   POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
+  #
+  # Or for a specific segment in specific state:
+  #
+  #   POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
+  typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true
+
+  # Add an empty line before each prompt.
+  # typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
+  p10k-on-pre-prompt() p10k display empty_line=print
+
+  # Connect left prompt lines with these symbols.
+  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=
+  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX=
+  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=
+  # Connect right prompt lines with these symbols.
+  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=
+  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=
+  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=
+
+  # The left end of left prompt.
+  typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
+  # The right end of right prompt.
+  typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=
+
+  # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll
+  # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and
+  # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below.
+  typeset -g POWERLEVEL9K_SHOW_RULER=false
+  typeset -g POWERLEVEL9K_RULER_CHAR='─'        # reasonable alternative: '·'
+  typeset -g POWERLEVEL9K_RULER_FOREGROUND=238
+
+  # Filler between left and right prompt on the first prompt line. You can set it to '·' or '─'
+  # to make it easier to see the alignment between left and right prompt and to separate prompt
+  # from command output. It serves the same purpose as ruler (see above) without increasing
+  # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false
+  # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact
+  # prompt.
+  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR='⎯' #'·' '⋯' '⎯' '·'
+  if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
+    # The color of the filler.
+    typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=235
+    # Add a space between the end of left prompt and the filler.
+    typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' '
+    # Add a space between the filler and the start of right prompt.
+    typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' '
+    # Start filler from the edge of the screen if there are no left segments on the first line.
+    typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
+    # End filler on the edge of the screen if there are no right segments on the first line.
+    typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
+  fi
+
+  #################################[ os_icon: os identifier ]##################################
+  # OS identifier color.
+  typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
+
+  ################################[ prompt_char: prompt symbol ]################################
+  # Green prompt symbol if the last command succeeded.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=253
+  # Red prompt symbol if the last command failed.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=253
+  # Default prompt symbol.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%%' #'❯'
+  # Prompt symbol in command vi mode.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
+  # Prompt symbol in visual vi mode.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
+  # Prompt symbol in overwrite vi mode.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
+  # No line terminator if prompt_char is the last segment.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
+  # No line introducer if prompt_char is the first segment.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
+
+  ##################################[ dir: current directory ]##################################
+  # Default current directory color.
+  typeset -g POWERLEVEL9K_DIR_FOREGROUND=241
+  # If directory is too long, shorten some of its segments to the shortest possible unique
+  # prefix. The shortened directory can be tab-completed to the original.
+  typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
+  # Replace removed segment suffixes with this symbol.
+  typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
+  # Color of the shortened directory segments.
+  typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
+  # Color of the anchor directory segments. Anchor segments are never shortened. The first
+  # segment is always an anchor.
+  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=245
+  # Display anchor directory segments in bold.
+  typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=false
+  # Don't shorten directories that contain any of these files. They are anchors.
+  local anchor_files=(
+    .bzr
+    .citc
+    .git
+    .hg
+    .node-version
+    .python-version
+    .go-version
+    .ruby-version
+    .lua-version
+    .java-version
+    .perl-version
+    .php-version
+    .tool-versions
+    .shorten_folder_marker
+    .svn
+    .terraform
+    CVS
+    Cargo.toml
+    composer.json
+    go.mod
+    package.json
+    stack.yaml
+  )
+  typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
+  # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
+  # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
+  # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
+  # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
+  # and other directories don't.
+  #
+  # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
+  # This moves the truncation point to the right (positive offset) or to the left (negative offset)
+  # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
+  # respectively.
+  typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
+  # Don't shorten this many last directory segments. They are anchors.
+  typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
+  # Shorten directory if it's longer than this even if there is space for it. The value can
+  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
+  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
+  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
+  # If set to `0`, directory will always be shortened to its minimum length.
+  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
+  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
+  # many columns for typing commands.
+  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
+  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
+  # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
+  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
+  # If set to true, embed a hyperlink into the directory. Useful for quickly
+  # opening a directory in the file manager simply by clicking the link.
+  # Can also be handy when the directory is shortened, as it allows you to see
+  # the full directory that was used in previous commands.
+  typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
+
+  # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
+  # and POWERLEVEL9K_DIR_CLASSES below.
+  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
+
+  # The default icon shown next to non-writable and non-existent directories when
+  # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
+  # typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
+
+  # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
+  # directories. It must be an array with 3 * N elements. Each triplet consists of:
+  #
+  #   1. A pattern against which the current directory ($PWD) is matched. Matching is done with
+  #      extended_glob option enabled.
+  #   2. Directory class for the purpose of styling.
+  #   3. An empty string.
+  #
+  # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
+  #
+  # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
+  # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_DIR_CLASSES=(
+  #     '~/work(|/*)'  WORK     ''
+  #     '~(|/*)'       HOME     ''
+  #     '*'            DEFAULT  '')
+  #
+  # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
+  # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
+  # WORK_NON_EXISTENT.
+  #
+  # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
+  # option to define custom colors and icons for different directory classes.
+  #
+  #   # Styling for WORK.
+  #   typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
+  #   typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103
+  #   typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39
+  #
+  #   # Styling for WORK_NOT_WRITABLE.
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
+  #
+  #   # Styling for WORK_NON_EXISTENT.
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
+  #
+  # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
+  # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
+  # back to POWERLEVEL9K_DIR_FOREGROUND.
+  #
+  typeset -g POWERLEVEL9K_DIR_CLASSES=()
+
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '
+
+  #####################################[ vcs: git status ]######################################
+  # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
+  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\UE0A0'
+
+  # Untracked files icon. It's really a question mark, your font isn't broken.
+  # Change the value of this parameter to show a different icon.
+  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
+
+  # Formatter for Git status.
+  #
+  # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
+  #
+  # You can edit the function to customize how Git status looks.
+  #
+  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
+  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
+  function my_git_formatter() {
+    emulate -L zsh
+
+    if [[ -n $P9K_CONTENT ]]; then
+      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
+      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
+      typeset -g my_git_format=$P9K_CONTENT
+      return
+    fi
+
+    if (( $1 )); then
+      # Styling for up-to-date Git status.
+      local       meta='%f'     # default foreground
+      local      clean='%35F'   # green foreground
+      local   modified='%178F'  # yellow foreground
+      local  untracked='%39F'   # blue foreground
+      local conflicted='%196F'  # red foreground
+    else
+      # Styling for incomplete and stale Git status.
+      local       meta='%244F'  # grey foreground
+      local      clean='%244F'  # grey foreground
+      local   modified='%244F'  # grey foreground
+      local  untracked='%244F'  # grey foreground
+      local conflicted='%244F'  # grey foreground
+    fi
+
+    local res
+
+    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
+      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
+      # If local branch name is at most 32 characters long, show it in full.
+      # Otherwise show the first 12 … the last 12.
+      # Tip: To always show local branch name in full without truncation, delete the next line.
+      (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
+      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
+    fi
+
+    if [[ -n $VCS_STATUS_TAG
+          # Show tag only if not on a branch.
+          # Tip: To always show tag, delete the next line.
+          && -z $VCS_STATUS_LOCAL_BRANCH  # <-- this line
+        ]]; then
+      local tag=${(V)VCS_STATUS_TAG}
+      # If tag name is at most 32 characters long, show it in full.
+      # Otherwise show the first 12 … the last 12.
+      # Tip: To always show tag name in full without truncation, delete the next line.
+      (( $#tag > 32 )) && tag[13,-13]="…"  # <-- this line
+      res+="${meta}#${clean}${tag//\%/%%}"
+    fi
+
+    # Display the current Git commit if there is no branch and no tag.
+    # Tip: To always display the current Git commit, delete the next line.
+    [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] &&  # <-- this line
+      res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
+
+    # Show tracking branch name if it differs from local branch.
+    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
+      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
+    fi
+
+    # Display "wip" if the latest commit's summary contains "wip" or "WIP".
+    if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
+      res+=" ${modified}wip"
+    fi
+
+    if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
+      # ⇣42 if behind the remote.
+      (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
+      # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
+      (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
+      (( VCS_STATUS_COMMITS_AHEAD  )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
+    elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
+      # Tip: Uncomment the next line to display '=' if up to date with the remote.
+      # res+=" ${clean}="
+    fi
+
+    # ⇠42 if behind the push remote.
+    (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
+    (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
+    # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
+    (( VCS_STATUS_PUSH_COMMITS_AHEAD  )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
+    # *42 if have stashes.
+    (( VCS_STATUS_STASHES        )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
+    # 'merge' if the repo is in an unusual state.
+    [[ -n $VCS_STATUS_ACTION     ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
+    # ~42 if have merge conflicts.
+    (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
+    # +42 if have staged changes.
+    (( VCS_STATUS_NUM_STAGED     )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
+    # !42 if have unstaged changes.
+    (( VCS_STATUS_NUM_UNSTAGED   )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
+    # ?42 if have untracked files. It's really a question mark, your font isn't broken.
+    # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
+    # Remove the next line if you don't want to see untracked files at all.
+    (( VCS_STATUS_NUM_UNTRACKED  )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
+    # "─" if the number of unstaged files is unknown. This can happen due to
+    # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
+    # than the number of files in the Git index, or due to bash.showDirtyState being set to false
+    # in the repository config. The number of staged and untracked files may also be unknown
+    # in this case.
+    (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─"
+
+    typeset -g my_git_format=$res
+  }
+  functions -M my_git_formatter 2>/dev/null
+
+  # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
+  # more than this many files in the index. Negative value means infinity.
+  #
+  # If you are working in Git repositories with tens of millions of files and seeing performance
+  # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
+  # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
+  # config: `git config bash.showDirtyState false`.
+  typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
+
+  # Don't show Git status in prompt for repositories whose workdir matches this pattern.
+  # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
+  # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
+  typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
+
+  # Disable the default Git status formatting.
+  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
+  # Install our own Git status formatter.
+  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION=$'%{\e[3m%}${$((my_git_formatter(1)))+${my_git_format}}'
+  typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
+  # Enable counters for staged, unstaged, etc.
+  typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
+
+  # Icon color.
+  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=49
+  typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244
+  # Custom icon.
+  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION=
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_VCS_PREFIX='%fon '
+
+  # Show status of repositories of these types. You can add svn and/or hg if you are
+  # using them. If you do, your prompt may become slow even when your current directory
+  # isn't in an svn or hg repository.
+  typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
+
+  # These settings are used for repositories other than Git or when gitstatusd fails and
+  # Powerlevel10k has to fall back to using vcs_info.
+  typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
+  typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
+  typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178
+
+  ##########################[ status: exit code of the last command ]###########################
+  # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
+  # style them independently from the regular OK and ERROR state.
+  typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
+
+  # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
+  # it will signify success by turning green.
+  typeset -g POWERLEVEL9K_STATUS_OK=false
+  typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70
+  typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔'
+
+  # Status when some part of a pipe command fails but the overall exit status is zero. It may look
+  # like this: 1|0.
+  typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
+  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70
+  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔'
+
+  # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
+  # it will signify error by turning red.
+  typeset -g POWERLEVEL9K_STATUS_ERROR=false
+  typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160
+  typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘'
+
+  # Status when the last command was terminated by a signal.
+  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
+  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160
+  # Use terse signal names: "INT" instead of "SIGINT(2)".
+  typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
+  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘'
+
+  # Status when some part of a pipe command fails and the overall exit status is also non-zero.
+  # It may look like this: 1|0.
+  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
+  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160
+  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
+
+  ###################[ command_execution_time: duration of the last command ]###################
+  # Show duration of the last command if takes at least this many seconds.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
+  # Show this many fractional digits. Zero means round to seconds.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
+  # Execution time color.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=101
+  # Duration format: 1d 2h 3m 4s.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
+  # Custom icon.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION=
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%ftook '
+
+  #######################[ background_jobs: presence of background jobs ]#######################
+  # Don't show the number of background jobs.
+  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
+  # Background jobs color.
+  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=70
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #######################[ direnv: direnv status (https://direnv.net/) ]########################
+  # Direnv color.
+  typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
+  # Default asdf color. Only used to display tools for which there is no color override (see below).
+  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND.
+  typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66
+
+  # There are four parameters that can be used to hide asdf tools. Each parameter describes
+  # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at
+  # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to
+  # hide a tool, it gets shown.
+  #
+  # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and
+  # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands:
+  #
+  #   asdf local  python 3.8.1
+  #   asdf global python 3.8.1
+  #
+  # After running both commands the current python version is 3.8.1 and its source is "local" as
+  # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false,
+  # it'll hide python version in this case because 3.8.1 is the same as the global version.
+  # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't
+  # contain "local".
+
+  # Hide tool versions that don't come from one of these sources.
+  #
+  # Available sources:
+  #
+  # - shell   `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable"
+  # - local   `asdf current` says "set by /some/not/home/directory/file"
+  # - global  `asdf current` says "set by /home/username/file"
+  #
+  # Note: If this parameter is set to (shell local global), it won't hide tools.
+  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES.
+  typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global)
+
+  # If set to false, hide tool versions that are the same as global.
+  #
+  # Note: The name of this parameter doesn't reflect its meaning at all.
+  # Note: If this parameter is set to true, it won't hide tools.
+  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW.
+  typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false
+
+  # If set to false, hide tool versions that are equal to "system".
+  #
+  # Note: If this parameter is set to true, it won't hide tools.
+  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM.
+  typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
+
+  # If set to non-empty value, hide tools unless there is a file matching the specified file pattern
+  # in the current directory, or its parent directory, or its grandparent directory, and so on.
+  #
+  # Note: If this parameter is set to empty value, it won't hide tools.
+  # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
+  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB.
+  #
+  # Example: Hide nodejs version when there is no package.json and no *.js files in the current
+  # directory, in `..`, in `../..` and so on.
+  #
+  #   typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json'
+  typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB=
+
+  # Ruby version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168
+  # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Python version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37
+  # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Go version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=37
+  # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Node.js version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70
+  # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Rust version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37
+  # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # .NET Core version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134
+  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_DOTNET_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Flutter version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38
+  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Lua version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32
+  # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Java version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32
+  # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Perl version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67
+  # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Erlang version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125
+  # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Elixir version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129
+  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Postgres version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31
+  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # PHP version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99
+  # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Haskell version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=172
+  # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Julia version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70
+  # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
+  # NordVPN connection indicator color.
+  typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39
+  # Hide NordVPN connection indicator when not connected.
+  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
+  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
+  # Ranger shell color.
+  typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  
+  ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
+  # Yazi shell color.
+  typeset -g POWERLEVEL9K_YAZI_FOREGROUND=178
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
+  # Nnn shell color.
+  typeset -g POWERLEVEL9K_NNN_FOREGROUND=72
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
+  # lf shell color.
+  typeset -g POWERLEVEL9K_LF_FOREGROUND=72
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
+  # xplr shell color.
+  typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########################[ vim_shell: vim shell indicator (:sh) ]###########################
+  # Vim shell indicator color.
+  typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]######
+  # Midnight Commander shell color.
+  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]##
+  # Nix shell color.
+  typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74
+
+  # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
+  # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
+
+  # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
+  # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
+  # chezmoi shell color.
+  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=33
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##################################[ disk_usage: disk usage ]##################################
+  # Colors for different levels of disk usage.
+  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35
+  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220
+  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160
+  # Thresholds for different levels of disk usage (percentage points).
+  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90
+  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95
+  # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent.
+  typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######################################[ ram: free RAM ]#######################################
+  # RAM color.
+  typeset -g POWERLEVEL9K_RAM_FOREGROUND=66
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #####################################[ swap: used swap ]######################################
+  # Swap color.
+  typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######################################[ load: CPU load ]######################################
+  # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
+  typeset -g POWERLEVEL9K_LOAD_WHICH=5
+  # Load color when load is under 50%.
+  typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66
+  # Load color when load is between 50% and 70%.
+  typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178
+  # Load color when load is over 70%.
+  typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################
+  # Todo color.
+  typeset -g POWERLEVEL9K_TODO_FOREGROUND=110
+  # Hide todo when the total number of tasks is zero.
+  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true
+  # Hide todo when the number of tasks after filtering is zero.
+  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false
+
+  # Todo format. The following parameters are available within the expansion.
+  #
+  # - P9K_TODO_TOTAL_TASK_COUNT     The total number of tasks.
+  # - P9K_TODO_FILTERED_TASK_COUNT  The number of tasks after filtering.
+  #
+  # These variables correspond to the last line of the output of `todo.sh -p ls`:
+  #
+  #   TODO: 24 of 42 tasks shown
+  #
+  # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT.
+  #
+  # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############
+  # Timewarrior color.
+  typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110
+  # If the tracked task is longer than 24 characters, truncate and append "…".
+  # Tip: To always display tasks without truncation, delete the following parameter.
+  # Tip: To hide task names and display just the icon when time tracking is enabled, set the
+  # value of the following parameter to "".
+  typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
+  # Taskwarrior color.
+  typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74
+
+  # Taskwarrior segment format. The following parameters are available within the expansion.
+  #
+  # - P9K_TASKWARRIOR_PENDING_COUNT   The number of pending tasks: `task +PENDING count`.
+  # - P9K_TASKWARRIOR_OVERDUE_COUNT   The number of overdue tasks: `task +OVERDUE count`.
+  #
+  # Zero values are represented as empty parameters.
+  #
+  # The default format:
+  #
+  #   '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT'
+  #
+  # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
+  # Color when using local/global history.
+  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=135
+  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=130
+
+  # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
+  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
+  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################################[ cpu_arch: CPU architecture ]################################
+  # CPU architecture color.
+  typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172
+
+  # Hide the segment when on a specific CPU architecture.
+  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
+  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##################################[ context: user@hostname ]##################################
+  # Context color when running with privileges.
+  typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178
+  # Context color in SSH without privileges.
+  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=239
+  # Default context color (no privileges, no SSH).
+  typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=239
+
+  # Context format when running with privileges: bold user@hostname.
+  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m'
+  # Context format when in SSH without privileges: user@hostname.
+  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%{\e[3m%}%n@%m'
+  # Default context format (no privileges, no SSH): user@hostname.
+  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
+
+  # Don't show context unless running with privileges or in SSH.
+  # Tip: Remove the next line to always show context.
+  typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=''
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%fwith '
+
+  ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
+  # Python virtual environment color.
+  typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37
+  # Don't show Python version next to the virtual environment name.
+  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
+  # If set to "false", won't show virtualenv if pyenv is already shown.
+  # If set to "if-different", won't show virtualenv if it's the same as pyenv.
+  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
+  # Separate environment name from Python version only with a space.
+  typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #####################[ anaconda: conda environment (https://conda.io/) ]######################
+  # Anaconda environment color.
+  typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37
+
+  # Anaconda segment format. The following parameters are available within the expansion.
+  #
+  # - CONDA_PREFIX                 Absolute path to the active Anaconda/Miniconda environment.
+  # - CONDA_DEFAULT_ENV            Name of the active Anaconda/Miniconda environment.
+  # - CONDA_PROMPT_MODIFIER        Configurable prompt modifier (see below).
+  # - P9K_ANACONDA_PYTHON_VERSION  Current python version (python --version).
+  #
+  # CONDA_PROMPT_MODIFIER can be configured with the following command:
+  #
+  #   conda config --set env_prompt '({default_env}) '
+  #
+  # The last argument is a Python format string that can use the following variables:
+  #
+  # - prefix       The same as CONDA_PREFIX.
+  # - default_env  The same as CONDA_DEFAULT_ENV.
+  # - name         The last segment of CONDA_PREFIX.
+  # - stacked_env  Comma-separated list of names in the environment stack. The first element is
+  #                always the same as default_env.
+  #
+  # Note: '({default_env}) ' is the default value of env_prompt.
+  #
+  # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
+  # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
+  # is empty.
+  typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
+  # Pyenv color.
+  typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37
+  # Hide python version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global)
+  # If set to false, hide python version if it's the same as global:
+  # $(pyenv version-name) == $(pyenv global).
+  typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide python version if it's equal to "system".
+  typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true
+
+  # Pyenv segment format. The following parameters are available within the expansion.
+  #
+  # - P9K_CONTENT                Current pyenv environment (pyenv version-name).
+  # - P9K_PYENV_PYTHON_VERSION   Current python version (python --version).
+  #
+  # The default format has the following logic:
+  #
+  # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
+  #    starts with "$P9K_PYENV_PYTHON_VERSION/".
+  # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
+  typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################
+  # Goenv color.
+  typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37
+  # Hide go version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global)
+  # If set to false, hide go version if it's the same as global:
+  # $(goenv version-name) == $(goenv global).
+  typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide go version if it's equal to "system".
+  typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
+  # Nodenv color.
+  typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70
+  # Hide node version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global)
+  # If set to false, hide node version if it's the same as global:
+  # $(nodenv version-name) == $(nodenv global).
+  typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide node version if it's equal to "system".
+  typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
+  # Nvm color.
+  typeset -g POWERLEVEL9K_NVM_FOREGROUND=70
+  # If set to false, hide node version if it's the same as default:
+  # $(nvm version current) == $(nvm version default).
+  typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide node version if it's equal to "system".
+  typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
+  # Nodeenv color.
+  typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70
+  # Don't show Node version next to the environment name.
+  typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
+  # Separate environment name from Node version only with a space.
+  typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##############################[ node_version: node.js version ]###############################
+  # Node version color.
+  typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70
+  # Show node version only when in a directory tree containing package.json.
+  typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #######################[ go_version: go version (https://golang.org) ]########################
+  # Go version color.
+  typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37
+  # Show go version only when in a go project subdirectory.
+  typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
+  # Rust version color.
+  typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37
+  # Show rust version only when in a rust project subdirectory.
+  typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
+  # .NET version color.
+  typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134
+  # Show .NET version only when in a .NET project subdirectory.
+  typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #####################[ php_version: php version (https://www.php.net/) ]######################
+  # PHP version color.
+  typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99
+  # Show PHP version only when in a PHP project subdirectory.
+  typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]###########
+  # Laravel version color.
+  typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ####################[ java_version: java version (https://www.java.com/) ]####################
+  # Java version color.
+  typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=32
+  # Show java version only when in a java project subdirectory.
+  typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true
+  # Show brief version.
+  typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]####
+  # Package color.
+  typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=117
+  # Package format. The following parameters are available within the expansion.
+  #
+  # - P9K_PACKAGE_NAME     The value of `name` field in package.json.
+  # - P9K_PACKAGE_VERSION  The value of `version` field in package.json.
+  #
+  # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}'
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
+  # Rbenv color.
+  typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168
+  # Hide ruby version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
+  # If set to false, hide ruby version if it's the same as global:
+  # $(rbenv version-name) == $(rbenv global).
+  typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide ruby version if it's equal to "system".
+  typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
+  # Rvm color.
+  typeset -g POWERLEVEL9K_RVM_FOREGROUND=168
+  # Don't show @gemset at the end.
+  typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
+  # Don't show ruby- at the front.
+  typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############
+  # Fvm color.
+  typeset -g POWERLEVEL9K_FVM_FOREGROUND=38
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]###########
+  # Lua color.
+  typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32
+  # Hide lua version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global)
+  # If set to false, hide lua version if it's the same as global:
+  # $(luaenv version-name) == $(luaenv global).
+  typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide lua version if it's equal to "system".
+  typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################
+  # Java color.
+  typeset -g POWERLEVEL9K_JENV_FOREGROUND=32
+  # Hide java version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global)
+  # If set to false, hide java version if it's the same as global:
+  # $(jenv version-name) == $(jenv global).
+  typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide java version if it's equal to "system".
+  typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############
+  # Perl color.
+  typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67
+  # Hide perl version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global)
+  # If set to false, hide perl version if it's the same as global:
+  # $(plenv version-name) == $(plenv global).
+  typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide perl version if it's equal to "system".
+  typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
+  # Perlbrew color.
+  typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
+  # Show perlbrew version only when in a perl project subdirectory.
+  typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
+  # Don't show "perl-" at the front.
+  typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
+  # PHP color.
+  typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99
+  # Hide php version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global)
+  # If set to false, hide php version if it's the same as global:
+  # $(phpenv version-name) == $(phpenv global).
+  typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide php version if it's equal to "system".
+  typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
+  # Scala color.
+  typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160
+  # Hide scala version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
+  # If set to false, hide scala version if it's the same as global:
+  # $(scalaenv version-name) == $(scalaenv global).
+  typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide scala version if it's equal to "system".
+  typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
+  # Haskell color.
+  typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172
+  # Hide haskell version if it doesn't come from one of these sources.
+  #
+  #   shell:  version is set by STACK_YAML
+  #   local:  version is set by stack.yaml up the directory tree
+  #   global: version is set by the implicit global project (~/.stack/global-project/stack.yaml)
+  typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local)
+  # If set to false, hide haskell version if it's the same as in the implicit global project.
+  typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
+  # Show kubecontext only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show kubecontext.
+  typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
+
+  # Kubernetes context classes for the purpose of using different colors, icons and expansions with
+  # different contexts.
+  #
+  # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
+  # in each pair defines a pattern against which the current kubernetes context gets matched.
+  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+  # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
+  # you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
+  # first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
+  #     '*prod*'  PROD
+  #     '*test*'  TEST
+  #     '*'       DEFAULT)
+  #
+  # If your current kubernetes context is "deathray-testing/default", its class is TEST
+  # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+  typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
+      # '*prod*'  PROD    # These values are examples that are unlikely
+      # '*test*'  TEST    # to match your needs. Customize them as needed.
+      '*'       DEFAULT)
+  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134
+  # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
+  # segment. Parameter expansions are very flexible and fast, too. See reference:
+  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
+  #
+  # Within the expansion the following parameters are always available:
+  #
+  # - P9K_CONTENT                The content that would've been displayed if there was no content
+  #                              expansion defined.
+  # - P9K_KUBECONTEXT_NAME       The current context's name. Corresponds to column NAME in the
+  #                              output of `kubectl config get-contexts`.
+  # - P9K_KUBECONTEXT_CLUSTER    The current context's cluster. Corresponds to column CLUSTER in the
+  #                              output of `kubectl config get-contexts`.
+  # - P9K_KUBECONTEXT_NAMESPACE  The current context's namespace. Corresponds to column NAMESPACE
+  #                              in the output of `kubectl config get-contexts`. If there is no
+  #                              namespace, the parameter is set to "default".
+  # - P9K_KUBECONTEXT_USER       The current context's user. Corresponds to column AUTHINFO in the
+  #                              output of `kubectl config get-contexts`.
+  #
+  # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
+  # the following extra parameters are available:
+  #
+  # - P9K_KUBECONTEXT_CLOUD_NAME     Either "gke" or "eks".
+  # - P9K_KUBECONTEXT_CLOUD_ACCOUNT  Account/project ID.
+  # - P9K_KUBECONTEXT_CLOUD_ZONE     Availability zone.
+  # - P9K_KUBECONTEXT_CLOUD_CLUSTER  Cluster.
+  #
+  # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
+  # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
+  #
+  #   - P9K_KUBECONTEXT_CLOUD_NAME=gke
+  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
+  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
+  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
+  #
+  # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
+  #
+  #   - P9K_KUBECONTEXT_CLOUD_NAME=eks
+  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
+  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
+  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
+  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
+  # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
+  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
+  # Append the current context's namespace if it's not "default".
+  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
+
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat '
+
+  ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
+  # Don't show terraform workspace if it's literally "default".
+  typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
+  # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
+  # in each pair defines a pattern against which the current terraform workspace gets matched.
+  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+  # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters,
+  # you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The
+  # first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
+  #     '*prod*'  PROD
+  #     '*test*'  TEST
+  #     '*'       OTHER)
+  #
+  # If your current terraform workspace is "project_test", its class is TEST because "project_test"
+  # doesn't match the pattern '*prod*' but does match '*test*'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28
+  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+  typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
+      # '*prod*'  PROD    # These values are examples that are unlikely
+      # '*test*'  TEST    # to match your needs. Customize them as needed.
+      '*'         OTHER)
+  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38
+  # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #############[ terraform_version: terraform version (https://www.terraform.io) ]##############
+  # Terraform version color.
+  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
+  # Show aws only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show aws.
+  typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
+
+  # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
+  # in each pair defines a pattern against which the current AWS profile gets matched.
+  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+  # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
+  # you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The
+  # first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_AWS_CLASSES=(
+  #     '*prod*'  PROD
+  #     '*test*'  TEST
+  #     '*'       DEFAULT)
+  #
+  # If your current AWS profile is "company_test", its class is TEST
+  # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
+  #   typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+  typeset -g POWERLEVEL9K_AWS_CLASSES=(
+      # '*prod*'  PROD    # These values are examples that are unlikely
+      # '*test*'  TEST    # to match your needs. Customize them as needed.
+      '*'       DEFAULT)
+  typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208
+  # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # AWS segment format. The following parameters are available within the expansion.
+  #
+  # - P9K_AWS_PROFILE  The name of the current AWS profile.
+  # - P9K_AWS_REGION   The region associated with the current AWS profile.
+  typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
+
+  #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
+  # AWS Elastic Beanstalk environment color.
+  typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
+  # Show azure only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show azure.
+  typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
+
+  # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
+  # in each pair defines a pattern against which the current azure account name gets matched.
+  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+  # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
+  # you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
+  # first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_AZURE_CLASSES=(
+  #     '*prod*'  PROD
+  #     '*test*'  TEST
+  #     '*'       OTHER)
+  #
+  # If your current azure account is "company_test", its class is TEST because "company_test"
+  # doesn't match the pattern '*prod*' but does match '*test*'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=28
+  #   typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+  typeset -g POWERLEVEL9K_AZURE_CLASSES=(
+      # '*prod*'  PROD    # These values are examples that are unlikely
+      # '*test*'  TEST    # to match your needs. Customize them as needed.
+      '*'         OTHER)
+
+  # Azure account name color.
+  typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=32
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
+  # Show gcloud only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show gcloud.
+  typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
+   # Google cloud color.
+  typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32
+
+  # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or
+  # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative
+  # enough. You can use the following parameters in the expansions. Each of them corresponds to the
+  # output of `gcloud` tool.
+  #
+  #   Parameter                | Source
+  #   -------------------------|--------------------------------------------------------------------
+  #   P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)'
+  #   P9K_GCLOUD_ACCOUNT       | gcloud config get-value account
+  #   P9K_GCLOUD_PROJECT_ID    | gcloud config get-value project
+  #   P9K_GCLOUD_PROJECT_NAME  | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
+  #
+  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
+  #
+  # Obtaining project name requires sending a request to Google servers. This can take a long time
+  # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
+  # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets
+  # set and gcloud prompt segment transitions to state COMPLETE.
+  #
+  # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL
+  # and COMPLETE. You can also hide gcloud in state PARTIAL by setting
+  # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and
+  # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty.
+  typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}'
+  typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}'
+
+  # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name
+  # this often. Negative value disables periodic polling. In this mode project name is retrieved
+  # only when the current configuration, account or project id changes.
+  typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
+  # Show google_app_cred only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show google_app_cred.
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
+
+  # Google application credentials classes for the purpose of using different colors, icons and
+  # expansions with different credentials.
+  #
+  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first
+  # element in each pair defines a pattern against which the current kubernetes context gets
+  # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion
+  # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION
+  # parameters, you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order.
+  # The first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
+  #     '*:*prod*:*'  PROD
+  #     '*:*test*:*'  TEST
+  #     '*'           DEFAULT)
+  #
+  # If your current Google application credentials is "service_account deathray-testing x@y.com",
+  # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28
+  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID'
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
+      # '*:*prod*:*'  PROD    # These values are examples that are unlikely
+      # '*:*test*:*'  TEST    # to match your needs. Customize them as needed.
+      '*'             DEFAULT)
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32
+  # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by
+  # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference:
+  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
+  #
+  # You can use the following parameters in the expansion. Each of them corresponds to one of the
+  # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS.
+  #
+  #   Parameter                        | JSON key file field
+  #   ---------------------------------+---------------
+  #   P9K_GOOGLE_APP_CRED_TYPE         | type
+  #   P9K_GOOGLE_APP_CRED_PROJECT_ID   | project_id
+  #   P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
+  #
+  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
+
+  ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
+  # Toolbox color.
+  typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178
+  # Don't display the name of the toolbox if it matches fedora-toolbox-*.
+  typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%fin '
+
+  ###############################[ public_ip: public IP address ]###############################
+  # Public IP color.
+  typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ########################[ vpn_ip: virtual private network indicator ]#########################
+  # VPN IP color.
+  typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81
+  # When on VPN, show just an icon without the IP address.
+  # Tip: To display the private IP address when on VPN, remove the next line.
+  typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
+  # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
+  # to see the name of the interface.
+  typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
+  # If set to true, show one segment per matching network interface. If set to false, show only
+  # one segment corresponding to the first matching network interface.
+  # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
+  typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ ip: ip address and bandwidth usage for a specified network interface ]###########
+  # IP color.
+  typeset -g POWERLEVEL9K_IP_FOREGROUND=38
+  # The following parameters are accessible within the expansion:
+  #
+  #   Parameter             | Meaning
+  #   ----------------------+-------------------------------------------
+  #   P9K_IP_IP             | IP address
+  #   P9K_IP_INTERFACE      | network interface
+  #   P9K_IP_RX_BYTES       | total number of bytes received
+  #   P9K_IP_TX_BYTES       | total number of bytes sent
+  #   P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
+  #   P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
+  #   P9K_IP_RX_RATE        | receive rate (since last prompt)
+  #   P9K_IP_TX_RATE        | send rate (since last prompt)
+  typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='$P9K_IP_IP${P9K_IP_RX_RATE:+ %70F⇣$P9K_IP_RX_RATE}${P9K_IP_TX_RATE:+ %215F⇡$P9K_IP_TX_RATE}'
+  # Show information for the first network interface whose name matches this regular expression.
+  # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
+  typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #########################[ proxy: system-wide http/https/ftp proxy ]##########################
+  # Proxy color.
+  typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################################[ battery: internal battery ]#################################
+  # Show battery in red when it's below this level and not connected to power supply.
+  typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
+  typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160
+  # Show battery in green when it's charging or fully charged.
+  typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70
+  # Show battery in yellow when it's discharging.
+  typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178
+  # Battery pictograms going from low to high level of charge.
+  typeset -g POWERLEVEL9K_BATTERY_STAGES='\UF008E\UF007A\UF007B\UF007C\UF007D\UF007E\UF007F\UF0080\UF0081\UF0082\UF0079'
+  # Don't show the remaining time to charge/discharge.
+  typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
+
+  #####################################[ wifi: wifi speed ]#####################################
+  # WiFi color.
+  typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS).
+  #
+  #   # Wifi colors and icons for different signal strength levels (low to high).
+  #   typeset -g my_wifi_fg=(68 68 68 68 68)                           # <-- change these values
+  #   typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi')     # <-- change these values
+  #
+  #   typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps'
+  #   typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}'
+  #
+  # The following parameters are accessible within the expansions:
+  #
+  #   Parameter             | Meaning
+  #   ----------------------+---------------
+  #   P9K_WIFI_SSID         | service set identifier, a.k.a. network name
+  #   P9K_WIFI_LINK_AUTH    | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
+  #   P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
+  #   P9K_WIFI_RSSI         | signal strength in dBm, from -120 to 0
+  #   P9K_WIFI_NOISE        | noise in dBm, from -120 to 0
+  #   P9K_WIFI_BARS         | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
+
+  ####################################[ time: current time ]####################################
+  # Current time color.
+  typeset -g POWERLEVEL9K_TIME_FOREGROUND=240
+  # Format for the current time: 09:51:02. See `man 3 strftime`.
+  typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M}'
+  # If set to true, time will update when you hit enter. This way prompts for the past
+  # commands will contain the start times of their commands as opposed to the default
+  # behavior where they contain the end times of their preceding commands.
+  typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
+  # Custom icon.
+  typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION=''
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_TIME_PREFIX='%fat '
+
+  # Example of a user-defined prompt segment. Function prompt_example will be called on every
+  # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or
+  # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user.
+  #
+  # Type `p10k help segment` for documentation and a more sophisticated example.
+  function prompt_example() {
+    p10k segment -f 208 -i '⭐' -t 'hello, %n'
+  }
+
+  # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
+  # is to generate the prompt segment for display in instant prompt. See
+  # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
+  #
+  # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
+  # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
+  # will replay these calls without actually calling instant_prompt_*. It is imperative that
+  # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
+  # rule is not observed, the content of instant prompt will be incorrect.
+  #
+  # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If
+  # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt.
+  function instant_prompt_example() {
+    # Since prompt_example always makes the same `p10k segment` calls, we can call it from
+    # instant_prompt_example. This will give us the same `example` prompt segment in the instant
+    # and regular prompts.
+    prompt_example
+  }
+
+  # User-defined prompt segments can be customized the same way as built-in segments.
+  # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208
+  # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
+  # when accepting a command line. Supported values:
+  #
+  #   - off:      Don't change prompt when accepting a command line.
+  #   - always:   Trim down prompt when accepting a command line.
+  #   - same-dir: Trim down prompt when accepting a command line unless this is the first command
+  #               typed after changing current working directory.
+  typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
+
+  # Instant prompt mode.
+  #
+  #   - off:     Disable instant prompt. Choose this if you've tried instant prompt and found
+  #              it incompatible with your zsh configuration files.
+  #   - quiet:   Enable instant prompt and don't print warnings when detecting console output
+  #              during zsh initialization. Choose this if you've read and understood
+  #              https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
+  #   - verbose: Enable instant prompt and print a warning when detecting console output during
+  #              zsh initialization. Choose this if you've never tried instant prompt, haven't
+  #              seen the warning, or if you are unsure what this all means.
+  typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
+
+  # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
+  # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
+  # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
+  # really need it.
+  typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
+
+  # If p10k is already loaded, reload configuration.
+  # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
+  (( ! $+functions[p10k] )) || p10k reload
+}
+
+# Tell `p10k configure` which file it should overwrite.
+typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
+
+(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
+'builtin' 'unset' 'p10k_config_opts'
diff --git a/.zshrc b/.zshrc
index a8b5490..bb67f8c 100644
--- a/.zshrc
+++ b/.zshrc
@@ -1,3 +1,10 @@
+# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
+# Initialization code that may require console input (password prompts, [y/n]
+# confirmations, etc.) must go above this block; everything else may go below.
+if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+fi
+
 if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
     print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
     command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
@@ -20,6 +27,7 @@ zi ice wait lucid
 zi load olets/zsh-abbr
 zi ice wait lucid
 zi snippet https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/shrink-path/shrink-path.plugin.zsh
+zinit ice depth=1; zinit light romkatv/powerlevel10k
 
 zstyle ':completion:*' use-cache on
 zstyle ':completion:*' cache-path ~/.zsh/cache
@@ -137,8 +145,8 @@ rg() {
 
 
 ## Prompt
-setopt TRANSIENT_RPROMPT
-eval "$(starship init zsh)"
+# setopt TRANSIENT_RPROMPT
+# eval "$(starship init zsh)"
 
 ## vim
 export EDITOR=nvim
@@ -266,3 +274,6 @@ compdef _grc grc
 
 # Atuin history
 eval "$(atuin init zsh)"
+
+# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
+[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

From 54417b92f70424952b2dac7e87546a7c8dd37614 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 9 Mar 2024 18:34:31 +0100
Subject: [PATCH 186/656] nvim: disable bufferline

---
 .config/nvim/lua/plugins/ui.lua | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index ab6dcb4..2beed80 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -16,6 +16,11 @@ hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
 end)
 
 return {
+	{
+		"akinsho/bufferline.nvim",
+		enabled = false,
+	},
+
 	{
 		"lukas-reineke/indent-blankline.nvim",
 		dependencies = {

From c17e7aba3db9196bf9d9d8b441db40c03bcb4664 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 10 Mar 2024 00:16:29 +0100
Subject: [PATCH 187/656] shell fixings

---
 .config/nvim/lazy-lock.json              | 13 ++++----
 .config/nvim/lua/plugins/colorscheme.lua |  1 +
 .p10k.zsh                                | 17 +++++++++--
 .zsh/history.zsh                         | 38 ++++++++++++++++++++++++
 .zshrc                                   | 11 +++++--
 5 files changed, 68 insertions(+), 12 deletions(-)
 create mode 100644 .zsh/history.zsh

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index ca65459..dba64aa 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,9 +1,8 @@
 {
   "LazyVim": { "branch": "main", "commit": "e3bfcb9bf74292dc846f5d1710fbb2e8f36a687a" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "6eb5d8d9ec9f81b75aaa6d15d0f6dc12a066fd3f" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "b788bde023f9fbc2eb86e89d32c0bf98a60ae406" },
   "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
-  "bufferline.nvim": { "branch": "main", "commit": "64e2c5def50dfd6b6f14d96a45fa3d815a4a1eef" },
   "catppuccin": { "branch": "main", "commit": "045e3499d9ec8d84635fb08877ae44fd33f6a38d" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "0acd702358230abeb6576769f7116e766bca28a0" },
@@ -32,7 +31,7 @@
   "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "459c60317cc1d251f6eb3b6f010d015d5d24b806" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "7f2ebdef3b55374390714ac7c0a7fe6b0dae498a" },
   "neoconf.nvim": { "branch": "main", "commit": "db1d1bd45f4e91da6abc898281711fa47eda0ece" },
   "neodev.nvim": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" },
   "noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
@@ -44,20 +43,20 @@
   "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "a5fc69240869c0fee8ff176bc9e4efdf8bdfb596" },
   "nvim-lint": { "branch": "master", "commit": "e824adb9bc01647f71e55457353a68f0f37f9931" },
-  "nvim-lspconfig": { "branch": "master", "commit": "94cf4adb81158817520e18d2174963d8e1424df9" },
+  "nvim-lspconfig": { "branch": "master", "commit": "16295b79410f131c4fa7870c663b4ace6a761fb2" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "3712ff0cdf4f9f877d9ca708d835a877d9a0abaf" },
-  "nvim-treesitter": { "branch": "master", "commit": "57205313dda0ac82ac69e21d5e2a80f3297c14cc" },
+  "nvim-treesitter": { "branch": "master", "commit": "7ff51f53b0efb6228df2e8539b51bb2e737b77f3" },
   "nvim-treesitter-context": { "branch": "master", "commit": "b8b7e52c1517d401d7c519787d5dc4528c41291a" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "b7a0bfa3e93697ca5b61b15df633404bf8f45883" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
-  "nvim-web-devicons": { "branch": "master", "commit": "4adea17610d140a99c313e3f79a9dc01825d59ae" },
+  "nvim-web-devicons": { "branch": "master", "commit": "75df79feb02d5e0ec114e447453775d4d291ea03" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" },
-  "rustaceanvim": { "branch": "master", "commit": "387ca846d632f8c90631536341ca1778b4c2c497" },
+  "rustaceanvim": { "branch": "master", "commit": "19f12173ccb7993f86ea26b0e21bbb883c3b86c7" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope.nvim": { "branch": "master", "commit": "7472420f8734c710bd7009081cef9b97f08a3821" },
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 30f2076..f02ab3b 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -64,6 +64,7 @@ return {
 
 				Color.new("ColorColumn", "#171e26")
 				Group.new("ColorColumn", nil, colors.ColorColumn)
+
 				Color.new("normal", "#e3e0cd")
 				Group.new("Normal", colors.normal, nil)
 
diff --git a/.p10k.zsh b/.p10k.zsh
index 05d0a0e..638f02e 100644
--- a/.p10k.zsh
+++ b/.p10k.zsh
@@ -37,6 +37,7 @@
     # vcs                     # git status
     # =========================[ Line #2 ]=========================
     newline                 # \n
+    cwd
     prompt_char             # prompt symbol
   )
 
@@ -199,9 +200,9 @@
 
   ################################[ prompt_char: prompt symbol ]################################
   # Green prompt symbol if the last command succeeded.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=253
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70 #253
   # Red prompt symbol if the last command failed.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=253
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70 #253
   # Default prompt symbol.
   typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%%' #'❯'
   # Prompt symbol in command vi mode.
@@ -228,7 +229,7 @@
   typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
   # Color of the anchor directory segments. Anchor segments are never shortened. The first
   # segment is always an anchor.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=245
+  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=246
   # Display anchor directory segments in bold.
   typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=false
   # Don't shorten directories that contain any of these files. They are anchors.
@@ -347,6 +348,11 @@
   #
   typeset -g POWERLEVEL9K_DIR_CLASSES=()
 
+  unset POWERLEVEL9K_DIR_ANCHOR_FOREGROUND
+  unset POWERLEVEL9K_DIR_SHORTENED_FOREGROUND
+  typeset -g POWERLEVEL9K_DIR_CONTENT_EXPANSION=$'%{\e[38;5;246;1;3m%}$P9K_CONTENT%b'
+
+
   # Custom prefix.
   # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '
 
@@ -1661,6 +1667,10 @@
     p10k segment -f 208 -i '⭐' -t 'hello, %n'
   }
 
+  function prompt_cwd() {
+    p10k segment -f 66 -e -t "${PWD##*/}"
+  }
+
   # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
   # is to generate the prompt segment for display in instant prompt. See
   # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
@@ -1678,6 +1688,7 @@
     # instant_prompt_example. This will give us the same `example` prompt segment in the instant
     # and regular prompts.
     prompt_example
+    prompt_cwd
   }
 
   # User-defined prompt segments can be customized the same way as built-in segments.
diff --git a/.zsh/history.zsh b/.zsh/history.zsh
new file mode 100644
index 0000000..c46bf6f
--- /dev/null
+++ b/.zsh/history.zsh
@@ -0,0 +1,38 @@
+typeset -g MY_HISTORY_SEARCH_OFFSET=0
+typeset -g MY_HISTORY_SEARCH_PREFIX=""
+
+function my-history-prefix-search() {
+    if [[ $LASTWIDGET != my-history-prefix-search-* ]]; then
+        # start state machine
+        MY_HISTORY_SEARCH_OFFSET=-1
+        MY_HISTORY_SEARCH_PREFIX="$LBUFFER"
+    fi
+    local offset_delta=$1
+    local offset=$((MY_HISTORY_SEARCH_OFFSET + $offset_delta))
+
+    (($offset < 0)) && return
+    local result=$(
+        atuin search \
+            --search-mode prefix \
+            --limit 1 \
+            --offset $offset \
+            --format '{command}' \
+            "$MY_HISTORY_SEARCH_PREFIX"
+    )
+    if [[ -n "$result" ]]; then
+        BUFFER=$result
+        CURSOR=${#BUFFER}
+        MY_HISTORY_SEARCH_OFFSET=$offset
+    fi
+}
+
+function my-history-prefix-search-backward-widget() {
+    my-history-prefix-search +1
+}
+
+function my-history-prefix-search-forward-widget() {
+    my-history-prefix-search -1
+}
+
+zle -N my-history-prefix-search-backward-widget
+zle -N my-history-prefix-search-forward-widget
diff --git a/.zshrc b/.zshrc
index bb67f8c..22c0b4c 100644
--- a/.zshrc
+++ b/.zshrc
@@ -19,6 +19,8 @@ autoload -Uz _zinit
 
 zi ice wait lucid
 zi load zsh-users/zsh-completions
+# zi ice wait lucid
+# zi load zsh-users/zsh-autosuggestions
 zi ice wait lucid
 zi load zdharma-continuum/fast-syntax-highlighting
 zi ice wait lucid
@@ -100,9 +102,14 @@ _cwd_gitroot() {
 zle -N _cwd_gitroot
 
 ## Keybindings
+source $HOME/.zsh/history.zsh
 bindkey -e
-bindkey '^P' atuin-up-search
 bindkey '^g' _jump
+# bindkey '^P' atuin-up-search
+bindkey '^p' my-history-prefix-search-backward-widget
+bindkey '^n' my-history-prefix-search-forward-widget
+bindkey "^[[A" my-history-prefix-search-backward-widget
+bindkey "^[[B" my-history-prefix-search-forward-widget
 
 
 ## Pager
@@ -273,7 +280,7 @@ function _grc() {
 compdef _grc grc
 
 # Atuin history
-eval "$(atuin init zsh)"
+eval "$(atuin init zsh --disable-up-arrow)"
 
 # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
 [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

From 68c0b21cd2413aac6f5530906f2efd7313549c2e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 11 Mar 2024 09:18:43 +0100
Subject: [PATCH 188/656] nvim: disable lazy autoupdate

---
 .config/nvim/lazy-lock.json      | 14 +++++++-------
 .config/nvim/lua/config/lazy.lua |  2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index dba64aa..9a3e0c9 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -23,7 +23,7 @@
   "lazy.nvim": { "branch": "main", "commit": "83493db50a434a4c5c648faf41e2ead80f96e478" },
   "lualine.nvim": { "branch": "master", "commit": "8b56462bfb746760465264de41b4907310f113ec" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "55716a879568a498fa236593c8119789054a3b8e" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" },
   "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
@@ -32,7 +32,7 @@
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "7f2ebdef3b55374390714ac7c0a7fe6b0dae498a" },
-  "neoconf.nvim": { "branch": "main", "commit": "db1d1bd45f4e91da6abc898281711fa47eda0ece" },
+  "neoconf.nvim": { "branch": "main", "commit": "d21739358bca9811f783c9a3d5e91c7b3abc3005" },
   "neodev.nvim": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" },
   "noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
   "none-ls.nvim": { "branch": "main", "commit": "ff3819c52ca04232fb70fbd6c1639de9abcbe122" },
@@ -41,14 +41,14 @@
   "nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" },
   "nvim-dap-go": { "branch": "main", "commit": "64f73400761e2d19459e664a52ea478f3a4420e7" },
   "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "a5fc69240869c0fee8ff176bc9e4efdf8bdfb596" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "baa5b0dc6663284cce32e0d00ac1f2511b13496f" },
   "nvim-lint": { "branch": "master", "commit": "e824adb9bc01647f71e55457353a68f0f37f9931" },
-  "nvim-lspconfig": { "branch": "master", "commit": "16295b79410f131c4fa7870c663b4ace6a761fb2" },
+  "nvim-lspconfig": { "branch": "master", "commit": "1917b562a02f20885900b1da0f0ea25028ccedab" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "3712ff0cdf4f9f877d9ca708d835a877d9a0abaf" },
-  "nvim-treesitter": { "branch": "master", "commit": "7ff51f53b0efb6228df2e8539b51bb2e737b77f3" },
+  "nvim-treesitter": { "branch": "master", "commit": "488bec03254207b1dd071be8cb1fb78434b6e777" },
   "nvim-treesitter-context": { "branch": "master", "commit": "b8b7e52c1517d401d7c519787d5dc4528c41291a" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "b7a0bfa3e93697ca5b61b15df633404bf8f45883" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
@@ -56,12 +56,12 @@
   "nvim-web-devicons": { "branch": "master", "commit": "75df79feb02d5e0ec114e447453775d4d291ea03" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" },
-  "rustaceanvim": { "branch": "master", "commit": "19f12173ccb7993f86ea26b0e21bbb883c3b86c7" },
+  "rustaceanvim": { "branch": "master", "commit": "5dc35a075ad7c9d2f6493065e1e5970e4ad61504" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope.nvim": { "branch": "master", "commit": "7472420f8734c710bd7009081cef9b97f08a3821" },
   "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
-  "tokyonight.nvim": { "branch": "main", "commit": "610179f7f12db3d08540b6cc61434db2eaecbcff" },
+  "tokyonight.nvim": { "branch": "main", "commit": "c025baf23b62f044eff1f4ef561c45de636f0e32" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
   "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
   "vim-startuptime": { "branch": "master", "commit": "308b0088a864c4711a96e45b6734cf9294074f65" },
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 9affbf2..c81386d 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -33,7 +33,7 @@ require("lazy").setup({
 		-- version = "*", -- try installing the latest stable version for plugins that support semver
 	},
 	-- install = { colorscheme = { "eyes" } },
-	checker = { enabled = true }, -- automatically check for plugin updates
+	checker = { enabled = false }, -- automatically check for plugin updates
 	performance = {
 		rtp = {
 			-- disable some rtp plugins

From fe11201cdb123342caaa3c7c0f20721ca1d47e00 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 11 Mar 2024 13:00:26 +0100
Subject: [PATCH 189/656] wezterm: new config

---
 .config/wezterm/wezterm.lua | 36 ++++++++++++++++--------------------
 1 file changed, 16 insertions(+), 20 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 535811a..b967d2b 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -5,11 +5,6 @@ local act = wezterm.action
 local dev_host = "dln-dev"
 local spawn_dev_nvim = { "ssh", dev_host, "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
 
--- local function font_with_fallback(name, params)
--- 	local names = { name, "Noto Color Emoji" }
--- 	return wezterm.font_with_fallback(names, params)
--- end
---
 wezterm.add_to_config_reload_watch_list(os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm")
 
 return {
@@ -17,46 +12,51 @@ return {
 	color_scheme_dirs = {
 		os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm",
 	},
-	font = wezterm.font({ family = "IosevkaShelman Nerd Font" }),
+	font = wezterm.font({
+		family = "IosevkaShelman Nerd Font",
+		weight = "Light",
+	}),
 	font_rules = {
 		{
-			italic = false,
-			intensity = "Half",
+			italic = true,
+			intensity = "Bold",
 			reverse = false,
-			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight" }),
+			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
+			-- font = wezterm.font("Iosevka Term Curly Slab", { weight = "Thin", italic = true }),
 		},
 		{
 			italic = true,
 			intensity = "Normal",
 			reverse = false,
-			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
+			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "Light", italic = true }),
 		},
 	},
 	front_end = "WebGpu",
 	webgpu_power_preference = "HighPerformance",
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
-	-- allow_square_glyphs_to_overflow_width = "Always",
+	-- allow_square_glyphs_to_overflow_width = "Never",
 	font_size = 16,
 	command_palette_font_size = 13.5,
+	line_height = 1.0,
 	initial_cols = 132,
 	initial_rows = 45,
 	use_resize_increments = true,
 	adjust_window_size_when_changing_font_size = false,
 	window_decorations = "RESIZE",
 	window_padding = {
-		left = 0,
-		right = 0,
+		left = 6,
+		right = 6,
 		top = 0,
 		bottom = 0,
 	},
 	unicode_version = 14,
 	default_cursor_style = "SteadyBlock",
 	cursor_thickness = "6px",
-	cursor_blink_rate = 0,
+	cursor_blink_rate = 700,
 	hide_mouse_cursor_when_typing = false,
-	underline_position = -12,
-	underline_thickness = 2,
+	underline_position = -9,
+	underline_thickness = 1,
 	enable_wayland = true,
 	enable_tab_bar = false,
 	tab_bar_at_bottom = true,
@@ -77,10 +77,6 @@ return {
 		{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
 		{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
 		{ key = "Enter", mods = "ALT", action = "ToggleFullScreen" },
-		{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
-		{ key = "L", mods = "CTRL", action = wezterm.action.ShowDebugOverlay },
-		{ key = "l", mods = "ALT", action = wezterm.action.ActivateCommandPalette },
-		{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
 		{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
 		{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
 		{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },

From e176c27955bc86c99eb708b64b67a2eb787efbae Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 12 Mar 2024 15:44:19 +0100
Subject: [PATCH 190/656] Set up opener. Support multiple hosts.

Enable with `systemctl --user enable --now opener@myhost`
---
 .config/systemd/user/opener@.service | 10 ++++++++++
 .ssh/config                          |  1 +
 bin/xdg-open                         | 11 +++++++++++
 3 files changed, 22 insertions(+)
 create mode 100644 .config/systemd/user/opener@.service
 create mode 100755 bin/xdg-open

diff --git a/.config/systemd/user/opener@.service b/.config/systemd/user/opener@.service
new file mode 100644
index 0000000..ae713c9
--- /dev/null
+++ b/.config/systemd/user/opener@.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Open URL in your local web browser from the SSH-connected remote environment.
+
+[Service]
+Restart=always
+Environment=OPENER_CONF=%t/opener.%i.conf
+ExecStart=/bin/sh -c 'echo "address: %t/opener.%i.sock" > $OPENER_CONF && exec %h/bin/opener --config $OPENER_CONF'
+
+[Install]
+WantedBy=graphical-session.target
diff --git a/.ssh/config b/.ssh/config
index df495cf..8b147e7 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -21,6 +21,7 @@ LocalForward 127.0.0.1:3000 127.0.0.1:3000
 LocalForward 127.0.0.1:8000 127.0.0.1:8000
 LocalForward 127.0.0.1:8080 127.0.0.1:8080
 LocalForward 127.0.0.1:9090 127.0.0.1:9090
+RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.dln-dev.sock
 
 Host *
 ForwardAgent no
diff --git a/bin/xdg-open b/bin/xdg-open
new file mode 100755
index 0000000..1a10b0b
--- /dev/null
+++ b/bin/xdg-open
@@ -0,0 +1,11 @@
+#!/usr/bin/env sh
+set -eu
+
+# Use local xdg-open if not in an ssh session
+[ -n "$SSH_TTY" ] || exec /usr/bin/xdg-open "$@"
+
+if [ -p /dev/stdin ]; then
+	exec nc -U "$XDG_RUNTIME_DIR/opener.sock" </dev/stdin
+else
+	echo "$@" | nc -U "$XDG_RUNTIME_DIR/opener.sock"
+fi

From 40afbee24841b67b1a6f183b698f64fe42d0f05a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 12 Mar 2024 17:20:24 +0100
Subject: [PATCH 191/656] nvim: add extrax

---
 .config/nvim/lua/plugins/extras.lua | 52 +++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 .config/nvim/lua/plugins/extras.lua

diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
new file mode 100644
index 0000000..4e41075
--- /dev/null
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -0,0 +1,52 @@
+return {
+	{
+		"nvimtools/none-ls.nvim",
+		opts = function(_, opts)
+			local nls = require("null-ls")
+			opts.root_dir = opts.root_dir
+				or require("null-ls.utils").root_pattern(".null-ls-root", ".neoconf.json", "Makefile", ".git")
+			opts.sources = vim.list_extend(opts.sources or {}, {
+				nls.builtins.formatting.fish_indent,
+				nls.builtins.diagnostics.fish,
+				nls.builtins.formatting.stylua,
+				nls.builtins.formatting.shfmt,
+				nls.builtins.formatting.buf,
+				nls.builtins.diagnostics.buf.with({
+					args = { "lint", "--disable-symlinks", "--path", "$FILENAME" },
+					cwd = function()
+						local file_dir = vim.fn.expand("%:p:h") .. ";"
+						local buf_yaml = vim.fn.findfile("buf.yaml", file_dir)
+						if buf_yaml then
+							return vim.fn.fnamemodify(buf_yaml, ":h")
+						end
+					end,
+				}),
+			})
+		end,
+	},
+
+	{
+		"simrat39/rust-tools.nvim",
+		enabled = false,
+	},
+	{
+		"mrcjkb/rustaceanvim",
+		version = "^4", -- Recommended
+		ft = { "rust" },
+		opts = {
+			server = {
+				on_attach = function(_, bufnr)
+					vim.keymap.set("n", "<leader>cR", function()
+						vim.cmd.RustLsp("codeAction")
+					end, { desc = "Code Action", buffer = bufnr })
+					vim.keymap.set("n", "<leader>dr", function()
+						vim.cmd.RustLsp("debuggables")
+					end, { desc = "Rust debuggables", buffer = bufnr })
+					vim.keymap.set("n", "<leader>cD", function()
+						vim.cmd.RustLsp("externalDocs")
+					end, { desc = "Rust external documentation", buffer = bufnr })
+				end,
+			},
+		},
+	},
+}

From 5433ee64f754b47a68857872e5d43a47ebd33cde Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 12 Mar 2024 17:21:41 +0100
Subject: [PATCH 192/656] nvim: enable inlay hints by default

---
 .config/nvim/lua/plugins/lsp.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index 3a94ba6..437f9d7 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -2,7 +2,7 @@ return {
 	{
 		"neovim/nvim-lspconfig",
 		opts = {
-			-- inlay_hints = { enabled = true },
+			inlay_hints = { enabled = true },
 			-- capabilities = {
 			-- 	workspace = {
 			-- 		didChangeWatchedFiles = {

From c87db0023b622a4ddc635b5d4ee7f9b0c95d32bf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 12 Mar 2024 17:21:58 +0100
Subject: [PATCH 193/656] git: enable compression

---
 .gitconfig | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index 6deb7af..3d4fcda 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -1,8 +1,12 @@
 [core]
 excludesfile = "~/.gitignore"
 pager = delta 
-compression = 0
-looseCompression = 0
+compression = 3
+looseCompression = 3
+
+[pack]
+threads = 0
+compression = 3
 
 [user]
 useConfigOnly = true
@@ -79,9 +83,6 @@ status = auto
 [apply]
 whitespace = nowarn
 
-[pack]
-threads = 0
-
 [blame]
 date = relative
 

From 7ecb63d1a02dec6d2dfac9d2bdb1b30382fc44c3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 14 Mar 2024 09:55:30 +0100
Subject: [PATCH 194/656] ssh: bind localhost instead of ipv4

---
 .ssh/config | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/.ssh/config b/.ssh/config
index 8b147e7..7596805 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -17,10 +17,10 @@ Hostname 10.1.100.16
 ForwardAgent yes
 ExitOnForwardFailure yes
 Compression no
-LocalForward 127.0.0.1:3000 127.0.0.1:3000
-LocalForward 127.0.0.1:8000 127.0.0.1:8000
-LocalForward 127.0.0.1:8080 127.0.0.1:8080
-LocalForward 127.0.0.1:9090 127.0.0.1:9090
+LocalForward localhost:3000 localhost:3000
+LocalForward localhost:8000 localhost:8000
+LocalForward localhost:8080 localhost:8080
+LocalForward localhost:9090 localhost:9090
 RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.dln-dev.sock
 
 Host *

From 6fe02664391ddfb1c227539db9e08e4dd30e237c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 15 Mar 2024 14:46:19 +0100
Subject: [PATCH 195/656] zsh: Replace p10k with oh-my-posh

---
 .config/oh-my-posh/config.yaml |   81 ++
 .p10k.zsh                      | 1734 --------------------------------
 .zshrc                         |   16 +-
 3 files changed, 83 insertions(+), 1748 deletions(-)
 create mode 100644 .config/oh-my-posh/config.yaml
 delete mode 100644 .p10k.zsh

diff --git a/.config/oh-my-posh/config.yaml b/.config/oh-my-posh/config.yaml
new file mode 100644
index 0000000..ece6a4b
--- /dev/null
+++ b/.config/oh-my-posh/config.yaml
@@ -0,0 +1,81 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
+version: 2
+final_space: true
+pwd: osc7
+disable_cursor_positioning: true
+blocks:
+  - type: prompt
+    alignment: left
+    newline: true
+    segments:
+      - type: path
+        style: plain
+        foreground: "#999"
+        template: "<b><i>{{ .Path }}</i></b> "
+        properties:
+          style: full
+
+  - type: prompt
+    alignment: right
+    filler: "<#333>⎯</>"
+    segments:
+      - type: git
+        style: plain
+        foreground: "#777"
+        foreground_templates:
+          - "{{ if or (.Working.Changed) (.Staging.Changed) }}#3b8{{ end }}"
+          - "{{ if and (gt .Ahead 0) (gt .Behind 0) }}#3b8{{ end }}"
+          - "{{ if gt .Ahead 0 }}#B388FF{{ end }}"
+          - "{{ if gt .Behind 0 }}#B388FB{{ end }}"
+        template: " <i>{{ .HEAD }} {{if .BranchStatus }}{{ .BranchStatus
+          }}{{ end }}{{ if .Working.Changed }}   {{ .Working.String }}{{ end }}{{ if and
+          (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }} 
+          {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }}   {{ .StashCount }}{{
+          end }}</i>"
+        properties:
+          fetch_status: true
+
+  - type: rprompt
+    segments:
+      - type: executiontime
+        style: plain
+        foreground: "#c93"
+        template: "<i>󱦟 {{ .FormattedMs }}</i>"
+        properties:
+          threshold: 500
+
+      - type: session
+        style: plain
+        foreground: "#666"
+        template: "  <i>{{ .UserName }}@{{ .HostName }}</i>"
+
+      - type: time
+        style: plain
+        foreground: "#666"
+        template: "  <i>{{ .CurrentDate | date .Format }}</i>"
+        properties:
+          time_format: "15:04"
+
+  - type: prompt
+    alignment: left
+    newline: true
+    segments:
+      - type: path
+        style: plain
+        foreground: "#678"
+        template: "<i>{{ .Path }}</i>"
+        properties:
+          style: folder
+
+      - type: text
+        style: plain
+        foreground: "#6c9"
+        template: " %"
+        properties:
+          style: folder
+
+transient_prompt:
+  background: transparent
+  foreground: "#6c9"
+  template: "\n%% "
+  filler: "-"
diff --git a/.p10k.zsh b/.p10k.zsh
deleted file mode 100644
index 638f02e..0000000
--- a/.p10k.zsh
+++ /dev/null
@@ -1,1734 +0,0 @@
-# Generated by Powerlevel10k configuration wizard on 2024-03-09 at 10:48 CET.
-# Based on romkatv/powerlevel10k/config/p10k-lean.zsh, checksum 52020.
-# Wizard options: nerdfont-v3 + powerline, large icons, unicode, lean, 24h time,
-# 2 lines, dotted, no frame, darkest-ornaments, compact, few icons, concise,
-# transient_prompt, instant_prompt=verbose.
-# Type `p10k configure` to generate another config.
-#
-# Config for Powerlevel10k with lean prompt style. Type `p10k configure` to generate
-# your own config based on it.
-#
-# Tip: Looking for a nice color? Here's a one-liner to print colormap.
-#
-#   for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
-
-# Temporarily change options.
-'builtin' 'local' '-a' 'p10k_config_opts'
-[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
-[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
-[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
-'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
-
-() {
-  emulate -L zsh -o extended_glob
-
-  # Unset all configuration options. This allows you to apply configuration changes without
-  # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
-  unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
-
-  # Zsh >= 5.1 is required.
-  [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
-
-  # The list of segments shown on the left. Fill it with the most important segments.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
-    # =========================[ Line #1 ]=========================
-    # os_icon               # os identifier
-    dir                     # current directory
-    # vcs                     # git status
-    # =========================[ Line #2 ]=========================
-    newline                 # \n
-    cwd
-    prompt_char             # prompt symbol
-  )
-
-  # The list of segments shown on the right. Fill it with less important segments.
-  # Right prompt on the last prompt line (where you are typing your commands) gets
-  # automatically hidden when the input line reaches it. Right prompt above the
-  # last prompt line gets hidden if it would overlap with left prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
-    # =========================[ Line #1 ]=========================
-    status                  # exit code of the last command
-    command_execution_time  # duration of the last command
-    background_jobs         # presence of background jobs
-    # direnv                  # direnv status (https://direnv.net/)
-    # asdf                    # asdf version manager (https://github.com/asdf-vm/asdf)
-    # virtualenv              # python virtual environment (https://docs.python.org/3/library/venv.html)
-    # anaconda                # conda environment (https://conda.io/)
-    # pyenv                   # python environment (https://github.com/pyenv/pyenv)
-    # goenv                   # go environment (https://github.com/syndbg/goenv)
-    # nodenv                  # node.js version from nodenv (https://github.com/nodenv/nodenv)
-    # nvm                     # node.js version from nvm (https://github.com/nvm-sh/nvm)
-    # nodeenv                 # node.js environment (https://github.com/ekalinin/nodeenv)
-    # node_version          # node.js version
-    # go_version            # go version (https://golang.org)
-    # rust_version          # rustc version (https://www.rust-lang.org)
-    # dotnet_version        # .NET version (https://dotnet.microsoft.com)
-    # php_version           # php version (https://www.php.net/)
-    # laravel_version       # laravel php framework version (https://laravel.com/)
-    # java_version          # java version (https://www.java.com/)
-    # package               # name@version from package.json (https://docs.npmjs.com/files/package.json)
-    # rbenv                   # ruby version from rbenv (https://github.com/rbenv/rbenv)
-    # rvm                     # ruby version from rvm (https://rvm.io)
-    # fvm                     # flutter version management (https://github.com/leoafarias/fvm)
-    # luaenv                  # lua version from luaenv (https://github.com/cehoffman/luaenv)
-    # jenv                    # java version from jenv (https://github.com/jenv/jenv)
-    # plenv                   # perl version from plenv (https://github.com/tokuhirom/plenv)
-    # perlbrew                # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
-    # phpenv                  # php version from phpenv (https://github.com/phpenv/phpenv)
-    # scalaenv                # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
-    # haskell_stack           # haskell version from stack (https://haskellstack.org/)
-    # kubecontext             # current kubernetes context (https://kubernetes.io/)
-    # terraform               # terraform workspace (https://www.terraform.io)
-    # terraform_version     # terraform version (https://www.terraform.io)
-    # aws                     # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
-    # aws_eb_env              # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
-    # azure                   # azure account name (https://docs.microsoft.com/en-us/cli/azure)
-    # gcloud                  # google cloud cli account and project (https://cloud.google.com/)
-    # google_app_cred         # google application credentials (https://cloud.google.com/docs/authentication/production)
-    # toolbox                 # toolbox name (https://github.com/containers/toolbox)
-    # context                 # user@hostname
-    # nordvpn                 # nordvpn connection status, linux only (https://nordvpn.com/)
-    # ranger                  # ranger shell (https://github.com/ranger/ranger)
-    # yazi                    # yazi shell (https://github.com/sxyazi/yazi)
-    # nnn                     # nnn shell (https://github.com/jarun/nnn)
-    # lf                      # lf shell (https://github.com/gokcehan/lf)
-    # xplr                    # xplr shell (https://github.com/sayanarijit/xplr)
-    # vim_shell               # vim shell indicator (:sh)
-    # midnight_commander      # midnight commander shell (https://midnight-commander.org/)
-    # nix_shell               # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
-    # chezmoi_shell           # chezmoi shell (https://www.chezmoi.io/)
-    # vpn_ip                # virtual private network indicator
-    # load                  # CPU load
-    # disk_usage            # disk usage
-    # ram                   # free RAM
-    # swap                  # used swap
-    # todo                    # todo items (https://github.com/todotxt/todo.txt-cli)
-    # timewarrior             # timewarrior tracking status (https://timewarrior.net/)
-    # taskwarrior             # taskwarrior task count (https://taskwarrior.org/)
-    # per_directory_history   # Oh My Zsh per-directory-history local/global indicator
-    # cpu_arch              # CPU architecture
-    # time                    # current time
-    vcs
-    # =========================[ Line #2 ]=========================
-    newline
-    # ip                    # ip address and bandwidth usage for a specified network interface
-    # public_ip             # public IP address
-    # proxy                 # system-wide http/https/ftp proxy
-    # battery               # internal battery
-    # wifi                  # wifi speed
-    # example               # example user-defined segment (see prompt_example function below)
-    context
-    time
-  )
-
-  # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
-  typeset -g POWERLEVEL9K_MODE=nerdfont-v3
-  # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
-  # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
-  typeset -g POWERLEVEL9K_ICON_PADDING=moderate
-
-  # Basic style options that define the overall look of your prompt. You probably don't want to
-  # change them.
-  typeset -g POWERLEVEL9K_BACKGROUND=                            # transparent background
-  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE=  # no surrounding whitespace
-  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' '  # separate segments with a space
-  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR=        # no end-of-line symbol
-
-  # When set to true, icons appear before content on both sides of the prompt. When set
-  # to false, icons go after content. If empty or not set, icons go before content in the left
-  # prompt and after content in the right prompt.
-  #
-  # You can also override it for a specific segment:
-  #
-  #   POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
-  #
-  # Or for a specific segment in specific state:
-  #
-  #   POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
-  typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true
-
-  # Add an empty line before each prompt.
-  # typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
-  p10k-on-pre-prompt() p10k display empty_line=print
-
-  # Connect left prompt lines with these symbols.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX=
-  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=
-  # Connect right prompt lines with these symbols.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=
-  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=
-
-  # The left end of left prompt.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
-  # The right end of right prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=
-
-  # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll
-  # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and
-  # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below.
-  typeset -g POWERLEVEL9K_SHOW_RULER=false
-  typeset -g POWERLEVEL9K_RULER_CHAR='─'        # reasonable alternative: '·'
-  typeset -g POWERLEVEL9K_RULER_FOREGROUND=238
-
-  # Filler between left and right prompt on the first prompt line. You can set it to '·' or '─'
-  # to make it easier to see the alignment between left and right prompt and to separate prompt
-  # from command output. It serves the same purpose as ruler (see above) without increasing
-  # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false
-  # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact
-  # prompt.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR='⎯' #'·' '⋯' '⎯' '·'
-  if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
-    # The color of the filler.
-    typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=235
-    # Add a space between the end of left prompt and the filler.
-    typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' '
-    # Add a space between the filler and the start of right prompt.
-    typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' '
-    # Start filler from the edge of the screen if there are no left segments on the first line.
-    typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
-    # End filler on the edge of the screen if there are no right segments on the first line.
-    typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
-  fi
-
-  #################################[ os_icon: os identifier ]##################################
-  # OS identifier color.
-  typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
-
-  ################################[ prompt_char: prompt symbol ]################################
-  # Green prompt symbol if the last command succeeded.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70 #253
-  # Red prompt symbol if the last command failed.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70 #253
-  # Default prompt symbol.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%%' #'❯'
-  # Prompt symbol in command vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
-  # Prompt symbol in visual vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
-  # Prompt symbol in overwrite vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
-  # No line terminator if prompt_char is the last segment.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
-  # No line introducer if prompt_char is the first segment.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
-
-  ##################################[ dir: current directory ]##################################
-  # Default current directory color.
-  typeset -g POWERLEVEL9K_DIR_FOREGROUND=241
-  # If directory is too long, shorten some of its segments to the shortest possible unique
-  # prefix. The shortened directory can be tab-completed to the original.
-  typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
-  # Replace removed segment suffixes with this symbol.
-  typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
-  # Color of the shortened directory segments.
-  typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
-  # Color of the anchor directory segments. Anchor segments are never shortened. The first
-  # segment is always an anchor.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=246
-  # Display anchor directory segments in bold.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=false
-  # Don't shorten directories that contain any of these files. They are anchors.
-  local anchor_files=(
-    .bzr
-    .citc
-    .git
-    .hg
-    .node-version
-    .python-version
-    .go-version
-    .ruby-version
-    .lua-version
-    .java-version
-    .perl-version
-    .php-version
-    .tool-versions
-    .shorten_folder_marker
-    .svn
-    .terraform
-    CVS
-    Cargo.toml
-    composer.json
-    go.mod
-    package.json
-    stack.yaml
-  )
-  typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
-  # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
-  # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
-  # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
-  # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
-  # and other directories don't.
-  #
-  # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
-  # This moves the truncation point to the right (positive offset) or to the left (negative offset)
-  # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
-  # respectively.
-  typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
-  # Don't shorten this many last directory segments. They are anchors.
-  typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
-  # Shorten directory if it's longer than this even if there is space for it. The value can
-  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
-  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
-  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
-  # If set to `0`, directory will always be shortened to its minimum length.
-  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
-  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
-  # many columns for typing commands.
-  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
-  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
-  # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
-  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
-  # If set to true, embed a hyperlink into the directory. Useful for quickly
-  # opening a directory in the file manager simply by clicking the link.
-  # Can also be handy when the directory is shortened, as it allows you to see
-  # the full directory that was used in previous commands.
-  typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
-
-  # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
-  # and POWERLEVEL9K_DIR_CLASSES below.
-  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
-
-  # The default icon shown next to non-writable and non-existent directories when
-  # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
-  # typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
-
-  # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
-  # directories. It must be an array with 3 * N elements. Each triplet consists of:
-  #
-  #   1. A pattern against which the current directory ($PWD) is matched. Matching is done with
-  #      extended_glob option enabled.
-  #   2. Directory class for the purpose of styling.
-  #   3. An empty string.
-  #
-  # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
-  #
-  # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
-  # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_DIR_CLASSES=(
-  #     '~/work(|/*)'  WORK     ''
-  #     '~(|/*)'       HOME     ''
-  #     '*'            DEFAULT  '')
-  #
-  # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
-  # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
-  # WORK_NON_EXISTENT.
-  #
-  # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
-  # option to define custom colors and icons for different directory classes.
-  #
-  #   # Styling for WORK.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
-  #   typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103
-  #   typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39
-  #
-  #   # Styling for WORK_NOT_WRITABLE.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
-  #
-  #   # Styling for WORK_NON_EXISTENT.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
-  #
-  # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
-  # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
-  # back to POWERLEVEL9K_DIR_FOREGROUND.
-  #
-  typeset -g POWERLEVEL9K_DIR_CLASSES=()
-
-  unset POWERLEVEL9K_DIR_ANCHOR_FOREGROUND
-  unset POWERLEVEL9K_DIR_SHORTENED_FOREGROUND
-  typeset -g POWERLEVEL9K_DIR_CONTENT_EXPANSION=$'%{\e[38;5;246;1;3m%}$P9K_CONTENT%b'
-
-
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '
-
-  #####################################[ vcs: git status ]######################################
-  # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
-  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\UE0A0'
-
-  # Untracked files icon. It's really a question mark, your font isn't broken.
-  # Change the value of this parameter to show a different icon.
-  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
-
-  # Formatter for Git status.
-  #
-  # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
-  #
-  # You can edit the function to customize how Git status looks.
-  #
-  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
-  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
-  function my_git_formatter() {
-    emulate -L zsh
-
-    if [[ -n $P9K_CONTENT ]]; then
-      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
-      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
-      typeset -g my_git_format=$P9K_CONTENT
-      return
-    fi
-
-    if (( $1 )); then
-      # Styling for up-to-date Git status.
-      local       meta='%f'     # default foreground
-      local      clean='%35F'   # green foreground
-      local   modified='%178F'  # yellow foreground
-      local  untracked='%39F'   # blue foreground
-      local conflicted='%196F'  # red foreground
-    else
-      # Styling for incomplete and stale Git status.
-      local       meta='%244F'  # grey foreground
-      local      clean='%244F'  # grey foreground
-      local   modified='%244F'  # grey foreground
-      local  untracked='%244F'  # grey foreground
-      local conflicted='%244F'  # grey foreground
-    fi
-
-    local res
-
-    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
-      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
-      # If local branch name is at most 32 characters long, show it in full.
-      # Otherwise show the first 12 … the last 12.
-      # Tip: To always show local branch name in full without truncation, delete the next line.
-      (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
-      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
-    fi
-
-    if [[ -n $VCS_STATUS_TAG
-          # Show tag only if not on a branch.
-          # Tip: To always show tag, delete the next line.
-          && -z $VCS_STATUS_LOCAL_BRANCH  # <-- this line
-        ]]; then
-      local tag=${(V)VCS_STATUS_TAG}
-      # If tag name is at most 32 characters long, show it in full.
-      # Otherwise show the first 12 … the last 12.
-      # Tip: To always show tag name in full without truncation, delete the next line.
-      (( $#tag > 32 )) && tag[13,-13]="…"  # <-- this line
-      res+="${meta}#${clean}${tag//\%/%%}"
-    fi
-
-    # Display the current Git commit if there is no branch and no tag.
-    # Tip: To always display the current Git commit, delete the next line.
-    [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] &&  # <-- this line
-      res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
-
-    # Show tracking branch name if it differs from local branch.
-    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
-      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
-    fi
-
-    # Display "wip" if the latest commit's summary contains "wip" or "WIP".
-    if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
-      res+=" ${modified}wip"
-    fi
-
-    if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
-      # ⇣42 if behind the remote.
-      (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
-      # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
-      (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
-      (( VCS_STATUS_COMMITS_AHEAD  )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
-    elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
-      # Tip: Uncomment the next line to display '=' if up to date with the remote.
-      # res+=" ${clean}="
-    fi
-
-    # ⇠42 if behind the push remote.
-    (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
-    (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
-    # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
-    (( VCS_STATUS_PUSH_COMMITS_AHEAD  )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
-    # *42 if have stashes.
-    (( VCS_STATUS_STASHES        )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
-    # 'merge' if the repo is in an unusual state.
-    [[ -n $VCS_STATUS_ACTION     ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
-    # ~42 if have merge conflicts.
-    (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
-    # +42 if have staged changes.
-    (( VCS_STATUS_NUM_STAGED     )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
-    # !42 if have unstaged changes.
-    (( VCS_STATUS_NUM_UNSTAGED   )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
-    # ?42 if have untracked files. It's really a question mark, your font isn't broken.
-    # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
-    # Remove the next line if you don't want to see untracked files at all.
-    (( VCS_STATUS_NUM_UNTRACKED  )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
-    # "─" if the number of unstaged files is unknown. This can happen due to
-    # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
-    # than the number of files in the Git index, or due to bash.showDirtyState being set to false
-    # in the repository config. The number of staged and untracked files may also be unknown
-    # in this case.
-    (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─"
-
-    typeset -g my_git_format=$res
-  }
-  functions -M my_git_formatter 2>/dev/null
-
-  # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
-  # more than this many files in the index. Negative value means infinity.
-  #
-  # If you are working in Git repositories with tens of millions of files and seeing performance
-  # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
-  # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
-  # config: `git config bash.showDirtyState false`.
-  typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
-
-  # Don't show Git status in prompt for repositories whose workdir matches this pattern.
-  # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
-  # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
-  typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
-
-  # Disable the default Git status formatting.
-  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
-  # Install our own Git status formatter.
-  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION=$'%{\e[3m%}${$((my_git_formatter(1)))+${my_git_format}}'
-  typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
-  # Enable counters for staged, unstaged, etc.
-  typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
-
-  # Icon color.
-  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=49
-  typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244
-  # Custom icon.
-  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_VCS_PREFIX='%fon '
-
-  # Show status of repositories of these types. You can add svn and/or hg if you are
-  # using them. If you do, your prompt may become slow even when your current directory
-  # isn't in an svn or hg repository.
-  typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
-
-  # These settings are used for repositories other than Git or when gitstatusd fails and
-  # Powerlevel10k has to fall back to using vcs_info.
-  typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
-  typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
-  typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178
-
-  ##########################[ status: exit code of the last command ]###########################
-  # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
-  # style them independently from the regular OK and ERROR state.
-  typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
-
-  # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
-  # it will signify success by turning green.
-  typeset -g POWERLEVEL9K_STATUS_OK=false
-  typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70
-  typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔'
-
-  # Status when some part of a pipe command fails but the overall exit status is zero. It may look
-  # like this: 1|0.
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔'
-
-  # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
-  # it will signify error by turning red.
-  typeset -g POWERLEVEL9K_STATUS_ERROR=false
-  typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160
-  typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘'
-
-  # Status when the last command was terminated by a signal.
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160
-  # Use terse signal names: "INT" instead of "SIGINT(2)".
-  typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘'
-
-  # Status when some part of a pipe command fails and the overall exit status is also non-zero.
-  # It may look like this: 1|0.
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
-
-  ###################[ command_execution_time: duration of the last command ]###################
-  # Show duration of the last command if takes at least this many seconds.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
-  # Show this many fractional digits. Zero means round to seconds.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
-  # Execution time color.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=101
-  # Duration format: 1d 2h 3m 4s.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
-  # Custom icon.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%ftook '
-
-  #######################[ background_jobs: presence of background jobs ]#######################
-  # Don't show the number of background jobs.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
-  # Background jobs color.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=70
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ direnv: direnv status (https://direnv.net/) ]########################
-  # Direnv color.
-  typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
-  # Default asdf color. Only used to display tools for which there is no color override (see below).
-  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND.
-  typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66
-
-  # There are four parameters that can be used to hide asdf tools. Each parameter describes
-  # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at
-  # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to
-  # hide a tool, it gets shown.
-  #
-  # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and
-  # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands:
-  #
-  #   asdf local  python 3.8.1
-  #   asdf global python 3.8.1
-  #
-  # After running both commands the current python version is 3.8.1 and its source is "local" as
-  # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false,
-  # it'll hide python version in this case because 3.8.1 is the same as the global version.
-  # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't
-  # contain "local".
-
-  # Hide tool versions that don't come from one of these sources.
-  #
-  # Available sources:
-  #
-  # - shell   `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable"
-  # - local   `asdf current` says "set by /some/not/home/directory/file"
-  # - global  `asdf current` says "set by /home/username/file"
-  #
-  # Note: If this parameter is set to (shell local global), it won't hide tools.
-  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES.
-  typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global)
-
-  # If set to false, hide tool versions that are the same as global.
-  #
-  # Note: The name of this parameter doesn't reflect its meaning at all.
-  # Note: If this parameter is set to true, it won't hide tools.
-  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW.
-  typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false
-
-  # If set to false, hide tool versions that are equal to "system".
-  #
-  # Note: If this parameter is set to true, it won't hide tools.
-  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM.
-  typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
-
-  # If set to non-empty value, hide tools unless there is a file matching the specified file pattern
-  # in the current directory, or its parent directory, or its grandparent directory, and so on.
-  #
-  # Note: If this parameter is set to empty value, it won't hide tools.
-  # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
-  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB.
-  #
-  # Example: Hide nodejs version when there is no package.json and no *.js files in the current
-  # directory, in `..`, in `../..` and so on.
-  #
-  #   typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json'
-  typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB=
-
-  # Ruby version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168
-  # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Python version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37
-  # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Go version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=37
-  # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Node.js version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70
-  # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Rust version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37
-  # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # .NET Core version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134
-  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_DOTNET_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Flutter version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38
-  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Lua version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32
-  # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Java version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32
-  # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Perl version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67
-  # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Erlang version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125
-  # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Elixir version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129
-  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Postgres version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31
-  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # PHP version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99
-  # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Haskell version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=172
-  # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Julia version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70
-  # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
-  # NordVPN connection indicator color.
-  typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39
-  # Hide NordVPN connection indicator when not connected.
-  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
-  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
-  # Ranger shell color.
-  typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  
-  ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
-  # Yazi shell color.
-  typeset -g POWERLEVEL9K_YAZI_FOREGROUND=178
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
-  # Nnn shell color.
-  typeset -g POWERLEVEL9K_NNN_FOREGROUND=72
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
-  # lf shell color.
-  typeset -g POWERLEVEL9K_LF_FOREGROUND=72
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
-  # xplr shell color.
-  typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########################[ vim_shell: vim shell indicator (:sh) ]###########################
-  # Vim shell indicator color.
-  typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]######
-  # Midnight Commander shell color.
-  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]##
-  # Nix shell color.
-  typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74
-
-  # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
-
-  # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
-  # chezmoi shell color.
-  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=33
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################################[ disk_usage: disk usage ]##################################
-  # Colors for different levels of disk usage.
-  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35
-  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220
-  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160
-  # Thresholds for different levels of disk usage (percentage points).
-  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90
-  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95
-  # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent.
-  typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################################[ ram: free RAM ]#######################################
-  # RAM color.
-  typeset -g POWERLEVEL9K_RAM_FOREGROUND=66
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################################[ swap: used swap ]######################################
-  # Swap color.
-  typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################################[ load: CPU load ]######################################
-  # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
-  typeset -g POWERLEVEL9K_LOAD_WHICH=5
-  # Load color when load is under 50%.
-  typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66
-  # Load color when load is between 50% and 70%.
-  typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178
-  # Load color when load is over 70%.
-  typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################
-  # Todo color.
-  typeset -g POWERLEVEL9K_TODO_FOREGROUND=110
-  # Hide todo when the total number of tasks is zero.
-  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true
-  # Hide todo when the number of tasks after filtering is zero.
-  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false
-
-  # Todo format. The following parameters are available within the expansion.
-  #
-  # - P9K_TODO_TOTAL_TASK_COUNT     The total number of tasks.
-  # - P9K_TODO_FILTERED_TASK_COUNT  The number of tasks after filtering.
-  #
-  # These variables correspond to the last line of the output of `todo.sh -p ls`:
-  #
-  #   TODO: 24 of 42 tasks shown
-  #
-  # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT.
-  #
-  # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############
-  # Timewarrior color.
-  typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110
-  # If the tracked task is longer than 24 characters, truncate and append "…".
-  # Tip: To always display tasks without truncation, delete the following parameter.
-  # Tip: To hide task names and display just the icon when time tracking is enabled, set the
-  # value of the following parameter to "".
-  typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
-  # Taskwarrior color.
-  typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74
-
-  # Taskwarrior segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_TASKWARRIOR_PENDING_COUNT   The number of pending tasks: `task +PENDING count`.
-  # - P9K_TASKWARRIOR_OVERDUE_COUNT   The number of overdue tasks: `task +OVERDUE count`.
-  #
-  # Zero values are represented as empty parameters.
-  #
-  # The default format:
-  #
-  #   '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT'
-  #
-  # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
-  # Color when using local/global history.
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=135
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=130
-
-  # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################################[ cpu_arch: CPU architecture ]################################
-  # CPU architecture color.
-  typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172
-
-  # Hide the segment when on a specific CPU architecture.
-  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
-  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################################[ context: user@hostname ]##################################
-  # Context color when running with privileges.
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178
-  # Context color in SSH without privileges.
-  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=239
-  # Default context color (no privileges, no SSH).
-  typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=239
-
-  # Context format when running with privileges: bold user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m'
-  # Context format when in SSH without privileges: user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%{\e[3m%}%n@%m'
-  # Default context format (no privileges, no SSH): user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
-
-  # Don't show context unless running with privileges or in SSH.
-  # Tip: Remove the next line to always show context.
-  typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=''
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%fwith '
-
-  ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
-  # Python virtual environment color.
-  typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37
-  # Don't show Python version next to the virtual environment name.
-  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
-  # If set to "false", won't show virtualenv if pyenv is already shown.
-  # If set to "if-different", won't show virtualenv if it's the same as pyenv.
-  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
-  # Separate environment name from Python version only with a space.
-  typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################[ anaconda: conda environment (https://conda.io/) ]######################
-  # Anaconda environment color.
-  typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37
-
-  # Anaconda segment format. The following parameters are available within the expansion.
-  #
-  # - CONDA_PREFIX                 Absolute path to the active Anaconda/Miniconda environment.
-  # - CONDA_DEFAULT_ENV            Name of the active Anaconda/Miniconda environment.
-  # - CONDA_PROMPT_MODIFIER        Configurable prompt modifier (see below).
-  # - P9K_ANACONDA_PYTHON_VERSION  Current python version (python --version).
-  #
-  # CONDA_PROMPT_MODIFIER can be configured with the following command:
-  #
-  #   conda config --set env_prompt '({default_env}) '
-  #
-  # The last argument is a Python format string that can use the following variables:
-  #
-  # - prefix       The same as CONDA_PREFIX.
-  # - default_env  The same as CONDA_DEFAULT_ENV.
-  # - name         The last segment of CONDA_PREFIX.
-  # - stacked_env  Comma-separated list of names in the environment stack. The first element is
-  #                always the same as default_env.
-  #
-  # Note: '({default_env}) ' is the default value of env_prompt.
-  #
-  # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
-  # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
-  # is empty.
-  typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
-  # Pyenv color.
-  typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37
-  # Hide python version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global)
-  # If set to false, hide python version if it's the same as global:
-  # $(pyenv version-name) == $(pyenv global).
-  typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide python version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true
-
-  # Pyenv segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_CONTENT                Current pyenv environment (pyenv version-name).
-  # - P9K_PYENV_PYTHON_VERSION   Current python version (python --version).
-  #
-  # The default format has the following logic:
-  #
-  # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
-  #    starts with "$P9K_PYENV_PYTHON_VERSION/".
-  # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
-  typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################
-  # Goenv color.
-  typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37
-  # Hide go version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global)
-  # If set to false, hide go version if it's the same as global:
-  # $(goenv version-name) == $(goenv global).
-  typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide go version if it's equal to "system".
-  typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
-  # Nodenv color.
-  typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70
-  # Hide node version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global)
-  # If set to false, hide node version if it's the same as global:
-  # $(nodenv version-name) == $(nodenv global).
-  typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide node version if it's equal to "system".
-  typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
-  # Nvm color.
-  typeset -g POWERLEVEL9K_NVM_FOREGROUND=70
-  # If set to false, hide node version if it's the same as default:
-  # $(nvm version current) == $(nvm version default).
-  typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide node version if it's equal to "system".
-  typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
-  # Nodeenv color.
-  typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70
-  # Don't show Node version next to the environment name.
-  typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
-  # Separate environment name from Node version only with a space.
-  typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############################[ node_version: node.js version ]###############################
-  # Node version color.
-  typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70
-  # Show node version only when in a directory tree containing package.json.
-  typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ go_version: go version (https://golang.org) ]########################
-  # Go version color.
-  typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37
-  # Show go version only when in a go project subdirectory.
-  typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
-  # Rust version color.
-  typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37
-  # Show rust version only when in a rust project subdirectory.
-  typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
-  # .NET version color.
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134
-  # Show .NET version only when in a .NET project subdirectory.
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################[ php_version: php version (https://www.php.net/) ]######################
-  # PHP version color.
-  typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99
-  # Show PHP version only when in a PHP project subdirectory.
-  typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]###########
-  # Laravel version color.
-  typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ####################[ java_version: java version (https://www.java.com/) ]####################
-  # Java version color.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=32
-  # Show java version only when in a java project subdirectory.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true
-  # Show brief version.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]####
-  # Package color.
-  typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=117
-  # Package format. The following parameters are available within the expansion.
-  #
-  # - P9K_PACKAGE_NAME     The value of `name` field in package.json.
-  # - P9K_PACKAGE_VERSION  The value of `version` field in package.json.
-  #
-  # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
-  # Rbenv color.
-  typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168
-  # Hide ruby version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
-  # If set to false, hide ruby version if it's the same as global:
-  # $(rbenv version-name) == $(rbenv global).
-  typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide ruby version if it's equal to "system".
-  typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
-  # Rvm color.
-  typeset -g POWERLEVEL9K_RVM_FOREGROUND=168
-  # Don't show @gemset at the end.
-  typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
-  # Don't show ruby- at the front.
-  typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############
-  # Fvm color.
-  typeset -g POWERLEVEL9K_FVM_FOREGROUND=38
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]###########
-  # Lua color.
-  typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32
-  # Hide lua version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global)
-  # If set to false, hide lua version if it's the same as global:
-  # $(luaenv version-name) == $(luaenv global).
-  typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide lua version if it's equal to "system".
-  typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################
-  # Java color.
-  typeset -g POWERLEVEL9K_JENV_FOREGROUND=32
-  # Hide java version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global)
-  # If set to false, hide java version if it's the same as global:
-  # $(jenv version-name) == $(jenv global).
-  typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide java version if it's equal to "system".
-  typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############
-  # Perl color.
-  typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67
-  # Hide perl version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global)
-  # If set to false, hide perl version if it's the same as global:
-  # $(plenv version-name) == $(plenv global).
-  typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide perl version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
-  # Perlbrew color.
-  typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
-  # Show perlbrew version only when in a perl project subdirectory.
-  typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
-  # Don't show "perl-" at the front.
-  typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
-  # PHP color.
-  typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99
-  # Hide php version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global)
-  # If set to false, hide php version if it's the same as global:
-  # $(phpenv version-name) == $(phpenv global).
-  typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide php version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
-  # Scala color.
-  typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160
-  # Hide scala version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
-  # If set to false, hide scala version if it's the same as global:
-  # $(scalaenv version-name) == $(scalaenv global).
-  typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide scala version if it's equal to "system".
-  typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
-  # Haskell color.
-  typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172
-  # Hide haskell version if it doesn't come from one of these sources.
-  #
-  #   shell:  version is set by STACK_YAML
-  #   local:  version is set by stack.yaml up the directory tree
-  #   global: version is set by the implicit global project (~/.stack/global-project/stack.yaml)
-  typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local)
-  # If set to false, hide haskell version if it's the same as in the implicit global project.
-  typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
-  # Show kubecontext only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show kubecontext.
-  typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
-
-  # Kubernetes context classes for the purpose of using different colors, icons and expansions with
-  # different contexts.
-  #
-  # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current kubernetes context gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       DEFAULT)
-  #
-  # If your current kubernetes context is "deathray-testing/default", its class is TEST
-  # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'       DEFAULT)
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134
-  # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
-  # segment. Parameter expansions are very flexible and fast, too. See reference:
-  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
-  #
-  # Within the expansion the following parameters are always available:
-  #
-  # - P9K_CONTENT                The content that would've been displayed if there was no content
-  #                              expansion defined.
-  # - P9K_KUBECONTEXT_NAME       The current context's name. Corresponds to column NAME in the
-  #                              output of `kubectl config get-contexts`.
-  # - P9K_KUBECONTEXT_CLUSTER    The current context's cluster. Corresponds to column CLUSTER in the
-  #                              output of `kubectl config get-contexts`.
-  # - P9K_KUBECONTEXT_NAMESPACE  The current context's namespace. Corresponds to column NAMESPACE
-  #                              in the output of `kubectl config get-contexts`. If there is no
-  #                              namespace, the parameter is set to "default".
-  # - P9K_KUBECONTEXT_USER       The current context's user. Corresponds to column AUTHINFO in the
-  #                              output of `kubectl config get-contexts`.
-  #
-  # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
-  # the following extra parameters are available:
-  #
-  # - P9K_KUBECONTEXT_CLOUD_NAME     Either "gke" or "eks".
-  # - P9K_KUBECONTEXT_CLOUD_ACCOUNT  Account/project ID.
-  # - P9K_KUBECONTEXT_CLOUD_ZONE     Availability zone.
-  # - P9K_KUBECONTEXT_CLOUD_CLUSTER  Cluster.
-  #
-  # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
-  # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
-  #
-  #   - P9K_KUBECONTEXT_CLOUD_NAME=gke
-  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
-  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
-  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
-  #
-  # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
-  #
-  #   - P9K_KUBECONTEXT_CLOUD_NAME=eks
-  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
-  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
-  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
-  # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
-  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
-  # Append the current context's namespace if it's not "default".
-  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
-
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat '
-
-  ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
-  # Don't show terraform workspace if it's literally "default".
-  typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
-  # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current terraform workspace gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       OTHER)
-  #
-  # If your current terraform workspace is "project_test", its class is TEST because "project_test"
-  # doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'         OTHER)
-  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38
-  # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ terraform_version: terraform version (https://www.terraform.io) ]##############
-  # Terraform version color.
-  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
-  # Show aws only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show aws.
-  typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
-
-  # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current AWS profile gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_AWS_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       DEFAULT)
-  #
-  # If your current AWS profile is "company_test", its class is TEST
-  # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_AWS_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'       DEFAULT)
-  typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208
-  # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # AWS segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_AWS_PROFILE  The name of the current AWS profile.
-  # - P9K_AWS_REGION   The region associated with the current AWS profile.
-  typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
-
-  #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
-  # AWS Elastic Beanstalk environment color.
-  typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
-  # Show azure only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show azure.
-  typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
-
-  # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current azure account name gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_AZURE_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       OTHER)
-  #
-  # If your current azure account is "company_test", its class is TEST because "company_test"
-  # doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_AZURE_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'         OTHER)
-
-  # Azure account name color.
-  typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=32
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
-  # Show gcloud only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show gcloud.
-  typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
-   # Google cloud color.
-  typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32
-
-  # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or
-  # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative
-  # enough. You can use the following parameters in the expansions. Each of them corresponds to the
-  # output of `gcloud` tool.
-  #
-  #   Parameter                | Source
-  #   -------------------------|--------------------------------------------------------------------
-  #   P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)'
-  #   P9K_GCLOUD_ACCOUNT       | gcloud config get-value account
-  #   P9K_GCLOUD_PROJECT_ID    | gcloud config get-value project
-  #   P9K_GCLOUD_PROJECT_NAME  | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
-  #
-  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
-  #
-  # Obtaining project name requires sending a request to Google servers. This can take a long time
-  # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
-  # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets
-  # set and gcloud prompt segment transitions to state COMPLETE.
-  #
-  # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL
-  # and COMPLETE. You can also hide gcloud in state PARTIAL by setting
-  # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and
-  # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty.
-  typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}'
-  typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}'
-
-  # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name
-  # this often. Negative value disables periodic polling. In this mode project name is retrieved
-  # only when the current configuration, account or project id changes.
-  typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
-  # Show google_app_cred only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show google_app_cred.
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
-
-  # Google application credentials classes for the purpose of using different colors, icons and
-  # expansions with different credentials.
-  #
-  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first
-  # element in each pair defines a pattern against which the current kubernetes context gets
-  # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion
-  # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION
-  # parameters, you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order.
-  # The first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
-  #     '*:*prod*:*'  PROD
-  #     '*:*test*:*'  TEST
-  #     '*'           DEFAULT)
-  #
-  # If your current Google application credentials is "service_account deathray-testing x@y.com",
-  # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID'
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
-      # '*:*prod*:*'  PROD    # These values are examples that are unlikely
-      # '*:*test*:*'  TEST    # to match your needs. Customize them as needed.
-      '*'             DEFAULT)
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32
-  # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by
-  # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference:
-  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
-  #
-  # You can use the following parameters in the expansion. Each of them corresponds to one of the
-  # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS.
-  #
-  #   Parameter                        | JSON key file field
-  #   ---------------------------------+---------------
-  #   P9K_GOOGLE_APP_CRED_TYPE         | type
-  #   P9K_GOOGLE_APP_CRED_PROJECT_ID   | project_id
-  #   P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
-  #
-  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
-
-  ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
-  # Toolbox color.
-  typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178
-  # Don't display the name of the toolbox if it matches fedora-toolbox-*.
-  typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%fin '
-
-  ###############################[ public_ip: public IP address ]###############################
-  # Public IP color.
-  typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ########################[ vpn_ip: virtual private network indicator ]#########################
-  # VPN IP color.
-  typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81
-  # When on VPN, show just an icon without the IP address.
-  # Tip: To display the private IP address when on VPN, remove the next line.
-  typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
-  # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
-  # to see the name of the interface.
-  typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
-  # If set to true, show one segment per matching network interface. If set to false, show only
-  # one segment corresponding to the first matching network interface.
-  # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
-  typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ ip: ip address and bandwidth usage for a specified network interface ]###########
-  # IP color.
-  typeset -g POWERLEVEL9K_IP_FOREGROUND=38
-  # The following parameters are accessible within the expansion:
-  #
-  #   Parameter             | Meaning
-  #   ----------------------+-------------------------------------------
-  #   P9K_IP_IP             | IP address
-  #   P9K_IP_INTERFACE      | network interface
-  #   P9K_IP_RX_BYTES       | total number of bytes received
-  #   P9K_IP_TX_BYTES       | total number of bytes sent
-  #   P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
-  #   P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
-  #   P9K_IP_RX_RATE        | receive rate (since last prompt)
-  #   P9K_IP_TX_RATE        | send rate (since last prompt)
-  typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='$P9K_IP_IP${P9K_IP_RX_RATE:+ %70F⇣$P9K_IP_RX_RATE}${P9K_IP_TX_RATE:+ %215F⇡$P9K_IP_TX_RATE}'
-  # Show information for the first network interface whose name matches this regular expression.
-  # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
-  typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #########################[ proxy: system-wide http/https/ftp proxy ]##########################
-  # Proxy color.
-  typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################################[ battery: internal battery ]#################################
-  # Show battery in red when it's below this level and not connected to power supply.
-  typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
-  typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160
-  # Show battery in green when it's charging or fully charged.
-  typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70
-  # Show battery in yellow when it's discharging.
-  typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178
-  # Battery pictograms going from low to high level of charge.
-  typeset -g POWERLEVEL9K_BATTERY_STAGES='\UF008E\UF007A\UF007B\UF007C\UF007D\UF007E\UF007F\UF0080\UF0081\UF0082\UF0079'
-  # Don't show the remaining time to charge/discharge.
-  typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
-
-  #####################################[ wifi: wifi speed ]#####################################
-  # WiFi color.
-  typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS).
-  #
-  #   # Wifi colors and icons for different signal strength levels (low to high).
-  #   typeset -g my_wifi_fg=(68 68 68 68 68)                           # <-- change these values
-  #   typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi')     # <-- change these values
-  #
-  #   typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps'
-  #   typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}'
-  #
-  # The following parameters are accessible within the expansions:
-  #
-  #   Parameter             | Meaning
-  #   ----------------------+---------------
-  #   P9K_WIFI_SSID         | service set identifier, a.k.a. network name
-  #   P9K_WIFI_LINK_AUTH    | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
-  #   P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
-  #   P9K_WIFI_RSSI         | signal strength in dBm, from -120 to 0
-  #   P9K_WIFI_NOISE        | noise in dBm, from -120 to 0
-  #   P9K_WIFI_BARS         | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
-
-  ####################################[ time: current time ]####################################
-  # Current time color.
-  typeset -g POWERLEVEL9K_TIME_FOREGROUND=240
-  # Format for the current time: 09:51:02. See `man 3 strftime`.
-  typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M}'
-  # If set to true, time will update when you hit enter. This way prompts for the past
-  # commands will contain the start times of their commands as opposed to the default
-  # behavior where they contain the end times of their preceding commands.
-  typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
-  # Custom icon.
-  typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION=''
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_TIME_PREFIX='%fat '
-
-  # Example of a user-defined prompt segment. Function prompt_example will be called on every
-  # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or
-  # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user.
-  #
-  # Type `p10k help segment` for documentation and a more sophisticated example.
-  function prompt_example() {
-    p10k segment -f 208 -i '⭐' -t 'hello, %n'
-  }
-
-  function prompt_cwd() {
-    p10k segment -f 66 -e -t "${PWD##*/}"
-  }
-
-  # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
-  # is to generate the prompt segment for display in instant prompt. See
-  # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
-  #
-  # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
-  # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
-  # will replay these calls without actually calling instant_prompt_*. It is imperative that
-  # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
-  # rule is not observed, the content of instant prompt will be incorrect.
-  #
-  # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If
-  # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt.
-  function instant_prompt_example() {
-    # Since prompt_example always makes the same `p10k segment` calls, we can call it from
-    # instant_prompt_example. This will give us the same `example` prompt segment in the instant
-    # and regular prompts.
-    prompt_example
-    prompt_cwd
-  }
-
-  # User-defined prompt segments can be customized the same way as built-in segments.
-  # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208
-  # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
-  # when accepting a command line. Supported values:
-  #
-  #   - off:      Don't change prompt when accepting a command line.
-  #   - always:   Trim down prompt when accepting a command line.
-  #   - same-dir: Trim down prompt when accepting a command line unless this is the first command
-  #               typed after changing current working directory.
-  typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
-
-  # Instant prompt mode.
-  #
-  #   - off:     Disable instant prompt. Choose this if you've tried instant prompt and found
-  #              it incompatible with your zsh configuration files.
-  #   - quiet:   Enable instant prompt and don't print warnings when detecting console output
-  #              during zsh initialization. Choose this if you've read and understood
-  #              https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
-  #   - verbose: Enable instant prompt and print a warning when detecting console output during
-  #              zsh initialization. Choose this if you've never tried instant prompt, haven't
-  #              seen the warning, or if you are unsure what this all means.
-  typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
-
-  # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
-  # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
-  # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
-  # really need it.
-  typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
-
-  # If p10k is already loaded, reload configuration.
-  # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
-  (( ! $+functions[p10k] )) || p10k reload
-}
-
-# Tell `p10k configure` which file it should overwrite.
-typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
-
-(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
-'builtin' 'unset' 'p10k_config_opts'
diff --git a/.zshrc b/.zshrc
index 22c0b4c..545e2bb 100644
--- a/.zshrc
+++ b/.zshrc
@@ -1,10 +1,3 @@
-# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
-# Initialization code that may require console input (password prompts, [y/n]
-# confirmations, etc.) must go above this block; everything else may go below.
-if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
-  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
-fi
-
 if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
     print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
     command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
@@ -29,7 +22,6 @@ zi ice wait lucid
 zi load olets/zsh-abbr
 zi ice wait lucid
 zi snippet https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/shrink-path/shrink-path.plugin.zsh
-zinit ice depth=1; zinit light romkatv/powerlevel10k
 
 zstyle ':completion:*' use-cache on
 zstyle ':completion:*' cache-path ~/.zsh/cache
@@ -151,10 +143,6 @@ rg() {
 }
 
 
-## Prompt
-# setopt TRANSIENT_RPROMPT
-# eval "$(starship init zsh)"
-
 ## vim
 export EDITOR=nvim
 
@@ -282,5 +270,5 @@ compdef _grc grc
 # Atuin history
 eval "$(atuin init zsh --disable-up-arrow)"
 
-# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
-[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
+# Prompt
+eval "$(oh-my-posh init zsh --config $HOME/.config/oh-my-posh/config.yaml)"

From 55afa4948e657edcac3b148d68e0ab4fddd7a268 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 15 Mar 2024 14:47:31 +0100
Subject: [PATCH 196/656] nvim: upgrade

---
 .config/nvim/lazy-lock.json | 42 ++++++++++++++++++-------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 9a3e0c9..9d97c6b 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,7 +1,7 @@
 {
-  "LazyVim": { "branch": "main", "commit": "e3bfcb9bf74292dc846f5d1710fbb2e8f36a687a" },
+  "LazyVim": { "branch": "main", "commit": "0107a1079be7fb92f7d5b7e2c40818f47cf425d9" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "b788bde023f9fbc2eb86e89d32c0bf98a60ae406" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "7efe039d0675f4f1b03f946cc457891d13a6495f" },
   "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
   "catppuccin": { "branch": "main", "commit": "045e3499d9ec8d84635fb08877ae44fd33f6a38d" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
@@ -10,18 +10,18 @@
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "5a15cc46e75cad804fd51ec5af9227aeb1d1bdaa" },
+  "conform.nvim": { "branch": "master", "commit": "a605ce4b2db397c84ae6fa8bcfc85f00b985bc73" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
-  "crates.nvim": { "branch": "main", "commit": "535773ed3b321d68ddd6ef8cd5a1e07b345026a6" },
+  "crates.nvim": { "branch": "main", "commit": "b4f4987ccdb1cc3899ee541ef4375c73c48c4570" },
   "dashboard-nvim": { "branch": "master", "commit": "413442b12d85315fc626c44a0ce4929b213ef604" },
-  "dressing.nvim": { "branch": "master", "commit": "6f212262061a2120e42da0d1e87326e8a41c0478" },
+  "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
   "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
-  "gitsigns.nvim": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" },
+  "gitsigns.nvim": { "branch": "main", "commit": "4e348641b8206c3b8d23080999e3ddbe4ca90efc" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
   "lazy.nvim": { "branch": "main", "commit": "83493db50a434a4c5c648faf41e2ead80f96e478" },
-  "lualine.nvim": { "branch": "master", "commit": "8b56462bfb746760465264de41b4907310f113ec" },
+  "lualine.nvim": { "branch": "master", "commit": "26dac2fcadb6e622790ab08e36d0dba3d3765398" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "55716a879568a498fa236593c8119789054a3b8e" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
@@ -31,35 +31,35 @@
   "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "7f2ebdef3b55374390714ac7c0a7fe6b0dae498a" },
-  "neoconf.nvim": { "branch": "main", "commit": "d21739358bca9811f783c9a3d5e91c7b3abc3005" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "742db4e60c74e5fbcc596aaf9e7575e1342dfd09" },
+  "neoconf.nvim": { "branch": "main", "commit": "ffdeab72dc167543f9b3355baceb0918f1e81fc0" },
   "neodev.nvim": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" },
   "noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
-  "none-ls.nvim": { "branch": "main", "commit": "ff3819c52ca04232fb70fbd6c1639de9abcbe122" },
-  "nui.nvim": { "branch": "main", "commit": "756c59f46057cd2d43619cd3a6d4e01b2aa60295" },
+  "none-ls.nvim": { "branch": "main", "commit": "e25d2fcb24364b9cdb1e6b24a2399dfda5dbdf0c" },
+  "nui.nvim": { "branch": "main", "commit": "3dc46d725f7b94bee5117c0a699b57b1902b5d65" },
   "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
-  "nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" },
+  "nvim-dap": { "branch": "master", "commit": "c43c2473ecb482a9d91f32c1d4c0098fffad3c7d" },
   "nvim-dap-go": { "branch": "main", "commit": "64f73400761e2d19459e664a52ea478f3a4420e7" },
   "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "baa5b0dc6663284cce32e0d00ac1f2511b13496f" },
-  "nvim-lint": { "branch": "master", "commit": "e824adb9bc01647f71e55457353a68f0f37f9931" },
-  "nvim-lspconfig": { "branch": "master", "commit": "1917b562a02f20885900b1da0f0ea25028ccedab" },
+  "nvim-lint": { "branch": "master", "commit": "03b1fc593638098a35de26d768d5f43b0fe57041" },
+  "nvim-lspconfig": { "branch": "master", "commit": "4bdd3800b4148f670c6cf55ef65f490148eeb550" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
-  "nvim-spectre": { "branch": "master", "commit": "3712ff0cdf4f9f877d9ca708d835a877d9a0abaf" },
-  "nvim-treesitter": { "branch": "master", "commit": "488bec03254207b1dd071be8cb1fb78434b6e777" },
+  "nvim-spectre": { "branch": "master", "commit": "d1db6c1d37252b5a38f199e2f590c5a1617d9254" },
+  "nvim-treesitter": { "branch": "master", "commit": "f87882858438834d2fbb6379aa2be37de901751b" },
   "nvim-treesitter-context": { "branch": "master", "commit": "b8b7e52c1517d401d7c519787d5dc4528c41291a" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "b7a0bfa3e93697ca5b61b15df633404bf8f45883" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
-  "nvim-web-devicons": { "branch": "master", "commit": "75df79feb02d5e0ec114e447453775d4d291ea03" },
+  "nvim-web-devicons": { "branch": "master", "commit": "a851380fbea4c1312d11f13d5cdc86a7a19808dd" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" },
-  "rustaceanvim": { "branch": "master", "commit": "5dc35a075ad7c9d2f6493065e1e5970e4ad61504" },
+  "rustaceanvim": { "branch": "master", "commit": "69a22c2ec63ab375190006751562b62ebb318250" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "7472420f8734c710bd7009081cef9b97f08a3821" },
+  "telescope.nvim": { "branch": "master", "commit": "67c598fdd4fca113224281c85721c4d8a6df055e" },
   "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
   "tokyonight.nvim": { "branch": "main", "commit": "c025baf23b62f044eff1f4ef561c45de636f0e32" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },

From 6318a796a89091f4a48e786e1432960e6639d49e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 16 Mar 2024 09:51:42 +0100
Subject: [PATCH 197/656] opener: run after graphical-session

---
 .config/systemd/user/opener@.service | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/systemd/user/opener@.service b/.config/systemd/user/opener@.service
index ae713c9..fcd14c9 100644
--- a/.config/systemd/user/opener@.service
+++ b/.config/systemd/user/opener@.service
@@ -1,5 +1,6 @@
 [Unit]
 Description=Open URL in your local web browser from the SSH-connected remote environment.
+After=graphical-session.target
 
 [Service]
 Restart=always

From 74a33e44ea058ce9b6031dee8987c459a49943a1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 18 Mar 2024 17:47:39 +0100
Subject: [PATCH 198/656] nvim: colors

---
 .config/atuin/config.toml                |  2 +-
 .config/nvim/lazy-lock.json              | 36 ++++++++++++------------
 .config/nvim/lua/config/lazy.lua         |  2 ++
 .config/nvim/lua/plugins/colorscheme.lua |  7 ++++-
 .config/nvim/lua/plugins/extras.lua      |  3 +-
 .config/nvim/lua/plugins/ui.lua          |  7 ++++-
 6 files changed, 34 insertions(+), 23 deletions(-)

diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml
index 17ba8dc..ecfbfb3 100644
--- a/.config/atuin/config.toml
+++ b/.config/atuin/config.toml
@@ -111,7 +111,7 @@ ctrl_n_shortcuts = true
 #   "^innocuous-cmd .*--secret=.+"
 # ]
 
-history_filter = ["VAULT_TOKEN="]
+history_filter = []
 
 ## prevent commands run with cwd matching any of these regexes from being written
 ## to history. Note that these regular expressions are unanchored, i.e. if they don't
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 9d97c6b..25d50fa 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,7 +1,7 @@
 {
   "LazyVim": { "branch": "main", "commit": "0107a1079be7fb92f7d5b7e2c40818f47cf425d9" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "7efe039d0675f4f1b03f946cc457891d13a6495f" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "4d798fd5b692c8fce77268aba8f6f926b0c9f835" },
   "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
   "catppuccin": { "branch": "main", "commit": "045e3499d9ec8d84635fb08877ae44fd33f6a38d" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
@@ -9,21 +9,21 @@
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
-  "colorbuddy.nvim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
-  "conform.nvim": { "branch": "master", "commit": "a605ce4b2db397c84ae6fa8bcfc85f00b985bc73" },
+  "colorbuddy.nvim": { "branch": "master", "commit": "e498b2b49d9ad0c3fb8168a02b237b689dcd4051" },
+  "conform.nvim": { "branch": "master", "commit": "0a530b31acacf10eca9f9a74b2434ece4d232ca3" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
   "crates.nvim": { "branch": "main", "commit": "b4f4987ccdb1cc3899ee541ef4375c73c48c4570" },
-  "dashboard-nvim": { "branch": "master", "commit": "413442b12d85315fc626c44a0ce4929b213ef604" },
+  "dashboard-nvim": { "branch": "master", "commit": "92c94c8c3c92ddd29e1181a0aebcc22f2fe96f71" },
   "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
   "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
-  "gitsigns.nvim": { "branch": "main", "commit": "4e348641b8206c3b8d23080999e3ddbe4ca90efc" },
+  "gitsigns.nvim": { "branch": "main", "commit": "078041e9d060a386b0c9d3a8c7a7b019a35d3fb0" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
   "lazy.nvim": { "branch": "main", "commit": "83493db50a434a4c5c648faf41e2ead80f96e478" },
-  "lualine.nvim": { "branch": "master", "commit": "26dac2fcadb6e622790ab08e36d0dba3d3765398" },
+  "lualine.nvim": { "branch": "master", "commit": "af4c3cf17206810880d2a93562e0a4c0d901c684" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "55716a879568a498fa236593c8119789054a3b8e" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "82c7cb08ddb836ad938b2708e50085f12a8825d2" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" },
   "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
@@ -32,39 +32,39 @@
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "742db4e60c74e5fbcc596aaf9e7575e1342dfd09" },
-  "neoconf.nvim": { "branch": "main", "commit": "ffdeab72dc167543f9b3355baceb0918f1e81fc0" },
+  "neoconf.nvim": { "branch": "main", "commit": "68753daced3b41d6b5e4a441b10a69c1ec33523c" },
   "neodev.nvim": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" },
   "noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
-  "none-ls.nvim": { "branch": "main", "commit": "e25d2fcb24364b9cdb1e6b24a2399dfda5dbdf0c" },
-  "nui.nvim": { "branch": "main", "commit": "3dc46d725f7b94bee5117c0a699b57b1902b5d65" },
+  "none-ls.nvim": { "branch": "main", "commit": "72e25ed4162474ef5d666525853f8a42bffd97c5" },
+  "nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" },
   "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
-  "nvim-dap": { "branch": "master", "commit": "c43c2473ecb482a9d91f32c1d4c0098fffad3c7d" },
+  "nvim-dap": { "branch": "master", "commit": "c1695e500c7d552a0a19953a9aefcc89178fb1af" },
   "nvim-dap-go": { "branch": "main", "commit": "64f73400761e2d19459e664a52ea478f3a4420e7" },
   "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "baa5b0dc6663284cce32e0d00ac1f2511b13496f" },
   "nvim-lint": { "branch": "master", "commit": "03b1fc593638098a35de26d768d5f43b0fe57041" },
-  "nvim-lspconfig": { "branch": "master", "commit": "4bdd3800b4148f670c6cf55ef65f490148eeb550" },
+  "nvim-lspconfig": { "branch": "master", "commit": "8c1831817d40925d22cd8a555296c44c02fdaaf5" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
-  "nvim-noirbuddy": { "branch": "master", "commit": "131b032debf1d9aebd096f41bb3fb7b9e1545b7c" },
+  "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "d1db6c1d37252b5a38f199e2f590c5a1617d9254" },
-  "nvim-treesitter": { "branch": "master", "commit": "f87882858438834d2fbb6379aa2be37de901751b" },
+  "nvim-treesitter": { "branch": "master", "commit": "e6d80e5efdbec343c4ff30d627cee129e545b878" },
   "nvim-treesitter-context": { "branch": "master", "commit": "b8b7e52c1517d401d7c519787d5dc4528c41291a" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
-  "nvim-web-devicons": { "branch": "master", "commit": "a851380fbea4c1312d11f13d5cdc86a7a19808dd" },
+  "nvim-web-devicons": { "branch": "master", "commit": "cb0c967c9723a76ccb1be0cc3a9a10e577d2f6ec" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" },
-  "rustaceanvim": { "branch": "master", "commit": "69a22c2ec63ab375190006751562b62ebb318250" },
+  "rustaceanvim": { "branch": "master", "commit": "6c9b8a9051d28db984eb028132e7031597424d6e" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "67c598fdd4fca113224281c85721c4d8a6df055e" },
+  "telescope.nvim": { "branch": "master", "commit": "1fa3b801f034caa609e2570cd2e422cf9416819c" },
   "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
   "tokyonight.nvim": { "branch": "main", "commit": "c025baf23b62f044eff1f4ef561c45de636f0e32" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
   "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
-  "vim-startuptime": { "branch": "master", "commit": "308b0088a864c4711a96e45b6734cf9294074f65" },
+  "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
   "yanky.nvim": { "branch": "main", "commit": "7c5cbf0122ff2dfbb6a92f14885894f65949cc8b" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index c81386d..ff1e9c0 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -14,8 +14,10 @@ require("lazy").setup({
 		-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
 		{ import = "lazyvim.plugins.extras.coding.copilot" },
 		{ import = "lazyvim.plugins.extras.coding.yanky" },
+		{ import = "lazyvim.plugins.extras.formatting.prettier" },
 		{ import = "lazyvim.plugins.extras.lang.go" },
 		{ import = "lazyvim.plugins.extras.lang.json" },
+		{ import = "lazyvim.plugins.extras.lang.markdown" },
 		{ import = "lazyvim.plugins.extras.lang.rust" },
 		{ import = "lazyvim.plugins.extras.lang.typescript" },
 		{ import = "lazyvim.plugins.extras.lang.yaml" },
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index f02ab3b..b37b0b3 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -60,7 +60,12 @@ return {
 					},
 				})
 				--
-				local Color, colors, Group, groups, styles = require("colorbuddy").setup()
+				local colorbuddy = require("colorbuddy")
+				local Color = colorbuddy.Color
+				local colors = colorbuddy.colors
+				local Group = colorbuddy.Group
+				local groups = colorbuddy.groups
+				local styles = colorbuddy.styles
 
 				Color.new("ColorColumn", "#171e26")
 				Group.new("ColorColumn", nil, colors.ColorColumn)
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 4e41075..7bdce04 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -6,8 +6,7 @@ return {
 			opts.root_dir = opts.root_dir
 				or require("null-ls.utils").root_pattern(".null-ls-root", ".neoconf.json", "Makefile", ".git")
 			opts.sources = vim.list_extend(opts.sources or {}, {
-				nls.builtins.formatting.fish_indent,
-				nls.builtins.diagnostics.fish,
+				nls.builtins.formatting.mdformat,
 				nls.builtins.formatting.stylua,
 				nls.builtins.formatting.shfmt,
 				nls.builtins.formatting.buf,
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index 2beed80..fd05e63 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -2,7 +2,12 @@ local hooks = require("ibl.hooks")
 -- create the highlight groups in the highlight setup hook, so they are reset
 -- every time the colorscheme changes
 hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
-	local Color, colors, Group, groups, styles = require("colorbuddy").setup()
+	local colorbuddy = require("colorbuddy")
+	local Color = colorbuddy.Color
+	local colors = colorbuddy.colors
+	local Group = colorbuddy.Group
+	local groups = colorbuddy.groups
+	local styles = colorbuddy.styles
 	Color.new("IndentBlanklineIndent", "#1e2835", styles.nocombine)
 	Group.new("IndentBlanklineIndent1", colors.IndentBlanklineIndent:light(0.1))
 	Group.new("IndentBlanklineIndent2", colors.IndentBlanklineIndent:light(0.15))

From d977d0bdacdf96a6b9e10b56bf2aea0ce78d2a7f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 18 Mar 2024 17:52:42 +0100
Subject: [PATCH 199/656] nvim: shorted delay for mini.indentscope

---
 .config/nvim/lua/plugins/ui.lua | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index fd05e63..f3cdcf9 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -21,6 +21,14 @@ hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
 end)
 
 return {
+	{
+		"echasnovski/mini.indentscope",
+		opts = {
+			draw = {
+				delay = 25, -- ms
+			},
+		},
+	},
 	{
 		"akinsho/bufferline.nvim",
 		enabled = false,

From 12ce3d85d17f8e3a1074feed66c2626af5c79be2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 19 Mar 2024 17:40:21 +0100
Subject: [PATCH 200/656] xdg-open: fix unbound variable error

---
 bin/xdg-open | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bin/xdg-open b/bin/xdg-open
index 1a10b0b..219baf3 100755
--- a/bin/xdg-open
+++ b/bin/xdg-open
@@ -1,5 +1,5 @@
 #!/usr/bin/env sh
-set -eu
+set -e
 
 # Use local xdg-open if not in an ssh session
 [ -n "$SSH_TTY" ] || exec /usr/bin/xdg-open "$@"

From a2660c38c062b4ab0ef33d553865849443626cff Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 23 Mar 2024 16:36:54 +0100
Subject: [PATCH 201/656] tmux: use OSC 133 to jump to previous/next prompt in
 history

---
 .config/oh-my-posh/config.yaml | 1 +
 .tmux.conf                     | 8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/.config/oh-my-posh/config.yaml b/.config/oh-my-posh/config.yaml
index ece6a4b..c73a2fb 100644
--- a/.config/oh-my-posh/config.yaml
+++ b/.config/oh-my-posh/config.yaml
@@ -3,6 +3,7 @@ version: 2
 final_space: true
 pwd: osc7
 disable_cursor_positioning: true
+shell_integration: true
 blocks:
   - type: prompt
     alignment: left
diff --git a/.tmux.conf b/.tmux.conf
index b890397..17d82ee 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -31,8 +31,12 @@ bind -n M-h select-pane -L
 bind -n M-l select-pane -R
 bind -n M-Left select-pane -L
 bind -n M-Right select-pane -R
-bind -n M-j select-pane -U
-bind -n M-k select-pane -D
+# bind -n M-j select-pane -U
+# bind -n M-k select-pane -D
+bind -T copy-mode-vi M-k send-keys -X cursor-up \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
+bind -T copy-mode-vi M-j send-keys -X cursor-down \; send-keys -X next-prompt -o \; send-keys -X cursor-up
+bind -n M-k copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
+bind -n M-j copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
 bind -n M-Up select-pane -U
 bind -n M-Down select-pane -D
 bind -n M-1 select-window -t nvim

From 6c1643445744d817bd6e164209a12b05de341938 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 23 Mar 2024 16:37:47 +0100
Subject: [PATCH 202/656] nvim: update

---
 .config/nvim/lazy-lock.json | 54 ++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 31 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 25d50fa..74cb8f4 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,69 +1,61 @@
 {
-  "LazyVim": { "branch": "main", "commit": "0107a1079be7fb92f7d5b7e2c40818f47cf425d9" },
+  "LazyVim": { "branch": "main", "commit": "c91982a8bca120857f24f0eb0dd9bdcc7d574f50" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "4d798fd5b692c8fce77268aba8f6f926b0c9f835" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "ed3f891a5deefcd94c62c8e375d1efb1ce53464b" },
   "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
-  "catppuccin": { "branch": "main", "commit": "045e3499d9ec8d84635fb08877ae44fd33f6a38d" },
+  "catppuccin": { "branch": "main", "commit": "56fb98218d22d5c326387bf9e4076227e7372e6b" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
-  "cmp-emoji": { "branch": "main", "commit": "0acd702358230abeb6576769f7116e766bca28a0" },
+  "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
-  "colorbuddy.nvim": { "branch": "master", "commit": "e498b2b49d9ad0c3fb8168a02b237b689dcd4051" },
-  "conform.nvim": { "branch": "master", "commit": "0a530b31acacf10eca9f9a74b2434ece4d232ca3" },
+  "colorbuddy.nvim": { "branch": "master", "commit": "9e96ccd88f4510d0a54ce1d5c11119eac9fb217e" },
+  "conform.nvim": { "branch": "master", "commit": "bf109f061fc3cd75394b7823923187ae045cbf22" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
   "crates.nvim": { "branch": "main", "commit": "b4f4987ccdb1cc3899ee541ef4375c73c48c4570" },
   "dashboard-nvim": { "branch": "master", "commit": "92c94c8c3c92ddd29e1181a0aebcc22f2fe96f71" },
   "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
   "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
-  "gitsigns.nvim": { "branch": "main", "commit": "078041e9d060a386b0c9d3a8c7a7b019a35d3fb0" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
-  "lazy.nvim": { "branch": "main", "commit": "83493db50a434a4c5c648faf41e2ead80f96e478" },
-  "lualine.nvim": { "branch": "master", "commit": "af4c3cf17206810880d2a93562e0a4c0d901c684" },
+  "lazy.nvim": { "branch": "main", "commit": "af6afefbb46ab29a8a1db69536b04290a9403876" },
+  "lualine.nvim": { "branch": "master", "commit": "b5e8bb642138f787a2c1c5aedc2a78cb2cebbd67" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "82c7cb08ddb836ad938b2708e50085f12a8825d2" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "9dfcf2036c223920826140f0151d929a43f9eceb" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
-  "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" },
+  "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" },
   "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
-  "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
   "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "742db4e60c74e5fbcc596aaf9e7575e1342dfd09" },
-  "neoconf.nvim": { "branch": "main", "commit": "68753daced3b41d6b5e4a441b10a69c1ec33523c" },
-  "neodev.nvim": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" },
+  "neoconf.nvim": { "branch": "main", "commit": "9a419c4fa772c4c61839a8f7fdd8e863679a8c94" },
+  "neodev.nvim": { "branch": "main", "commit": "6a533ed9d3435dcaa456380d833ea04da37ea2ed" },
   "noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
-  "none-ls.nvim": { "branch": "main", "commit": "72e25ed4162474ef5d666525853f8a42bffd97c5" },
+  "none-ls.nvim": { "branch": "main", "commit": "18910d09d21d7df339805343bfe4a2b2e41c057b" },
   "nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" },
-  "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
+  "nvim-cmp": { "branch": "main", "commit": "6ed1c93465c33f6a53b4c3f103bf9d1ab696382a" },
   "nvim-dap": { "branch": "master", "commit": "c1695e500c7d552a0a19953a9aefcc89178fb1af" },
   "nvim-dap-go": { "branch": "main", "commit": "64f73400761e2d19459e664a52ea478f3a4420e7" },
-  "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
+  "nvim-dap-ui": { "branch": "master", "commit": "edfa93f60b189e5952c016eee262d0685d838450" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "baa5b0dc6663284cce32e0d00ac1f2511b13496f" },
-  "nvim-lint": { "branch": "master", "commit": "03b1fc593638098a35de26d768d5f43b0fe57041" },
-  "nvim-lspconfig": { "branch": "master", "commit": "8c1831817d40925d22cd8a555296c44c02fdaaf5" },
+  "nvim-lint": { "branch": "master", "commit": "2669aabb8362fdc36aced5ba864b7135636ea863" },
+  "nvim-lspconfig": { "branch": "master", "commit": "24662f92c18edd397ef12d635b11dbdedef2d094" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
-  "nvim-spectre": { "branch": "master", "commit": "d1db6c1d37252b5a38f199e2f590c5a1617d9254" },
-  "nvim-treesitter": { "branch": "master", "commit": "e6d80e5efdbec343c4ff30d627cee129e545b878" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "b8b7e52c1517d401d7c519787d5dc4528c41291a" },
+  "nvim-treesitter": { "branch": "master", "commit": "b009aba903565163442f2adecff72bc3193bb8fd" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "f19766163c18515fb4d3c12d572bf9cba6cdb990" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
-  "nvim-web-devicons": { "branch": "master", "commit": "cb0c967c9723a76ccb1be0cc3a9a10e577d2f6ec" },
+  "nvim-web-devicons": { "branch": "master", "commit": "585b2dc4bba2b5973f2b1d3e576709af5ac34fb6" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" },
-  "rustaceanvim": { "branch": "master", "commit": "6c9b8a9051d28db984eb028132e7031597424d6e" },
+  "rustaceanvim": { "branch": "master", "commit": "b0548ff58d34caa220f8806c518fedb6453fc48e" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
-  "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "1fa3b801f034caa609e2570cd2e422cf9416819c" },
-  "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
-  "tokyonight.nvim": { "branch": "main", "commit": "c025baf23b62f044eff1f4ef561c45de636f0e32" },
-  "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
-  "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
+  "telescope.nvim": { "branch": "master", "commit": "1e591885751d255b12c3649253cb6c2838e2c724" },
+  "tokyonight.nvim": { "branch": "main", "commit": "fbe3a27378fdd51a8ddd04f57012455436916a62" },
   "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
   "yanky.nvim": { "branch": "main", "commit": "7c5cbf0122ff2dfbb6a92f14885894f65949cc8b" }

From 1bde039e24703964740219eb3c33af7c559eaa94 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 24 Mar 2024 15:07:49 +0100
Subject: [PATCH 203/656] env: otel defaults

---
 .config/environment.d/otel.conf | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 .config/environment.d/otel.conf

diff --git a/.config/environment.d/otel.conf b/.config/environment.d/otel.conf
new file mode 100644
index 0000000..08d9968
--- /dev/null
+++ b/.config/environment.d/otel.conf
@@ -0,0 +1,3 @@
+OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.aarn.shelman.io
+OTEL_RESOURCE_ATTRIBUTES=instance=dln-dev
+OTEL_LOG_LEVEL=debug

From 819686b44f1ce3f90a6e1abd63465ec309e3749b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 24 Mar 2024 15:10:07 +0100
Subject: [PATCH 204/656] zsh: use session filtering for prefix history search

---
 .zsh/history.zsh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.zsh/history.zsh b/.zsh/history.zsh
index c46bf6f..267af14 100644
--- a/.zsh/history.zsh
+++ b/.zsh/history.zsh
@@ -13,6 +13,7 @@ function my-history-prefix-search() {
     (($offset < 0)) && return
     local result=$(
         atuin search \
+            --filter-mode session \
             --search-mode prefix \
             --limit 1 \
             --offset $offset \

From 982b6b968c8e3288c24acd04bd55dfa1e7bc8a59 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 25 Mar 2024 17:26:02 +0100
Subject: [PATCH 205/656] tmux-edit-helper: pass on nix-set environment vars to
 neovim

---
 bin/tmux-edit-helper | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper
index 95b1e65..c912ee7 100755
--- a/bin/tmux-edit-helper
+++ b/bin/tmux-edit-helper
@@ -22,7 +22,23 @@ _nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
 
 # nvim is not running/listening on remote socket, so start it.
 tmux new-window -S -n nvim \
+	-e "AR=$AR" \
+	-e "AS=$AS" \
 	-e "BUILD_COMMAND=$BUILD_COMMAND" \
-	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
+	-e "CC=$CC" \
+	-e "CXX=$CXX" \
 	-e "GOFLAGS=$GOFLAGS" \
+	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
+	-e "LC_ALL=$LC_ALL" \
+	-e "LD=$LD" \
+	-e "NM=$NM" \
+	-e "NM=$NM" \
+	-e "OBJCOPY=$OBJCOPY" \
+	-e "OBJDUMP=$OBJDUMP" \
+	-e "PATH=$PATH" \
+	-e "RANLIB=$RANLIB" \
+	-e "READELF=$READELF" \
+	-e "RUST_SRC_PATH=$RUST_SRC_PATH" \
+	-e "SIZE=$SIZE" \
+	-e "STRIP=$STRIP" \
 	nvim --listen "$_nvim_socket" "$_file"

From 54ad214a5b5d311af5d52c4f7d136fffeea97cfd Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 25 Mar 2024 19:28:23 +0100
Subject: [PATCH 206/656] gitui: catpuccin mocca theme

---
 .config/gitui/theme.ron | 44 ++++++++++++++++++++---------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/.config/gitui/theme.ron b/.config/gitui/theme.ron
index 466a37b..9818424 100644
--- a/.config/gitui/theme.ron
+++ b/.config/gitui/theme.ron
@@ -1,23 +1,23 @@
 (
-    selected_tab: None,
-    command_fg: Some(Rgb(2, 119, 189)),
-    selection_bg: Some(Rgb(225, 245, 254)),
-    selection_fg: Some(Reset),
-    cmdbar_bg: Some(Reset),
-    cmdbar_extra_lines_bg: Some(Rgb(2, 136, 209)),
-    disabled_fg: Some(Rgb(109, 76, 65)),
-    diff_line_add: Some(Rgb(56, 142, 60)),
-    diff_line_delete: Some(Rgb(230, 74, 25)),
-    diff_file_added: Some(Rgb(56, 142, 60)),
-    diff_file_removed: Some(Rgb(230, 74, 25)),
-    diff_file_moved: Some(Rgb(156, 39, 176)),
-    diff_file_modified: Some(Rgb(255, 111, 0)),
-    commit_hash: None,
-    commit_time: Some(Rgb(0, 131, 143)),
-    commit_author: None,
-    danger_fg: None,
-    push_gauge_bg: None,
-    push_gauge_fg: None,
-    tag_fg: None,
-    branch_fg: Some(LightBlue),
-)
\ No newline at end of file
+    selected_tab: Some(Reset),
+    command_fg: Some(Rgb(205, 214, 244)),
+    selection_bg: Some(Rgb(88, 91, 112)),
+    selection_fg: Some(Rgb(205, 214, 244)),
+    cmdbar_bg: Some(Rgb(24, 24, 37)),
+    cmdbar_extra_lines_bg: Some(Rgb(24, 24, 37)),
+    disabled_fg: Some(Rgb(127, 132, 156)),
+    diff_line_add: Some(Rgb(166, 227, 161)),
+    diff_line_delete: Some(Rgb(243, 139, 168)),
+    diff_file_added: Some(Rgb(249, 226, 175)),
+    diff_file_removed: Some(Rgb(235, 160, 172)),
+    diff_file_moved: Some(Rgb(203, 166, 247)),
+    diff_file_modified: Some(Rgb(250, 179, 135)),
+    commit_hash: Some(Rgb(180, 190, 254)),
+    commit_time: Some(Rgb(186, 194, 222)),
+    commit_author: Some(Rgb(116, 199, 236)),
+    danger_fg: Some(Rgb(243, 139, 168)),
+    push_gauge_bg: Some(Rgb(137, 180, 250)),
+    push_gauge_fg: Some(Rgb(30, 30, 46)),
+    tag_fg: Some(Rgb(245, 224, 220)),
+    branch_fg: Some(Rgb(148, 226, 213))
+)

From b135975253b6fd5b833c6dd24dcc45697e0cc5e9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 25 Mar 2024 19:29:27 +0100
Subject: [PATCH 207/656] zsh: add secondary, unfiltered, prefix search

---
 .zsh/history.zsh | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/.zsh/history.zsh b/.zsh/history.zsh
index 267af14..f0b901a 100644
--- a/.zsh/history.zsh
+++ b/.zsh/history.zsh
@@ -18,7 +18,13 @@ function my-history-prefix-search() {
             --limit 1 \
             --offset $offset \
             --format '{command}' \
-            "$MY_HISTORY_SEARCH_PREFIX"
+            "$MY_HISTORY_SEARCH_PREFIX" ||
+          atuin search \
+              --search-mode prefix \
+              --limit 1 \
+              --offset $offset \
+              --format '{command}' \
+              "$MY_HISTORY_SEARCH_PREFIX" ||
     )
     if [[ -n "$result" ]]; then
         BUFFER=$result

From 71f2b5356afadfdc854b9c3d6a96198dbcd9e1ce Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 25 Mar 2024 19:29:41 +0100
Subject: [PATCH 208/656] nvim: update

---
 .config/nvim/lazy-lock.json | 37 +++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 74cb8f4..002fb01 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,9 +1,9 @@
 {
   "LazyVim": { "branch": "main", "commit": "c91982a8bca120857f24f0eb0dd9bdcc7d574f50" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "ed3f891a5deefcd94c62c8e375d1efb1ce53464b" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "f87d415b51e67703cd3600d4bcde59a7a75171f4" },
   "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
-  "catppuccin": { "branch": "main", "commit": "56fb98218d22d5c326387bf9e4076227e7372e6b" },
+  "catppuccin": { "branch": "main", "commit": "9be7fcdff77b9a175ea7def77f6df0260971a15f" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
@@ -14,9 +14,10 @@
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
   "crates.nvim": { "branch": "main", "commit": "b4f4987ccdb1cc3899ee541ef4375c73c48c4570" },
-  "dashboard-nvim": { "branch": "master", "commit": "92c94c8c3c92ddd29e1181a0aebcc22f2fe96f71" },
+  "dashboard-nvim": { "branch": "master", "commit": "354e7bd0ad62f6e8b5ab9394b1ec7dbcaaa1470c" },
   "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
   "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
+  "gitsigns.nvim": { "branch": "main", "commit": "078041e9d060a386b0c9d3a8c7a7b019a35d3fb0" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
   "lazy.nvim": { "branch": "main", "commit": "af6afefbb46ab29a8a1db69536b04290a9403876" },
@@ -26,36 +27,44 @@
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" },
   "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
+  "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
   "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "8afbb06081ce1e4beb5b18945d14a608b10babeb" },
   "neoconf.nvim": { "branch": "main", "commit": "9a419c4fa772c4c61839a8f7fdd8e863679a8c94" },
   "neodev.nvim": { "branch": "main", "commit": "6a533ed9d3435dcaa456380d833ea04da37ea2ed" },
-  "noice.nvim": { "branch": "main", "commit": "bf67d70bd7265d075191e7812d8eb42b9791f737" },
+  "noice.nvim": { "branch": "main", "commit": "d29b26c329558ee4bb2e7f3cc25078929ef89b2f" },
   "none-ls.nvim": { "branch": "main", "commit": "18910d09d21d7df339805343bfe4a2b2e41c057b" },
   "nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" },
-  "nvim-cmp": { "branch": "main", "commit": "6ed1c93465c33f6a53b4c3f103bf9d1ab696382a" },
-  "nvim-dap": { "branch": "master", "commit": "c1695e500c7d552a0a19953a9aefcc89178fb1af" },
-  "nvim-dap-go": { "branch": "main", "commit": "64f73400761e2d19459e664a52ea478f3a4420e7" },
+  "nvim-cmp": { "branch": "main", "commit": "97dc716fc914c46577a4f254035ebef1aa72558a" },
+  "nvim-dap": { "branch": "master", "commit": "405df1dcc2e395ab5173a9c3d00e03942c023074" },
+  "nvim-dap-go": { "branch": "main", "commit": "36abe1d320cb61bfdf094d4e0fe815ef58f2302a" },
   "nvim-dap-ui": { "branch": "master", "commit": "edfa93f60b189e5952c016eee262d0685d838450" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "baa5b0dc6663284cce32e0d00ac1f2511b13496f" },
   "nvim-lint": { "branch": "master", "commit": "2669aabb8362fdc36aced5ba864b7135636ea863" },
-  "nvim-lspconfig": { "branch": "master", "commit": "24662f92c18edd397ef12d635b11dbdedef2d094" },
+  "nvim-lspconfig": { "branch": "master", "commit": "6e5c78ebc9936ca74add66bda22c566f951b6ee5" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
+  "nvim-nio": { "branch": "master", "commit": "33c62b3eadd8154169e42144de16ba4db6784bec" },
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
-  "nvim-treesitter": { "branch": "master", "commit": "b009aba903565163442f2adecff72bc3193bb8fd" },
+  "nvim-spectre": { "branch": "master", "commit": "31f62d7fc30257b2a5c5327ff7b47719da37a1b4" },
+  "nvim-treesitter": { "branch": "master", "commit": "aa31b8d4ccaa05e1ab30120e103f72adbd2837bc" },
   "nvim-treesitter-context": { "branch": "master", "commit": "f19766163c18515fb4d3c12d572bf9cba6cdb990" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
-  "nvim-web-devicons": { "branch": "master", "commit": "585b2dc4bba2b5973f2b1d3e576709af5ac34fb6" },
+  "nvim-web-devicons": { "branch": "master", "commit": "6662f059bf78e6092ba90cd1929599625f448f55" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
-  "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" },
-  "rustaceanvim": { "branch": "master", "commit": "b0548ff58d34caa220f8806c518fedb6453fc48e" },
+  "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" },
+  "rustaceanvim": { "branch": "master", "commit": "ff658ba1da85498135e02300797466a447754ff0" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
-  "telescope.nvim": { "branch": "master", "commit": "1e591885751d255b12c3649253cb6c2838e2c724" },
-  "tokyonight.nvim": { "branch": "main", "commit": "fbe3a27378fdd51a8ddd04f57012455436916a62" },
+  "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
+  "telescope.nvim": { "branch": "master", "commit": "c2b8311dfacd08b3056b8f0249025d633a4e71a8" },
+  "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
+  "tokyonight.nvim": { "branch": "main", "commit": "623c3cd60a8081b68edcaf544856c053249a659e" },
+  "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
+  "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
   "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
   "yanky.nvim": { "branch": "main", "commit": "7c5cbf0122ff2dfbb6a92f14885894f65949cc8b" }

From 57ad37b67e6298772721c81e7ca49545de73c62a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 25 Mar 2024 19:30:23 +0100
Subject: [PATCH 209/656] nvim: rust-analyzer config

---
 .config/nvim/lua/plugins/lsp.lua | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index 437f9d7..c1cfe44 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -3,15 +3,10 @@ return {
 		"neovim/nvim-lspconfig",
 		opts = {
 			inlay_hints = { enabled = true },
-			-- capabilities = {
-			-- 	workspace = {
-			-- 		didChangeWatchedFiles = {
-			-- 			dynamicRegistration = false,
-			-- 		},
-			-- 	},
-			-- },
 			servers = {
 				rust_analyzer = {
+					mason = false,
+					targetDir = true,
 					keys = {
 						{ "K", "<cmd>RustHoverActions<cr>", desc = "Hover Actions (Rust)" },
 						{ "<leader>cR", "<cmd>RustCodeAction<cr>", desc = "Code Action (Rust)" },
@@ -23,12 +18,7 @@ return {
 								allFeatures = true,
 								loadOutDirsFromCheck = true,
 								runBuildScripts = true,
-							},
-							-- Add clippy lints for Rust.
-							checkOnSave = {
-								allFeatures = true,
-								command = "clippy",
-								extraArgs = { "--no-deps" },
+								targetDir = true,
 							},
 							procMacro = {
 								enable = true,

From 6a52cd262c4ac97654ada3ce0bb2c6185d1572a6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 25 Mar 2024 22:57:04 +0100
Subject: [PATCH 210/656] Add fish config

---
 .config/fish/conf.d/abbr.fish              |  6 +++
 .config/fish/conf.d/aliases.fish           | 10 +++++
 .config/fish/conf.d/task.fish              | 37 ++++++++++++++++
 .config/fish/config.fish                   | 49 ++++++++++++++++++++++
 .config/fish/fish_variables                | 43 +++++++++++++++++++
 .config/fish/themes/Catppuccin Mocha.theme | 30 +++++++++++++
 .config/starship.toml                      |  4 +-
 .tmux.conf                                 |  6 +--
 8 files changed, 180 insertions(+), 5 deletions(-)
 create mode 100644 .config/fish/conf.d/abbr.fish
 create mode 100644 .config/fish/conf.d/aliases.fish
 create mode 100644 .config/fish/conf.d/task.fish
 create mode 100644 .config/fish/config.fish
 create mode 100644 .config/fish/fish_variables
 create mode 100644 .config/fish/themes/Catppuccin Mocha.theme

diff --git a/.config/fish/conf.d/abbr.fish b/.config/fish/conf.d/abbr.fish
new file mode 100644
index 0000000..9e5859a
--- /dev/null
+++ b/.config/fish/conf.d/abbr.fish
@@ -0,0 +1,6 @@
+abbr --add b git branch -va
+abbr --add d git diff --stat -p -C --color-words
+abbr --add new git checkout --detach main
+abbr --add s git st
+abbr --add sl git branchless smartlog
+abbr --add sw git branchless switch --interactive
diff --git a/.config/fish/conf.d/aliases.fish b/.config/fish/conf.d/aliases.fish
new file mode 100644
index 0000000..275eb25
--- /dev/null
+++ b/.config/fish/conf.d/aliases.fish
@@ -0,0 +1,10 @@
+alias e='tmux-edit-helper'
+alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
+alias git='git-branchless wrap --'
+alias l='bat --wrap=never --pager="less -S"'
+alias ls=eza
+alias tail='tail -n $LINES'
+alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"'
+alias top='btm --basic --enable_cache_memory --enable_gpu_memory --battery'
+alias w="history -1 | sed -e 's/[0-9]*  //' | xargs viddy -n1"
+alias xc=fish_clipboard_copy
diff --git a/.config/fish/conf.d/task.fish b/.config/fish/conf.d/task.fish
new file mode 100644
index 0000000..ee2d0a5
--- /dev/null
+++ b/.config/fish/conf.d/task.fish
@@ -0,0 +1,37 @@
+set GO_TASK_PROGNAME task
+
+function __task_get_tasks --description "Prints all available tasks with their description"
+  # Read the list of tasks (and potential errors)
+  $GO_TASK_PROGNAME --list-all 2>&1 | read -lz rawOutput
+
+  # Return on non-zero exit code (for cases when there is no Taskfile found or etc.)
+  if test $status -ne 0
+    return
+  end
+
+  # Grab names and descriptions (if any) of the tasks
+  set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s*\(.*\)\s*(aliases.*/\1\t\2/' -e 's/\* \(.*\):\s*\(.*\)/\1\t\2/'| string split0)
+  if test $output
+    echo $output
+  end
+end
+
+complete -c $GO_TASK_PROGNAME -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was
+specified.' -xa "(__task_get_tasks)"
+
+complete -c $GO_TASK_PROGNAME -s c -l color     -d 'colored output (default true)'
+complete -c $GO_TASK_PROGNAME -s d -l dir       -d 'sets directory of execution'
+complete -c $GO_TASK_PROGNAME      -l dry       -d 'compiles and prints tasks in the order that they would be run, without executing them'
+complete -c $GO_TASK_PROGNAME -s f -l force     -d 'forces execution even when the task is up-to-date'
+complete -c $GO_TASK_PROGNAME -s h -l help      -d 'shows Task usage'
+complete -c $GO_TASK_PROGNAME -s i -l init      -d 'creates a new Taskfile.yml in the current folder'
+complete -c $GO_TASK_PROGNAME -s l -l list      -d 'lists tasks with description of current Taskfile'
+complete -c $GO_TASK_PROGNAME -s o -l output    -d 'sets output style: [interleaved|group|prefixed]' -xa "interleaved group prefixed"
+complete -c $GO_TASK_PROGNAME -s p -l parallel  -d 'executes tasks provided on command line in parallel'
+complete -c $GO_TASK_PROGNAME -s s -l silent    -d 'disables echoing'
+complete -c $GO_TASK_PROGNAME      -l status    -d 'exits with non-zero exit code if any of the given tasks is not up-to-date'
+complete -c $GO_TASK_PROGNAME      -l summary   -d 'show summary about a task'
+complete -c $GO_TASK_PROGNAME -s t -l taskfile  -d 'choose which Taskfile to run. Defaults to "Taskfile.yml"'
+complete -c $GO_TASK_PROGNAME -s v -l verbose   -d 'enables verbose mode'
+complete -c $GO_TASK_PROGNAME      -l version   -d 'show Task version'
+complete -c $GO_TASK_PROGNAME -s w -l watch     -d 'enables watch of the given task'
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
new file mode 100644
index 0000000..49ff000
--- /dev/null
+++ b/.config/fish/config.fish
@@ -0,0 +1,49 @@
+
+set fish_greeting
+
+fish_add_path $HOME/.cargo/bin
+fish_add_path $HOME/bin
+
+
+if status is-interactive
+
+    ## Utilities
+
+    function tree
+        eza --tree --color=always $argv | bat --wrap=never
+    end
+
+    function rg --wraps rg --description 'ripgrep with bat'
+        /usr/bin/rg --color=always $argv | bat --wrap=never
+    end
+
+    ## Directory jumping with frecency 
+
+    function fre_after_cd --on-variable PWD
+        fre --add "$PWD"
+    end
+
+    function jump
+        set _dir $(fre --sorted | fzf-tmux --no-sort -p 90%,40% -y 0)
+        [ -n "$_dir" ] && pushd $_dir >>/dev/null
+        commandline -f repaint
+    end
+    bind \cg jump
+
+
+    ## History
+
+    atuin init fish | source
+
+
+    ## Prompt
+
+    function starship_transient_prompt_func
+        starship module character
+    end
+    starship init fish | source
+    enable_transience
+end
+
+## Direnv
+direnv hook fish | source
diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
new file mode 100644
index 0000000..fd0f23c
--- /dev/null
+++ b/.config/fish/fish_variables
@@ -0,0 +1,43 @@
+# This file contains fish universal variable definitions.
+# VERSION: 3.0
+SETUVAR __fish_initialized:3400
+SETUVAR fish_color_autosuggestion:6c7086
+SETUVAR fish_color_cancel:f38ba8
+SETUVAR fish_color_command:89b4fa
+SETUVAR fish_color_comment:7f849c\x1e\x2d\x2ditalics\x1e\x2d\x2ddim
+SETUVAR fish_color_cwd:f9e2af
+SETUVAR fish_color_cwd_root:red
+SETUVAR fish_color_end:fab387
+SETUVAR fish_color_error:f38ba8
+SETUVAR fish_color_escape:eba0ac
+SETUVAR fish_color_gray:6c7086
+SETUVAR fish_color_history_current:\x2d\x2dbold
+SETUVAR fish_color_host:89b4fa
+SETUVAR fish_color_host_remote:a6e3a1
+SETUVAR fish_color_keyword:f38ba8
+SETUVAR fish_color_normal:cdd6f4
+SETUVAR fish_color_operator:f5c2e7
+SETUVAR fish_color_option:a6e3a1
+SETUVAR fish_color_param:f2cdcd
+SETUVAR fish_color_quote:a6e3a1
+SETUVAR fish_color_redirection:f5c2e7
+SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d313244
+SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244
+SETUVAR fish_color_status:f38ba8
+SETUVAR fish_color_user:94e2d5
+SETUVAR fish_color_valid_path:\x2d\x2dunderline
+SETUVAR fish_key_bindings:fish_default_key_bindings
+SETUVAR fish_pager_color_background:\x1d
+SETUVAR fish_pager_color_completion:cdd6f4
+SETUVAR fish_pager_color_description:6c7086
+SETUVAR fish_pager_color_prefix:f5c2e7
+SETUVAR fish_pager_color_progress:6c7086
+SETUVAR fish_pager_color_secondary_background:\x1d
+SETUVAR fish_pager_color_secondary_completion:\x1d
+SETUVAR fish_pager_color_secondary_description:\x1d
+SETUVAR fish_pager_color_secondary_prefix:\x1d
+SETUVAR fish_pager_color_selected_background:\x1d
+SETUVAR fish_pager_color_selected_completion:\x1d
+SETUVAR fish_pager_color_selected_description:\x1d
+SETUVAR fish_pager_color_selected_prefix:\x1d
+SETUVAR fish_user_paths:/home/dln/bin\x1e/home/dln/\x2ecargo/bin
diff --git a/.config/fish/themes/Catppuccin Mocha.theme b/.config/fish/themes/Catppuccin Mocha.theme
new file mode 100644
index 0000000..104281b
--- /dev/null
+++ b/.config/fish/themes/Catppuccin Mocha.theme	
@@ -0,0 +1,30 @@
+# name: 'Catppuccin mocha'
+# url: 'https://github.com/catppuccin/fish'
+# preferred_background: 1e1e2e
+
+fish_color_normal cdd6f4
+fish_color_command 89b4fa
+fish_color_param f2cdcd
+fish_color_keyword f38ba8
+fish_color_quote a6e3a1
+fish_color_redirection f5c2e7
+fish_color_end fab387
+fish_color_comment 7f849c --italics --dim
+fish_color_error f38ba8
+fish_color_gray 6c7086
+fish_color_selection --background=313244
+fish_color_search_match --background=313244
+fish_color_option a6e3a1
+fish_color_operator f5c2e7
+fish_color_escape eba0ac
+fish_color_autosuggestion 6c7086
+fish_color_cancel f38ba8
+fish_color_cwd f9e2af
+fish_color_user 94e2d5
+fish_color_host 89b4fa
+fish_color_host_remote a6e3a1
+fish_color_status f38ba8
+fish_pager_color_progress 6c7086
+fish_pager_color_prefix f5c2e7
+fish_pager_color_completion cdd6f4
+fish_pager_color_description 6c7086
diff --git a/.config/starship.toml b/.config/starship.toml
index 4e5bd81..3df21dc 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -1,6 +1,6 @@
 "$schema" = 'https://starship.rs/config-schema.json'
 
-add_newline = false
+add_newline = true
 
 format = """\
 $directory\
@@ -13,7 +13,7 @@ $hostname"""
 
 [hostname]
 ssh_only = false
-format =  " [](fg:#333333)[ $hostname ](italic dimmed bg:#333333)"
+format = " [](fg:#333333)[ $hostname ](italic dimmed bg:#333333)"
 disabled = false
 
 [directory]
diff --git a/.tmux.conf b/.tmux.conf
index 17d82ee..d2d0757 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -18,12 +18,12 @@ set -g set-clipboard on
 bind-key ] paste-buffer -p
 
 set-environment -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/gcr/ssh"
-set -g update-environment "BUILDCOMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION"
-set -g default-command zsh
+set -g update-environment "BUILD_COMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION"
+#set -g default-command "$SHELL"
 set -g history-limit 10000
 #
 set -g default-terminal "wezterm"
-set -ga terminal-features '*:overline:strikethrough:usstyle:RGB'
+set -ga terminal-features '*:clipboard:ccolor:hyperlinks:osc7:overline:sixel:strikethrough:title:usstyle:RGB'
 
 # Key bindings
 bind -n M-Tab if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window'

From fab020b37346113f7d17ba242ef031aa846da30c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 25 Mar 2024 23:31:46 +0100
Subject: [PATCH 211/656] fish: add semantic prompt (OSC 133) support

---
 .config/fish/conf.d/prompt.fish          | 91 ++++++++++++++++++++++++
 .config/fish/conf.d/semantic-prompt.fish | 57 +++++++++++++++
 .config/fish/config.fish                 |  9 ---
 3 files changed, 148 insertions(+), 9 deletions(-)
 create mode 100644 .config/fish/conf.d/prompt.fish
 create mode 100644 .config/fish/conf.d/semantic-prompt.fish

diff --git a/.config/fish/conf.d/prompt.fish b/.config/fish/conf.d/prompt.fish
new file mode 100644
index 0000000..c6281d9
--- /dev/null
+++ b/.config/fish/conf.d/prompt.fish
@@ -0,0 +1,91 @@
+function fish_prompt
+    switch "$fish_key_bindings"
+        case fish_hybrid_key_bindings fish_vi_key_bindings
+            set STARSHIP_KEYMAP "$fish_bind_mode"
+        case '*'
+            set STARSHIP_KEYMAP insert
+    end
+    set STARSHIP_CMD_PIPESTATUS $pipestatus
+    set STARSHIP_CMD_STATUS $status
+    # Account for changes in variable name between v2.7 and v3.0
+    set STARSHIP_DURATION "$CMD_DURATION$cmd_duration"
+    set STARSHIP_JOBS (count (jobs -p))
+    if test "$TRANSIENT" = 1
+        # Clear from cursor to end of screen as `commandline -f repaint` does not do this
+        # See https://github.com/fish-shell/fish-shell/issues/8418
+        printf \e\[0J
+        if type -q starship_transient_prompt_func
+            starship_transient_prompt_func
+        else
+            printf "\n\e[1;32m%%\e[0m "
+        end
+    else
+        /usr/bin/starship prompt --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
+    end
+end
+
+function fish_right_prompt
+    switch "$fish_key_bindings"
+        case fish_hybrid_key_bindings fish_vi_key_bindings
+            set STARSHIP_KEYMAP "$fish_bind_mode"
+        case '*'
+            set STARSHIP_KEYMAP insert
+    end
+    set STARSHIP_CMD_PIPESTATUS $pipestatus
+    set STARSHIP_CMD_STATUS $status
+    # Account for changes in variable name between v2.7 and v3.0
+    set STARSHIP_DURATION "$CMD_DURATION$cmd_duration"
+    set STARSHIP_JOBS (count (jobs -p))
+    if test "$TRANSIENT" = 1
+        if type -q starship_transient_rprompt_func
+            starship_transient_rprompt_func
+        else
+            printf ""
+        end
+    else
+        /usr/bin/starship prompt --right --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
+    end
+end
+
+# Disable virtualenv prompt, it breaks starship
+set -g VIRTUAL_ENV_DISABLE_PROMPT 1
+
+# Remove default mode prompt
+builtin functions -e fish_mode_prompt
+
+set -gx STARSHIP_SHELL fish
+
+# Transience related functions
+function reset-transient --on-event fish_postexec
+    set -g TRANSIENT 0
+end
+
+function transient_execute
+    if commandline --is-valid
+        set -g TRANSIENT 1
+        commandline -f repaint
+    else
+        set -g TRANSIENT 0
+    end
+    commandline -f execute
+end
+
+# --user is the default, but listed anyway to make it explicit.
+function enable_transience --description 'enable transient prompt keybindings'
+    bind --user \r transient_execute
+    bind --user -M insert \r transient_execute
+end
+
+# Erase the transient prompt related key bindings.
+# --user is the default, but listed anyway to make it explicit.
+# Erasing a user binding will revert to the preset.
+function disable_transience --description 'remove transient prompt keybindings'
+    bind --user -e \r
+    bind --user -M insert -e \r
+end
+
+# Set up the session key that will be used to store logs
+# We don't use `random [min] [max]` because it is unavailable in older versions of fish shell
+set -gx STARSHIP_SESSION_KEY (string sub -s1 -l16 (random)(random)(random)(random)(random)0000000000000000)
+
+enable_transience
diff --git a/.config/fish/conf.d/semantic-prompt.fish b/.config/fish/conf.d/semantic-prompt.fish
new file mode 100644
index 0000000..296a561
--- /dev/null
+++ b/.config/fish/conf.d/semantic-prompt.fish
@@ -0,0 +1,57 @@
+#!/usr/bin/fish
+# SPDX-License-Identifier: CC0-1.0
+if status --is-interactive
+    set _fishprompt_aid "fish"$fish_pid
+    set _fishprompt_started 0
+    # empty if running; or a numeric exit code; or CANCEL
+    set _fishprompt_postexec ""
+
+    functions -c fish_prompt _fishprompt_saved_prompt
+    set _fishprompt_prompt_count 0
+    set _fishprompt_disp_count 0
+    function _fishprompt_start --on-event fish_prompt
+        set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1)
+        # don't use post-exec, because it is called *before* omitted-newline output
+        if [ -n "$_fishprompt_postexec" ]
+            printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid
+        end
+        printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid
+    end
+
+    function fish_prompt
+        set _fishprompt_disp_count (math $_fishprompt_disp_count + 1)
+        printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt))
+        set _fishprompt_started 1
+        set _fishprompt_postexec ""
+    end
+
+    function _fishprompt_preexec --on-event fish_preexec
+        if [ "$_fishprompt_started" = 1 ]
+            printf "\033]133;C;\007"
+        end
+        set _fishprompt_started 0
+    end
+
+    function _fishprompt_postexec --on-event fish_postexec
+        set _fishprompt_postexec $status
+        _fishprompt_start
+    end
+
+    function __fishprompt_cancel --on-event fish_cancel
+        set _fishprompt_postexec CANCEL
+        _fishprompt_start
+    end
+
+    function _fishprompt_exit --on-process %self
+        if [ "$_fishprompt_started" = 1 ]
+            printf "\033]133;Z;aid=%s\007" $_fishprompt_aid
+        end
+    end
+
+    if functions -q fish_right_prompt
+        functions -c fish_right_prompt _fishprompt_saved_right_prompt
+        function fish_right_prompt
+            printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt))
+        end
+    end
+end
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 49ff000..4a93d7c 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -34,15 +34,6 @@ if status is-interactive
     ## History
 
     atuin init fish | source
-
-
-    ## Prompt
-
-    function starship_transient_prompt_func
-        starship module character
-    end
-    starship init fish | source
-    enable_transience
 end
 
 ## Direnv

From 5cc5e1ff8e7177e67e42052f774f9df1b98a3bde Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 26 Mar 2024 00:41:11 +0100
Subject: [PATCH 212/656] fish: a bit fancier starship prompt

---
 .config/fish/config.fish    | 13 +++++++++-
 .config/fish/fish_variables |  4 ++-
 .config/starship.toml       | 50 +++++++++++++++++++++++++++++--------
 .gitconfig                  |  4 ++-
 4 files changed, 57 insertions(+), 14 deletions(-)

diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 4a93d7c..1560f81 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -4,9 +4,15 @@ set fish_greeting
 fish_add_path $HOME/.cargo/bin
 fish_add_path $HOME/bin
 
-
 if status is-interactive
 
+    export LESS="--mouse --wheel-lines=1 -nRXF"
+    export LESSCOLORIZER="bat"
+    export LESSOPEN="|lesspipe.sh %s"
+    export PAGER="bat"
+    export BAT_PAGER="less -r"
+
+
     ## Utilities
 
     function tree
@@ -30,6 +36,11 @@ if status is-interactive
     end
     bind \cg jump
 
+    ## Kubernetes
+    fish_add_path $HOME/.krew/bin
+    function kubectl --wraps kubectl
+        command grc --colour=on kubectl $argv
+    end
 
     ## History
 
diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
index fd0f23c..ac55d57 100644
--- a/.config/fish/fish_variables
+++ b/.config/fish/fish_variables
@@ -26,6 +26,8 @@ SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244
 SETUVAR fish_color_status:f38ba8
 SETUVAR fish_color_user:94e2d5
 SETUVAR fish_color_valid_path:\x2d\x2dunderline
+SETUVAR fish_cursor_default:line
+SETUVAR fish_cursor_normal:line
 SETUVAR fish_key_bindings:fish_default_key_bindings
 SETUVAR fish_pager_color_background:\x1d
 SETUVAR fish_pager_color_completion:cdd6f4
@@ -40,4 +42,4 @@ SETUVAR fish_pager_color_selected_background:\x1d
 SETUVAR fish_pager_color_selected_completion:\x1d
 SETUVAR fish_pager_color_selected_description:\x1d
 SETUVAR fish_pager_color_selected_prefix:\x1d
-SETUVAR fish_user_paths:/home/dln/bin\x1e/home/dln/\x2ecargo/bin
+SETUVAR fish_user_paths:/home/dln/\x2ekrew/bin\x1e/home/dln/bin\x1e/home/dln/\x2ecargo/bin
diff --git a/.config/starship.toml b/.config/starship.toml
index 3df21dc..03ad822 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -3,33 +3,61 @@
 add_newline = true
 
 format = """\
+${custom.pwd}\
+$fill\
+$line_break\
 $directory\
 ($character)\
 """
 
 right_format = """\
-$git_status$git_state$git_branch$git_commit
-$hostname"""
+$cmd_duration\
+$git_branch$git_commit$git_status$git_state\
+$hostname\
+"""
 
 [hostname]
 ssh_only = false
-format = " [](fg:#333333)[ $hostname ](italic dimmed bg:#333333)"
+format = " [](fg:#222222)[ $hostname ](italic dimmed bg:#222222 fg:#999999)"
 disabled = false
 
+[time]
+disabled = false
+format = ' [$time]($style)'
+style = "italic dimmed fg:#666666"
+time_format = '%R'
+
+[custom.pwd]
+command = "pwd"
+when = true
+format = "[($output)]($style) "
+style = "italic dimmed fg:#777777"
+
 [directory]
 fish_style_pwd_dir_length = 1
 truncation_length = 1
 truncate_to_repo = false
 truncation_symbol = "…"
-style = "italic dimmed"
+style = "italic fg:#88aabb"
+
+[line_break]
+disabled = false
+
+[fill]
+symbol = '⎯'
+style = 'fg:#333333'
 
 [character]
-success_symbol = "[%](bold)"
+success_symbol = "[%](bold fg:#66cc99)"
 error_symbol = "[%](bold red)"
 
+[cmd_duration]
+min_time = 500
+format = '[󱦟 $duration ](yellow)'
+
 [git_branch]
 format = "[$symbol$branch]($style)"
-style = "italic bold fg:#00d992"
+style = "italic bold fg:#00ac73"
 symbol = " "
 truncation_length = 16
 truncation_symbol = ""
@@ -43,8 +71,8 @@ style = ""
 
 [git_status]
 format = '([$all_status$ahead_behind]($style)) '
-style = "fg:#00d992"
-modified = "[ 󰦒](fg:#FFEE58)"
-deleted = "[ ✘](fg:#FF5722)"
-untracked = "[ ?](fg:#CE93D8)"
-staged = "[ 󰐖](fg:#80DEEA)"
+style = "fg:#00ac73"
+modified = "[ 󰦒](fg:#d1c000)"
+deleted = "[ ✘](fg:#b93400)"
+untracked = "[ ?](fg:#9c49aa)"
+staged = "[ 󰐖](fg:#71a4aa)"
diff --git a/.gitconfig b/.gitconfig
index 3d4fcda..be56a50 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -1,6 +1,6 @@
 [core]
 excludesfile = "~/.gitignore"
-pager = delta 
+pager = delta
 compression = 3
 looseCompression = 3
 
@@ -105,6 +105,8 @@ date = relative
   line-numbers = true
   max-line-distance = 0.9
 
+
+
 [hub]
 protocol = git
 

From b17febf0feee011a64abc9b0d5eb1d9564345b86 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 26 Mar 2024 20:28:34 +0100
Subject: [PATCH 213/656] fish: add nix env vars

---
 .config/fish/config.fish | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 1560f81..14e033f 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -4,15 +4,20 @@ set fish_greeting
 fish_add_path $HOME/.cargo/bin
 fish_add_path $HOME/bin
 
+## Nix
+export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
+export NIX_REMOTE=daemon
+fish_add_path $HOME/.nix-profile/bin
+
 if status is-interactive
 
+    ## Pager
     export LESS="--mouse --wheel-lines=1 -nRXF"
     export LESSCOLORIZER="bat"
     export LESSOPEN="|lesspipe.sh %s"
     export PAGER="bat"
     export BAT_PAGER="less -r"
 
-
     ## Utilities
 
     function tree
@@ -38,9 +43,7 @@ if status is-interactive
 
     ## Kubernetes
     fish_add_path $HOME/.krew/bin
-    function kubectl --wraps kubectl
-        command grc --colour=on kubectl $argv
-    end
+    alias kubectl=kubecolor
 
     ## History
 

From 7c10a8bbb0463479eff064b634b0c0d588fb3142 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 26 Mar 2024 20:28:48 +0100
Subject: [PATCH 214/656] remove deprecated zsh config

---
 .config/oh-my-posh/config.yaml |  82 ----------
 .zsh/history.zsh               |  45 ------
 .zshrc                         | 274 ---------------------------------
 3 files changed, 401 deletions(-)
 delete mode 100644 .config/oh-my-posh/config.yaml
 delete mode 100644 .zsh/history.zsh
 delete mode 100644 .zshrc

diff --git a/.config/oh-my-posh/config.yaml b/.config/oh-my-posh/config.yaml
deleted file mode 100644
index c73a2fb..0000000
--- a/.config/oh-my-posh/config.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-# yaml-language-server: $schema=https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
-version: 2
-final_space: true
-pwd: osc7
-disable_cursor_positioning: true
-shell_integration: true
-blocks:
-  - type: prompt
-    alignment: left
-    newline: true
-    segments:
-      - type: path
-        style: plain
-        foreground: "#999"
-        template: "<b><i>{{ .Path }}</i></b> "
-        properties:
-          style: full
-
-  - type: prompt
-    alignment: right
-    filler: "<#333>⎯</>"
-    segments:
-      - type: git
-        style: plain
-        foreground: "#777"
-        foreground_templates:
-          - "{{ if or (.Working.Changed) (.Staging.Changed) }}#3b8{{ end }}"
-          - "{{ if and (gt .Ahead 0) (gt .Behind 0) }}#3b8{{ end }}"
-          - "{{ if gt .Ahead 0 }}#B388FF{{ end }}"
-          - "{{ if gt .Behind 0 }}#B388FB{{ end }}"
-        template: " <i>{{ .HEAD }} {{if .BranchStatus }}{{ .BranchStatus
-          }}{{ end }}{{ if .Working.Changed }}   {{ .Working.String }}{{ end }}{{ if and
-          (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }} 
-          {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }}   {{ .StashCount }}{{
-          end }}</i>"
-        properties:
-          fetch_status: true
-
-  - type: rprompt
-    segments:
-      - type: executiontime
-        style: plain
-        foreground: "#c93"
-        template: "<i>󱦟 {{ .FormattedMs }}</i>"
-        properties:
-          threshold: 500
-
-      - type: session
-        style: plain
-        foreground: "#666"
-        template: "  <i>{{ .UserName }}@{{ .HostName }}</i>"
-
-      - type: time
-        style: plain
-        foreground: "#666"
-        template: "  <i>{{ .CurrentDate | date .Format }}</i>"
-        properties:
-          time_format: "15:04"
-
-  - type: prompt
-    alignment: left
-    newline: true
-    segments:
-      - type: path
-        style: plain
-        foreground: "#678"
-        template: "<i>{{ .Path }}</i>"
-        properties:
-          style: folder
-
-      - type: text
-        style: plain
-        foreground: "#6c9"
-        template: " %"
-        properties:
-          style: folder
-
-transient_prompt:
-  background: transparent
-  foreground: "#6c9"
-  template: "\n%% "
-  filler: "-"
diff --git a/.zsh/history.zsh b/.zsh/history.zsh
deleted file mode 100644
index f0b901a..0000000
--- a/.zsh/history.zsh
+++ /dev/null
@@ -1,45 +0,0 @@
-typeset -g MY_HISTORY_SEARCH_OFFSET=0
-typeset -g MY_HISTORY_SEARCH_PREFIX=""
-
-function my-history-prefix-search() {
-    if [[ $LASTWIDGET != my-history-prefix-search-* ]]; then
-        # start state machine
-        MY_HISTORY_SEARCH_OFFSET=-1
-        MY_HISTORY_SEARCH_PREFIX="$LBUFFER"
-    fi
-    local offset_delta=$1
-    local offset=$((MY_HISTORY_SEARCH_OFFSET + $offset_delta))
-
-    (($offset < 0)) && return
-    local result=$(
-        atuin search \
-            --filter-mode session \
-            --search-mode prefix \
-            --limit 1 \
-            --offset $offset \
-            --format '{command}' \
-            "$MY_HISTORY_SEARCH_PREFIX" ||
-          atuin search \
-              --search-mode prefix \
-              --limit 1 \
-              --offset $offset \
-              --format '{command}' \
-              "$MY_HISTORY_SEARCH_PREFIX" ||
-    )
-    if [[ -n "$result" ]]; then
-        BUFFER=$result
-        CURSOR=${#BUFFER}
-        MY_HISTORY_SEARCH_OFFSET=$offset
-    fi
-}
-
-function my-history-prefix-search-backward-widget() {
-    my-history-prefix-search +1
-}
-
-function my-history-prefix-search-forward-widget() {
-    my-history-prefix-search -1
-}
-
-zle -N my-history-prefix-search-backward-widget
-zle -N my-history-prefix-search-forward-widget
diff --git a/.zshrc b/.zshrc
deleted file mode 100644
index 545e2bb..0000000
--- a/.zshrc
+++ /dev/null
@@ -1,274 +0,0 @@
-if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
-    print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
-    command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
-    command git clone --depth=1 https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
-        print -P "%F{33} %F{34}Installation successful.%f%b" || \
-        print -P "%F{160} The clone has failed.%f%b"
-fi
-
-source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
-autoload -Uz _zinit
-(( ${+_comps} )) && _comps[zinit]=_zinit
-
-zi ice wait lucid
-zi load zsh-users/zsh-completions
-# zi ice wait lucid
-# zi load zsh-users/zsh-autosuggestions
-zi ice wait lucid
-zi load zdharma-continuum/fast-syntax-highlighting
-zi ice wait lucid
-zi load nix-community/nix-zsh-completions
-zi ice wait lucid
-zi load olets/zsh-abbr
-zi ice wait lucid
-zi snippet https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/shrink-path/shrink-path.plugin.zsh
-
-zstyle ':completion:*' use-cache on
-zstyle ':completion:*' cache-path ~/.zsh/cache
- 
-# Highlighting
-zle_highlight=('paste:none')
-
-## History
-HISTSIZE=50000
-SAVEHIST=50000
-HISTFILE=~/.zsh_history
-setopt append_history
-setopt extended_history
-setopt hist_expire_dups_first
-setopt hist_fcntl_lock
-setopt hist_ignore_all_dups
-setopt hist_ignore_space
-setopt HIST_IGNORE_SPACE
-setopt hist_lex_words
-setopt hist_reduce_blanks
-setopt hist_save_no_dups
-setopt hist_subst_pattern
-setopt hist_verify
-setopt share_history
-export HISTORY_IGNORE="(ls *|cd *|rm *|pwd|reboot|exit|e *|*AWS*|*SECRET*|*PASSWORD*|*TOKEN*|*API*|*KEY*|*PASS*|*SECRETS*|*SECRET_KEY*|*SECRET_TOKEN*|*SECRET_KEY_BASE*|*SECRET_TOKEN_BASE*)"
-export WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
-
-
-## zsh settings
-setopt pipe_fail
-setopt auto_pushd
-setopt no_beep
-setopt no_rm_star_silent
-setopt extended_glob
-setopt ksh_glob
-setopt null_glob
-
-export LC_ALL=en_US.UTF-8
-
-export PATH=$HOME/bin:$HOME/.cargo/bin:$PATH
-
-redraw-prompt() {
-    local precmd
-    for precmd in $precmd_functions; do
-        $precmd
-    done
-    zle reset-prompt
-}
-zle -N redraw-prompt
-
-_jump() {
-  _dir=$(fre --sorted | fzf-tmux --no-sort -p 90%,40% -y 0)
-  [ -n "$_dir" ] && pushd $_dir >>/dev/null
-  zle && zle redraw-prompt
-}
-zle -N _jump
-
-fre_chpwd() {
-  fre --add "$(pwd)"
-}
-typeset -gaU chpwd_functions
-chpwd_functions+=fre_chpwd
-
-_cwd_gitroot() {
-  _gitroot=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
-  _dir=$((echo "$_gitroot" && fd -td . "$_gitroot") | fzf-tmux -p 90%,40% -y 0)
-  [ -n "$_dir" ] && cd $_dir
-  zle && zle redraw-prompt
-}
-zle -N _cwd_gitroot
-
-## Keybindings
-source $HOME/.zsh/history.zsh
-bindkey -e
-bindkey '^g' _jump
-# bindkey '^P' atuin-up-search
-bindkey '^p' my-history-prefix-search-backward-widget
-bindkey '^n' my-history-prefix-search-forward-widget
-bindkey "^[[A" my-history-prefix-search-backward-widget
-bindkey "^[[B" my-history-prefix-search-forward-widget
-
-
-## Pager
-export LESS="--mouse --wheel-lines=1 -nRXF"
-export LESSCOLORIZER="bat"
-export LESSOPEN="|lesspipe.sh %s"
-export PAGER="bat"
-export BAT_PAGER="less -r"
-
-## Clipboard OSC 52
- function clip { echo -en "\x1b]52;c;$(base64 -w0)\x07" }
-
-## Aliases
-alias c='cut -c-${COLUMNS}'
-alias e='tmux-edit-helper'
-alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
-alias git='git-branchless wrap --'
-alias l='bat --wrap=never --pager="less -S"'
-alias ls=eza
-alias tail='tail -n $LINES'
-alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"'
-alias top='btm --basic --enable_cache_memory --enable_gpu_memory --battery'
-alias v=vgrep
-alias ve='env EDITOR= vgrep -s'
-alias xc=clip
-alias w="history -1 | sed -e 's/[0-9]*  //' | xargs viddy -n1"
-
-## ripgrep 
-export RIPGREP_CONFIG_PATH=${HOME}/.config/shelman-theme/current/rg/rg.conf
-
-
-tree() {
-   eza --tree --color=always "$@" | bat --wrap=never
-}
-
-# "auto paging"
-rg() {
-  /usr/bin/rg -p "$@" | bat
-}
-
-
-## vim
-export EDITOR=nvim
-
-## fzf
-export FZF_TMUX=1
-export FZF_COMPLETION_TRIGGER=";"
-export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
-. /usr/share/fzf/completion.zsh
-. /usr/share/fzf/key-bindings.zsh
-
-## direnv
-eval "$(direnv hook zsh)"
-
-## pyenv
-export PYENV_ROOT="$HOME/.pyenv"
-command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
-export PATH="/home/dln/.pyenv/shims:${PATH}"
-export PYENV_SHELL=zsh
-# command pyenv rehash 2>/dev/null   # this is slow
-pyenv() {
-  local command
-  command="${1:-}"
-  if [ "$#" -gt 0 ]; then
-    shift
-  fi
-
-  case "$command" in
-  activate|deactivate|rehash|shell)
-    eval "$(pyenv "sh-$command" "$@")"
-    ;;
-  *)
-    command pyenv "$command" "$@"
-    ;;
-  esac
-}
-
-
-autoload -Uz compdef
-autoload -U +X bashcompinit && bashcompinit
-autoload -U +X compinit && compinit
-
-## Nix
-export PATH=$HOME/.nix-profile/bin:$PATH
-export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
-export NIX_REMOTE=daemon
-
-## eksctl
-if [ ! -f "${fpath[1]}/_eksctl" ]; then
-	command -v eksctl >/dev/null 2>&1 && eksctl completion zsh > "${fpath[1]}/_eksctl"
-fi
-
-## Kubernetes
-if [ ! -f "${fpath[1]}/_kubectl" ]; then
-  command -v kubectl >/dev/null 2>&1 && kubectl completion zsh > "${fpath[1]}/_kubectl"
-fi
-export PATH=$HOME/.krew/bin:$PATH
-alias kubectl='grc kubectl'
-
-## bazel
-#if [ ! -f "${fpath[1]}/_bazel" ]; then
-#  curl -sLo "${fpath[1]}/_bazel" https://raw.githubusercontent.com/bazelbuild/bazel/master/scripts/zsh_completion/_bazel
-#fi
-
-## git-branchless
-if [ ! -f "${fpath[1]}/_git_branchless" ]; then
-  curl -sLo "${fpath[1]}/_git_branchless" https://gist.githubusercontent.com/minijackson/68effb0e6c7d8333e20f07da20076c28/raw/5469ffa1c6adc245adb82316f1013937c5148da7/_git-branchless
-fi
-
-## go-task
-if [ ! -f "${fpath[1]}/_task" ]; then
-  curl -sLo "${fpath[1]}/_task" https://raw.githubusercontent.com/go-task/task/main/completion/zsh/_task
-fi
-
-## kapp
-if [ ! -f "${fpath[1]}/_kapp" ]; then
-	command -v kapp >/dev/null 2>&1 && kapp completion zsh --tty=false > "${fpath[1]}/_kapp"
-fi
-
-## kn
-if [ ! -f "${fpath[1]}/_kn" ]; then
-  command -v kn >/dev/null 2>&1 && kn completion zsh > "${fpath[1]}/_kn"
-fi
-
-## talos cli
-if [ ! -f "${fpath[1]}/_talosctl" ]; then
-	command -v talosctl >/dev/null 2>&1 && talosctl completion zsh > "${fpath[1]}/_talosctl"
-fi
-
-## pulumi
-if [ ! -f "${fpath[1]}/_pulumi" ]; then
-	command -v pulumi >/dev/null 2>&1 && pulumi gen-completion zsh > "${fpath[1]}/_pulumi"
-fi
-
-## vault
-complete -o nospace -C /usr/bin/vault vault
-
-## Google Cloud
-[ -f /opt/google-cloud-sdk/completion.zsh.inc ] && source /opt/google-cloud-sdk/completion.zsh.inc
-if [ -f '/home/dln/google-cloud-sdk/path.zsh.inc' ]; then . '/home/dln/google-cloud-sdk/path.zsh.inc'; fi
-if [ -f '/home/dln/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/dln/google-cloud-sdk/completion.zsh.inc'; fi
-
-## Golang
-export PATH=$HOME/go/bin:$PATH
-export GOPROXY=https://athens.aarn.shelman.io
-
-## Ansible
-export ANSIBLE_NOCOWS=1
-
-## Docker
-export DOCKER_BUILDKIT=1
-
-PROG=tea _CLI_ZSH_AUTOCOMPLETE_HACK=1 source "/home/dln/.config/tea/autocomplete.zsh"
-
-## AWS
-complete -o nospace -C /usr/bin/mcli mcli
-complete -C '/usr/bin/aws_completer' aws
-
-function _grc() {
-  shift words
-  (( CURRENT-- ))
-  _normal
-}
-compdef _grc grc
-
-# Atuin history
-eval "$(atuin init zsh --disable-up-arrow)"
-
-# Prompt
-eval "$(oh-my-posh init zsh --config $HOME/.config/oh-my-posh/config.yaml)"

From 8b1ee883d8b5e1761b63fb84a3979e43c5aed59b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 27 Mar 2024 23:19:10 +0100
Subject: [PATCH 215/656] nvim: replace statusline within incline

---
 .config/nvim/lazy-lock.json              | 31 +++++------
 .config/nvim/lua/config/options.lua      |  9 ++++
 .config/nvim/lua/plugins/colorscheme.lua | 66 +++++++++---------------
 .config/nvim/lua/plugins/extras.lua      | 10 ++++
 .config/nvim/lua/plugins/incline.lua     | 65 +++++++++++++++++++++++
 .config/nvim/lua/plugins/ui.lua          | 28 +---------
 6 files changed, 124 insertions(+), 85 deletions(-)
 create mode 100644 .config/nvim/lua/plugins/incline.lua

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 002fb01..a342254 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,26 +1,27 @@
 {
-  "LazyVim": { "branch": "main", "commit": "c91982a8bca120857f24f0eb0dd9bdcc7d574f50" },
+  "LazyVim": { "branch": "main", "commit": "c901640167ec5b123ff8524b01518c9a370a0d31" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "f87d415b51e67703cd3600d4bcde59a7a75171f4" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "4ce271f0db8b5224b4d69a43a75c13f5b4dcba43" },
   "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
-  "catppuccin": { "branch": "main", "commit": "9be7fcdff77b9a175ea7def77f6df0260971a15f" },
+  "catppuccin": { "branch": "main", "commit": "f66654d5d5190865333e8e46474c1593302c558e" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "9e96ccd88f4510d0a54ce1d5c11119eac9fb217e" },
-  "conform.nvim": { "branch": "master", "commit": "bf109f061fc3cd75394b7823923187ae045cbf22" },
+  "conform.nvim": { "branch": "master", "commit": "f9523f75134614fc0eff29c2377ed36603a1b0aa" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
   "crates.nvim": { "branch": "main", "commit": "b4f4987ccdb1cc3899ee541ef4375c73c48c4570" },
-  "dashboard-nvim": { "branch": "master", "commit": "354e7bd0ad62f6e8b5ab9394b1ec7dbcaaa1470c" },
+  "dashboard-nvim": { "branch": "master", "commit": "39f308a0b845b8da46f83c8a2d69f0191d4b7a8f" },
   "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
   "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
   "gitsigns.nvim": { "branch": "main", "commit": "078041e9d060a386b0c9d3a8c7a7b019a35d3fb0" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
+  "incline.nvim": { "branch": "main", "commit": "a03020c920a55b75d82ac54c9da18cbf52e8c4d8" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
-  "lazy.nvim": { "branch": "main", "commit": "af6afefbb46ab29a8a1db69536b04290a9403876" },
+  "lazy.nvim": { "branch": "main", "commit": "65887ea871d44822bff47504202b3643f29d614e" },
   "lualine.nvim": { "branch": "master", "commit": "b5e8bb642138f787a2c1c5aedc2a78cb2cebbd67" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "9dfcf2036c223920826140f0151d929a43f9eceb" },
@@ -31,10 +32,10 @@
   "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "8afbb06081ce1e4beb5b18945d14a608b10babeb" },
-  "neoconf.nvim": { "branch": "main", "commit": "9a419c4fa772c4c61839a8f7fdd8e863679a8c94" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "16d1b194376bf1fc2acd89ccb3c29ba8315bfcea" },
+  "neoconf.nvim": { "branch": "main", "commit": "ef304c29977b85c99382fcba821b3f710e144a74" },
   "neodev.nvim": { "branch": "main", "commit": "6a533ed9d3435dcaa456380d833ea04da37ea2ed" },
-  "noice.nvim": { "branch": "main", "commit": "d29b26c329558ee4bb2e7f3cc25078929ef89b2f" },
+  "noice.nvim": { "branch": "main", "commit": "0cbe3f88d038320bdbda3c4c5c95f43a13c3aa12" },
   "none-ls.nvim": { "branch": "main", "commit": "18910d09d21d7df339805343bfe4a2b2e41c057b" },
   "nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" },
   "nvim-cmp": { "branch": "main", "commit": "97dc716fc914c46577a4f254035ebef1aa72558a" },
@@ -48,21 +49,21 @@
   "nvim-nio": { "branch": "master", "commit": "33c62b3eadd8154169e42144de16ba4db6784bec" },
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
-  "nvim-spectre": { "branch": "master", "commit": "31f62d7fc30257b2a5c5327ff7b47719da37a1b4" },
-  "nvim-treesitter": { "branch": "master", "commit": "aa31b8d4ccaa05e1ab30120e103f72adbd2837bc" },
+  "nvim-spectre": { "branch": "master", "commit": "2b012554a2536465243c0dff3605b5927c49ed23" },
+  "nvim-treesitter": { "branch": "master", "commit": "07a404570f3d912afdfe92bbf74ff55886293369" },
   "nvim-treesitter-context": { "branch": "master", "commit": "f19766163c18515fb4d3c12d572bf9cba6cdb990" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
-  "nvim-web-devicons": { "branch": "master", "commit": "6662f059bf78e6092ba90cd1929599625f448f55" },
+  "nvim-web-devicons": { "branch": "master", "commit": "3ee60deaa539360518eaab93a6c701fe9f4d82ef" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" },
-  "rustaceanvim": { "branch": "master", "commit": "ff658ba1da85498135e02300797466a447754ff0" },
+  "rustaceanvim": { "branch": "master", "commit": "c2cdbeca8674e1b1b66ba870ff502bdad55a6d8a" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope.nvim": { "branch": "master", "commit": "c2b8311dfacd08b3056b8f0249025d633a4e71a8" },
-  "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
-  "tokyonight.nvim": { "branch": "main", "commit": "623c3cd60a8081b68edcaf544856c053249a659e" },
+  "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
+  "tokyonight.nvim": { "branch": "main", "commit": "f4b415bfbce390866a83277db42cf6aa94230728" },
   "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
   "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
   "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 3426dee..985f4bc 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -4,6 +4,7 @@
 
 local opt = vim.opt
 
+opt.number = true
 opt.relativenumber = false
 opt.clipboard = "unnamedplus"
 
@@ -28,3 +29,11 @@ vim.api.nvim_create_autocmd("dirchanged", {
 	pattern = "*",
 	command = 'call chansend(v:stderr, printf("\\033]7;%s\\033", v:event.cwd))',
 })
+
+-- (No) Statusline
+
+vim.opt.laststatus = 0
+vim.api.nvim_set_hl(0, "Statusline", { link = "Normal" })
+vim.api.nvim_set_hl(0, "StatuslineNC", { link = "Normal" })
+local line = string.rep("┅", vim.api.nvim_win_get_width(0))
+vim.opt.statusline = "%#WinSeparator#" .. line .. "%*"
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index b37b0b3..694bbb4 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,29 +1,4 @@
 return {
-	-- {
-	-- 	"kvrohit/rasmus.nvim",
-	-- 	dependencies = {
-	-- 		{ "tjdevries/colorbuddy.nvim" },
-	-- 	},
-	-- 	lazy = false,
-	-- 	priority = 1000,
-	-- 	config = function()
-	-- 		vim.g.rasmus_variant = "monochrome"
-	-- 		vim.g.rasmus_bold_functions = true
-	-- 		vim.g.rasmus_bold_comments = false
-	-- 		vim.g.rasmus_italic_comments = true
-	-- 		vim.g.rasmus_transparent = true
-	--
-	-- 		-- vim.cmd("colorscheme rasmus")
-	-- 	end,
-	-- },
-
-	-- {
-	-- 	"LazyVim/LazyVim",
-	-- 	opts = {
-	-- 		colorscheme = "default",
-	-- 	},
-	-- },
-
 	{
 		"p00f/alabaster.nvim",
 		lazy = false,
@@ -73,24 +48,24 @@ return {
 				Color.new("normal", "#e3e0cd")
 				Group.new("Normal", colors.normal, nil)
 
+				Color.new("WinSeparator", "#446688")
+				Group.new("WinSeparator", colors.WinSeparator, nil)
+
 				Color.new("string", "#D7CCC8")
 				Color.new("symbol", "#ECEFF1")
-				--
+
 				Color.new("comment", "#E57373", nil, styles.italic)
 				Color.new("hlargs", "#FFF8E1")
-				--
+
 				Color.new("illuminate_bg", "#112210")
 				Color.new("illuminate_fg", "#00d992")
-				--
-				-- Color.new("search_bg", "#554411")
-				-- Color.new("search_fg", "#FFF0C0")
-				--
+
 				Color.new("search_bg", "#223311")
 				Color.new("search_fg", "#CCFF33")
-				--
+
 				Color.new("MiniIndentscopeSymbol", "#00d992")
 				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
-				--
+
 				Color.new("CursorFg", "#000000", styles.nocombine)
 				Color.new("CursorBg", "#23fdb6", styles.nocombine)
 				Group.new("Cursor", colors.CursorFg, colors.CursorBg)
@@ -141,7 +116,7 @@ return {
 				Color.new("PmenuSelBg", "#335a88", styles.nocombine)
 				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
 
-				Color.new("TreesitterContext", "#233344", styles.nocombine)
+				Color.new("TreesitterContext", "#242e38", styles.nocombine)
 				Group.new("TreesitterContext", nil, colors.TreesitterContext)
 
 				-- Color.new("NonText", "#955252", styles.nocombine)
@@ -157,6 +132,12 @@ return {
 				Color.new("spelling", "#ffce60")
 				Group.new("SpellBad", colors.spelling, nil, styles.undercurl)
 
+				-- Color.new("LuaLineFg", "#aebed0")
+				Color.new("InclineFg", "#aebed0")
+				Color.new("InclineBg", "#242e38")
+				Group.new("InclineNormal", colors.InclineFg, colors.InclineBg)
+				Group.new("InclineNormalNC", colors.InclineFg, colors.InclineBg)
+
 				Color.new("LspInfoTitle", "#955252")
 				Group.new("LspInfoTitle", colors.LspInfoTitle, nil, styles.italic)
 				-- Group.new("DiagnosticHint", colors.LspInfoTitle, nil, styles.italic)
@@ -170,38 +151,37 @@ return {
 				--
 				Color.new("Error", "#ffce60", styles.nocombine)
 				Group.new("ErrorMsg", colors.Error)
-				--
+
 				Color.new("FlashLabelFg", "#220011")
 				Color.new("FlashLabelBg", "#EA1199")
 				Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
-				--
+
 				Group.new("TelescopeTitle", colors.primary)
 				Group.new("TelescopeBorder", colors.secondary)
 				Group.new("@comment", colors.comment, nil, styles.italic + styles.bold)
 				Group.new("@string", colors.string, nil, styles.italic)
 
-				--
 				Group.new("@keyword", colors.noir_2)
 				Group.new("@keyword.function", colors.noir_2)
 				Group.new("@keyword.return", colors.noir_1)
-				--
+
 				Group.new("@operator", colors.noir_1)
 				Group.new("@keyword.operator", colors.noir_1)
 				-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
 				Group.new("@type.builtin", colors.noir_2)
-				--
+
 				Group.new("@variable", colors.symbol, nil)
 				Group.new("Hlargs", colors.hlargs, nil)
-				--
+
 				Group.new("@function", colors.noir_1, nil, styles.bold)
 				Group.new("@method", colors.noir_1, nil, styles.bold)
-				--
+
 				Group.new("@punctuation", colors.noir_4)
 				Group.new("@punctuation.bracket", colors.noir_4)
 				Group.new("@punctuation.delimiter", colors.noir_4)
-				--
+
 				Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
-				--
+
 				Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
 				Group.new("IncSearch", colors.search_fg, colors.search_bg)
 			end,
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 7bdce04..50f0128 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -24,6 +24,16 @@ return {
 		end,
 	},
 
+	{
+		"nvim-neo-tree/neo-tree.nvim",
+		opts = {
+			window = {
+				width = 30,
+				position = "right",
+			},
+		},
+	},
+
 	{
 		"simrat39/rust-tools.nvim",
 		enabled = false,
diff --git a/.config/nvim/lua/plugins/incline.lua b/.config/nvim/lua/plugins/incline.lua
new file mode 100644
index 0000000..154796c
--- /dev/null
+++ b/.config/nvim/lua/plugins/incline.lua
@@ -0,0 +1,65 @@
+return {
+	"b0o/incline.nvim",
+	config = function()
+		local devicons = require("nvim-web-devicons")
+		require("incline").setup({
+			render = function(props)
+				local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ":t")
+				if filename == "" then
+					filename = "[No Name]"
+				end
+				local ft_icon, ft_color = devicons.get_icon_color(filename)
+
+				local function get_git_diff()
+					local icons = { removed = "", changed = "", added = "" }
+					local signs = vim.b[props.buf].gitsigns_status_dict
+					local labels = {}
+					if signs == nil then
+						return labels
+					end
+					for name, icon in pairs(icons) do
+						if tonumber(signs[name]) and signs[name] > 0 then
+							table.insert(labels, { icon .. signs[name] .. " ", group = "Diff" .. name })
+						end
+					end
+					if #labels > 0 then
+						table.insert(labels, { "┊" })
+					end
+					return labels
+				end
+
+				local function get_diagnostic_label()
+					local icons = { error = " ", warn = "󰀪 ", info = " ", hint = "󰌶 " }
+					local label = {}
+
+					for severity, icon in pairs(icons) do
+						local n = #vim.diagnostic.get(
+							props.buf,
+							{ severity = vim.diagnostic.severity[string.upper(severity)] }
+						)
+						if n > 0 then
+							table.insert(label, { icon .. n .. " ", group = "DiagnosticSign" .. severity })
+						end
+					end
+					if #label > 0 then
+						table.insert(label, { "┊", guifg = "#0d1117" })
+					end
+					return label
+				end
+
+				local bg_color = "#242e38"
+
+				return {
+					{ "┊", guibg = bg_color, guifg = "#0d1117" },
+					{ get_diagnostic_label(), guibg = bg_color },
+					{ " ", guibg = bg_color },
+					{ get_git_diff() },
+					-- { (ft_icon or "") .. " ", guifg = ft_color, guibg = "none" },
+					{ filename .. " ", gui = "italic" },
+				}
+			end,
+		})
+	end,
+	-- Optional: Lazy load Incline
+	event = "VeryLazy",
+}
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index f3cdcf9..4afcfba 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -79,32 +79,6 @@ return {
 
 	{
 		"nvim-lualine/lualine.nvim",
-		dependencies = {
-			"jesseleite/nvim-noirbuddy",
-			"nvim-tree/nvim-web-devicons",
-		},
-		config = function()
-			-- Option 1:
-			local noirbuddy_lualine = require("noirbuddy.plugins.lualine")
-
-			local theme = noirbuddy_lualine.theme
-			-- optional, you can define those yourself if you need
-			local sections = noirbuddy_lualine.sections
-			local inactive_sections = noirbuddy_lualine.inactive_sections
-
-			require("lualine").setup({
-				options = {
-					icons_enabled = true,
-					theme = theme,
-					filetype = { colored = false },
-					component_separators = { left = "", right = "" },
-					section_separators = { left = "", right = "" },
-					disabled_filetypes = {},
-					always_divide_middle = true,
-				},
-				sections = sections,
-				inactive_sections = inactive_sections,
-			})
-		end,
+		enabled = false,
 	},
 }

From dba48cb52f6970c9be52b9f9cd77d0bcddb2f841 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 29 Mar 2024 10:24:47 +0100
Subject: [PATCH 216/656] nvim: move incline to bottom right. add some styling

---
 .config/nvim/lua/plugins/incline.lua | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/.config/nvim/lua/plugins/incline.lua b/.config/nvim/lua/plugins/incline.lua
index 154796c..24e8f90 100644
--- a/.config/nvim/lua/plugins/incline.lua
+++ b/.config/nvim/lua/plugins/incline.lua
@@ -3,6 +3,17 @@ return {
 	config = function()
 		local devicons = require("nvim-web-devicons")
 		require("incline").setup({
+			window = {
+				margin = {
+					horizontal = 0,
+					vertical = 0,
+				},
+				padding = 0,
+				placement = {
+					horizontal = "right",
+					vertical = "bottom",
+				},
+			},
 			render = function(props)
 				local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ":t")
 				if filename == "" then
@@ -11,7 +22,7 @@ return {
 				local ft_icon, ft_color = devicons.get_icon_color(filename)
 
 				local function get_git_diff()
-					local icons = { removed = "", changed = "", added = "" }
+					local icons = { removed = " ", changed = " ", added = " " }
 					local signs = vim.b[props.buf].gitsigns_status_dict
 					local labels = {}
 					if signs == nil then
@@ -23,13 +34,13 @@ return {
 						end
 					end
 					if #labels > 0 then
-						table.insert(labels, { "┊" })
+						table.insert(labels, { "╱ " })
 					end
 					return labels
 				end
 
 				local function get_diagnostic_label()
-					local icons = { error = " ", warn = "󰀪 ", info = " ", hint = "󰌶 " }
+					local icons = { error = " ", warn = "󰀪 ", info = " ", hint = " " }
 					local label = {}
 
 					for severity, icon in pairs(icons) do
@@ -42,7 +53,7 @@ return {
 						end
 					end
 					if #label > 0 then
-						table.insert(label, { "┊", guifg = "#0d1117" })
+						table.insert(label, { "╱ " })
 					end
 					return label
 				end
@@ -50,11 +61,10 @@ return {
 				local bg_color = "#242e38"
 
 				return {
-					{ "┊", guibg = bg_color, guifg = "#0d1117" },
+					{ "", guibg = "#0d1117", guifg = bg_color },
+					{ " ", guifg = "#0d1117", guibg = bg_color },
 					{ get_diagnostic_label(), guibg = bg_color },
-					{ " ", guibg = bg_color },
 					{ get_git_diff() },
-					-- { (ft_icon or "") .. " ", guifg = ft_color, guibg = "none" },
 					{ filename .. " ", gui = "italic" },
 				}
 			end,

From 4ec068ddad823636518a5982a04edfc643c813be Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 30 Mar 2024 09:37:04 +0100
Subject: [PATCH 217/656] fish: add otel env vars

---
 .config/fish/config.fish | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 14e033f..75d81b6 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -18,6 +18,11 @@ if status is-interactive
     export PAGER="bat"
     export BAT_PAGER="less -r"
 
+    ## OpenTelemetry
+    export OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.aarn.shelman.io
+    export OTEL_RESOURCE_ATTRIBUTES=instance=dln-dev
+    export OTEL_LOG_LEVEL=debug
+
     ## Utilities
 
     function tree
@@ -43,7 +48,9 @@ if status is-interactive
 
     ## Kubernetes
     fish_add_path $HOME/.krew/bin
-    alias kubectl=kubecolor
+    # function kubectl --wraps kubectl
+    #     command kubecolor $argv
+    # end
 
     ## History
 

From 4d6f9e2887a46a3d82b260fd7f30e621e6c29492 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 30 Mar 2024 09:39:25 +0100
Subject: [PATCH 218/656] nvim: halfwitted attempt at colorscheme

---
 .config/nvim/lazy-lock.json              | 28 +++++++++++-------------
 .config/nvim/lua/config/options.lua      |  2 +-
 .config/nvim/lua/plugins/colorscheme.lua | 26 ++++++++++++++++++++--
 3 files changed, 38 insertions(+), 18 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index a342254..609dc42 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,37 +1,36 @@
 {
-  "LazyVim": { "branch": "main", "commit": "c901640167ec5b123ff8524b01518c9a370a0d31" },
+  "LazyVim": { "branch": "main", "commit": "5646ee5191da244ff8ea57b9dba8a7e0d1dbdd42" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
   "SchemaStore.nvim": { "branch": "main", "commit": "4ce271f0db8b5224b4d69a43a75c13f5b4dcba43" },
-  "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
-  "catppuccin": { "branch": "main", "commit": "f66654d5d5190865333e8e46474c1593302c558e" },
+  "catppuccin": { "branch": "main", "commit": "c3572a968a79b64bd0ef16f2c3e93014f112e66d" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "colorbuddy.nvim": { "branch": "master", "commit": "9e96ccd88f4510d0a54ce1d5c11119eac9fb217e" },
-  "conform.nvim": { "branch": "master", "commit": "f9523f75134614fc0eff29c2377ed36603a1b0aa" },
+  "conform.nvim": { "branch": "master", "commit": "9d5ba06d6ee7418c674f498634617416d15b6239" },
   "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
   "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
   "crates.nvim": { "branch": "main", "commit": "b4f4987ccdb1cc3899ee541ef4375c73c48c4570" },
   "dashboard-nvim": { "branch": "master", "commit": "39f308a0b845b8da46f83c8a2d69f0191d4b7a8f" },
   "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
   "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
-  "gitsigns.nvim": { "branch": "main", "commit": "078041e9d060a386b0c9d3a8c7a7b019a35d3fb0" },
+  "gitsigns.nvim": { "branch": "main", "commit": "70584ff9aae8078b64430c574079d79620b8f06d" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "incline.nvim": { "branch": "main", "commit": "a03020c920a55b75d82ac54c9da18cbf52e8c4d8" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
-  "lazy.nvim": { "branch": "main", "commit": "65887ea871d44822bff47504202b3643f29d614e" },
-  "lualine.nvim": { "branch": "master", "commit": "b5e8bb642138f787a2c1c5aedc2a78cb2cebbd67" },
+  "lazy.nvim": { "branch": "main", "commit": "bef521ac89c8d423f9d092e37b58e8af0c099309" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "9dfcf2036c223920826140f0151d929a43f9eceb" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" },
   "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
   "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
+  "mini.colors": { "branch": "main", "commit": "f64963332f7fcb45c8dfcc243f682a9a0fb9935d" },
   "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
-  "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" },
+  "mini.surround": { "branch": "main", "commit": "49e0364b8c9a3258b485c5ece40bb0f3a5e94b1c" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "16d1b194376bf1fc2acd89ccb3c29ba8315bfcea" },
   "neoconf.nvim": { "branch": "main", "commit": "ef304c29977b85c99382fcba821b3f710e144a74" },
   "neodev.nvim": { "branch": "main", "commit": "6a533ed9d3435dcaa456380d833ea04da37ea2ed" },
@@ -47,24 +46,23 @@
   "nvim-lspconfig": { "branch": "master", "commit": "6e5c78ebc9936ca74add66bda22c566f951b6ee5" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-nio": { "branch": "master", "commit": "33c62b3eadd8154169e42144de16ba4db6784bec" },
-  "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "2b012554a2536465243c0dff3605b5927c49ed23" },
-  "nvim-treesitter": { "branch": "master", "commit": "07a404570f3d912afdfe92bbf74ff55886293369" },
+  "nvim-treesitter": { "branch": "master", "commit": "f84887230af1f7581e29ccd5d93f59d98058d565" },
   "nvim-treesitter-context": { "branch": "master", "commit": "f19766163c18515fb4d3c12d572bf9cba6cdb990" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "7ab799a9792f7cf3883cf28c6a00ad431f3d382a" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "734ebad31c81c6198dfe102aa23280937c937c42" },
   "nvim-web-devicons": { "branch": "master", "commit": "3ee60deaa539360518eaab93a6c701fe9f4d82ef" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" },
-  "rustaceanvim": { "branch": "master", "commit": "c2cdbeca8674e1b1b66ba870ff502bdad55a6d8a" },
+  "rustaceanvim": { "branch": "master", "commit": "b1433cb70569b888d26a26232da93fdbc76cb4a8" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "c2b8311dfacd08b3056b8f0249025d633a4e71a8" },
+  "telescope.nvim": { "branch": "master", "commit": "b22e6f6896cd64b109bd0807a24098d225d5fb49" },
   "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
-  "tokyonight.nvim": { "branch": "main", "commit": "f4b415bfbce390866a83277db42cf6aa94230728" },
-  "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
+  "tokyonight.nvim": { "branch": "main", "commit": "9bf9ec53d5e87b025e2404069b71e7ebdc3a13e5" },
+  "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" },
   "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
   "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 985f4bc..ca57020 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -35,5 +35,5 @@ vim.api.nvim_create_autocmd("dirchanged", {
 vim.opt.laststatus = 0
 vim.api.nvim_set_hl(0, "Statusline", { link = "Normal" })
 vim.api.nvim_set_hl(0, "StatuslineNC", { link = "Normal" })
-local line = string.rep("┅", vim.api.nvim_win_get_width(0))
+local line = string.rep("▁", vim.api.nvim_win_get_width(0))
 vim.opt.statusline = "%#WinSeparator#" .. line .. "%*"
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 694bbb4..69ab246 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,9 +1,25 @@
 return {
+	--[=====[
+	{ "echasnovski/mini.colors", version = false },
+
 	{
-		"p00f/alabaster.nvim",
+		"shelmangroup/sumi-e",
+		dir = "/home/dln/src/git.shelman.io/shelmangroup/sumi-e.nvim",
 		lazy = false,
+		dependencies = {
+			{ "tjdevries/colorbuddy.nvim" },
+		},
 	},
 
+	{
+		"LazyVim/LazyVim",
+		opts = {
+			colorscheme = "sumi-e",
+		},
+	},
+
+  --]=====]
+
 	{
 		"jesseleite/nvim-noirbuddy",
 		as = "noirbuddy",
@@ -48,7 +64,7 @@ return {
 				Color.new("normal", "#e3e0cd")
 				Group.new("Normal", colors.normal, nil)
 
-				Color.new("WinSeparator", "#446688")
+				Color.new("WinSeparator", "#223344")
 				Group.new("WinSeparator", colors.WinSeparator, nil)
 
 				Color.new("string", "#D7CCC8")
@@ -72,6 +88,12 @@ return {
 				Color.new("CursorLine", "#141b23")
 				Group.new("CursorLine", nil, colors.CursorLine)
 
+				-- Color.new("TroubleBg", "#171e26")
+				Color.new("TroubleFg", "#e1d4c1")
+				Color.new("TroubleBg", "#10161d")
+				-- Color.new("TroubleBg", "#1d140f")
+				Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
+
 				Color.new("NavicTextFg", "#5fbf9f")
 				Color.new("NavicTextBg", "#333333")
 				Color.new("NavicIcon", "#5fbf9f")

From ee598e5fe81aef9bb5e4afb388e5dfcd407bb9d2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 30 Mar 2024 13:55:08 +0100
Subject: [PATCH 219/656] git: add copr (check out PR) alias

---
 .gitconfig | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.gitconfig b/.gitconfig
index be56a50..7c99bef 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -42,6 +42,12 @@ sync = branchless sync
 sw = branchless switch
 s = branchless switch -i
 new = !git fetch -u origin main:main && git branchless switch -d origin/main
+copr = "!f() { \
+  pr=$1 \
+  && test -n \"$pr\" || pr=`tea pr list -o simple | fzf --bind 'enter:become(echo {+1})'` \
+  && git fetch origin refs/pull/$pr/head \
+  && git checkout --detach FETCH_HEAD \
+  ;};f"
 
 gerrit-clone = "!f() { \
   git clone ssh://gerrit-ssh.shelman.io:2222/$1 \

From fba5c2942d1cefdbcdaaf976a887feea84c98b65 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 31 Mar 2024 20:11:06 +0200
Subject: [PATCH 220/656] fish: use history prefix search

---
 .config/fish/config.fish | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 75d81b6..0ef3b13 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -54,6 +54,10 @@ if status is-interactive
 
     ## History
 
+    # FIXME: how to use autin history for these?
+    bind \cn history-prefix-search-forward
+    bind \cp history-prefix-search-backward
+
     atuin init fish | source
 end
 

From 2682af3b05fe67fb31a711fd62cf1ae6ef42054b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 31 Mar 2024 20:12:05 +0200
Subject: [PATCH 221/656] give helix a proper whirl as a daily driver

---
 .config/helix/config.toml        |  25 ++++
 .config/helix/languages.toml     |  30 +++++
 .config/helix/themes/sumi-e.toml | 194 +++++++++++++++++++++++++++++++
 .tmux.conf                       |   2 +-
 bin/tmux-edit-helper             |  45 +------
 bin/tmux-hx-helper               |  21 ++++
 bin/tmux-nvim-helper             |  44 +++++++
 7 files changed, 316 insertions(+), 45 deletions(-)
 create mode 100644 .config/helix/config.toml
 create mode 100644 .config/helix/languages.toml
 create mode 100644 .config/helix/themes/sumi-e.toml
 mode change 100755 => 120000 bin/tmux-edit-helper
 create mode 100755 bin/tmux-hx-helper
 create mode 100755 bin/tmux-nvim-helper

diff --git a/.config/helix/config.toml b/.config/helix/config.toml
new file mode 100644
index 0000000..8af7ba4
--- /dev/null
+++ b/.config/helix/config.toml
@@ -0,0 +1,25 @@
+theme = "sumi-e"
+
+[editor]
+true-color = true
+undercurl = true
+cursorline = true
+color-modes = true
+auto-pairs = false 
+
+[editor.cursor-shape]
+insert = "bar"
+normal = "block"
+select = "underline"
+
+[editor.indent-guides]
+character = "│" # "╎"
+render = true
+
+[editor.lsp]
+display-inlay-hints = true
+
+[keys.normal]
+H = ":toggle lsp.display-inlay-hints"
+Z = { Z = ":write-quit-all" }
+"esc" = ["keep_primary_selection", "collapse_selection"]
diff --git a/.config/helix/languages.toml b/.config/helix/languages.toml
new file mode 100644
index 0000000..bcbd0e7
--- /dev/null
+++ b/.config/helix/languages.toml
@@ -0,0 +1,30 @@
+[[language]]
+name = "rust"
+auto-format = true
+roots = [
+  "Cargo.toml",
+  "Cargo.lock"
+]
+
+[language.auto-pairs]
+'(' = ')'
+'{' = '}'
+'[' = ']'
+'"' = '"'
+'`' = '`'
+
+[language-server.rust-analyzer]
+command = "rust-analyzer"
+
+[language-server.rust-analyzer.config.inlayHints]
+bindingModeHints.enable = false
+chainingHints.enable = false
+# closingBraceHints.enable = false
+closingBraceHints.minLines = 10
+closureReturnTypeHints.enable = "with_block"
+# discriminantHints.enable = "fieldless"
+discriminantHints.enable = "always"
+lifetimeElisionHints.enable = "skip_trivial"
+parameterHints.enable = true
+typeHints.enable = true
+typeHints.hideClosureInitialization = false
diff --git a/.config/helix/themes/sumi-e.toml b/.config/helix/themes/sumi-e.toml
new file mode 100644
index 0000000..b643f8b
--- /dev/null
+++ b/.config/helix/themes/sumi-e.toml
@@ -0,0 +1,194 @@
+# Template document for helix color schemes
+# See also: https://docs.helix-editor.com/themes.html
+#
+# NOTE: Keys default to the most specific parent value.
+#       e.g ui.cursor.primary > ui.cursor > ui
+
+# GENERAL ==============================
+
+warning = { fg = "#ff7700" } # Editor warnings.
+error = { fg = "#ff0038" } # Editor errors, like mis-typing a command.
+info = { fg = "#00d992" } # Contextual info in diagnostic messages (LSP).
+hint = { } # Code diagnostics hints (LSP).
+diagnostic = { fg = "#c49848"} # Code diagnostics in editing area (LSP).
+"diagnostic.hint" = { underline = { color = "silver", style = "curl" } }
+"diagnostic.info" = { underline = { color = "delta", style = "curl" } }
+"diagnostic.warning" = { underline = { color = "lightning", style = "curl" } }
+"diagnostic.error" = { underline = { color = "apricot", style = "curl" } }
+"diagnostic.unnecessary" = { modifiers = ["dim"] }
+"diagnostic.deprecated" = { modifiers = ["crossed_out"] }
+
+
+# UI ==============================
+# For styling helix itself.
+
+'ui.background' = { bg="background" } # Default background color.
+'ui.background.separator' = { fg="#00a171" } 
+'ui.window' = { bg="#224466" } # Window border between splits.
+'ui.gutter' = { } # Left gutter for diagnostics and breakpoints.
+
+'ui.text' = { fg = "#e3e0cd" } # Default text color.
+'ui.text.focus' = { bg = "#294467" } # Selection highlight in buffer-picker or file-picker.
+'ui.text.info' = { } # Info popup contents (space mode menu).
+
+'ui.cursor' = { bg = "#00a171", fg = "#000000" } # Fallback cursor colour, non-primary cursors when there are multiple (shift-c).
+'ui.cursor.primary' = { bg ="#23fdb6", fg = "#000000" } # The primary cursor when there are multiple (shift-c).
+'ui.cursor.insert' = { fg = "#ff0000" } # The cursor in insert mode (i).
+'ui.cursor.select' = { } # The cursor in select mode (v).
+'ui.cursor.match' = { } # The matching parentheses of that under the cursor.
+'ui.cursorline.primary' = { bg = "#141b23" }
+
+'ui.selection' = { bg = "#294467" } # All currently selected text.
+'ui.selection.primary' = { bg = "#294467" } # The primary selection when there are multiple.
+
+'ui.linenr' = { fg = "#374351" } # Line numbers.
+'ui.linenr.selected' = { fg = "#617d9d", bg = "#14202e" } # Current line number.
+
+'ui.virtual' = {  } # Namespace for additions to the editing area.
+"ui.virtual.indent-guide" = { fg = "#273341" }
+"ui.virtual.inlay-hint" = { fg = "#51a0cf", modifiers = ["italic"] }
+'ui.virtual.ruler' = { } # Vertical rulers (colored columns in editing area).
+'ui.virtual.whitespace' = { } # Whitespace markers in editing area.
+
+'ui.statusline' = { bg = "#151920", fg = "#4d5a6c" } # Status line.
+'ui.statusline.inactive' = { } # Status line in unfocused windows.
+"ui.statusline.normal" = { } # Statusline mode during normal mode (only if editor.color-modes is enabled)
+"ui.statusline.insert" = { fg = "#b99912" } # Statusline mode during insert mode (only if editor.color-modes is enabled)
+"ui.statusline.select" = { } # Statusline mode during select mode (only if editor.color-modes is enabled)
+
+'ui.help' = { } # `:command` descriptions above the command line.
+
+'ui.highlight' = { } # selected contents of symbol pickers (spc-s, spc-S) and current line in buffer picker (spc-b).
+"ui.highlight.frameline" = { }
+
+'ui.menu' = { bg = "#242d38", fg="#bfd5e2" } # Autocomplete menu.
+'ui.menu.selected' = { bg = "#135d7e" } # Selected autocomplete item.
+
+'ui.popup' = { bg = "#253d6b", fg="#b2c6e9" } # Documentation popups (space-k).
+'ui.popup.info' = { } # Info popups box (space mode menu).
+
+
+# SYNTAX HIGHLIGHTING ==============================
+# All the keys here are Treesitter scopes.
+
+'property' = { } # Regex group names.
+'special' = { fg="#ffecd3" } # Special symbols e.g `?` in Rust, `...` in Hare.
+'attribute' = { } # Class attributes, html tag attributes.
+
+'type' = { } # Variable type, like integer or string, including program defined classes, structs etc..
+'type.builtin' = { } # Primitive types of the language (string, int, float).
+'type.enum.variant' = { } # A variant of an enum.
+
+'constructor' = { } # Constructor method for a class or struct.
+
+'constant' = { } # Constant value
+'constant.builtin' = { } # Special constants like `true`, `false`, `none`, etc.
+'constant.builtin.boolean' = { } # True or False.
+'constant.character' = { } # Constant of character type.
+'constant.character.escape' = { } # escape codes like \n.
+'constant.numeric'  = { } # constant integer or float value.
+'constant.numeric.integer' = { } # constant integer value.
+'constant.numeric.float' = { } # constant float value.
+
+'string' = { fg="#88ab8a", modifiers=["italic"] } # String literal.
+'string.regexp' = { } # Regular expression literal.
+'string.special' = { } # Strings containing a path, URL, etc.
+'string.special.path' = { } # String containing a file path.
+'string.special.url' = { } # String containing a web URL.
+'string.special.symbol' = { } # Erlang/Elixir atoms, Ruby symbols, Clojure keywords.
+
+'comment' = { fg = "#e57373", modifiers = ["bold", "italic"] } # This is a comment.
+'comment.line' = { } # Line comments, like this.
+'comment.block' = { } # Block comments, like /* this */ in some languages.
+'comment.block.documentation' = { } # Doc comments, e.g '///' in rust.
+
+'variable' = { fg="#eceff1" } # Variable names.
+'variable.builtin' = { } # Language reserved variables: `this`, `self`, `super`, etc.
+'variable.parameter' = { } # Function parameters.
+'variable.other.member' = { } # Fields of composite data types (e.g. structs, unions).
+
+'label' = { } # Loop labels, among other things.
+
+'punctuation' = { } # Any punctuation symbol.
+'punctuation.delimiter' = { fg = "#999999" } # Commas, colons or other delimiter depending on the language.
+'punctuation.bracket' = { } # Parentheses, angle brackets, etc.
+
+'keyword' = { } # Language reserved keywords.
+'keyword.control' = { } # Control keywords.
+'keyword.control.conditional' = { } # `if`, `else`, `elif`.
+'keyword.control.repeat' = { } # `for`, `while`, `loop`.
+'keyword.control.import' = { } # `import`, `export` `use`.
+'keyword.control.return' = { } # `return` in most languages.
+'keyword.control.exception' = { } # `try`, `catch`, `raise`/`throw` and related.
+'keyword.operator' = { } # `or`, `and`, `in`.
+'keyword.directive' = { } # Preprocessor directives (#if in C...).
+'keyword.function' = { } # The keyword to define a function: 'def', 'fun', 'fn'.
+
+'operator' = { } # Logical, mathematical, and other operators.
+
+'function' = { fg = "#f7f7f7" } #, modifiers = [ "bold" ] }
+'function.builtin' = { }
+'function.method' = { } # Cla"ss / Struct methods.
+'function.macro' = { }
+'function.special' = { } # Preprocessor function in C.
+
+'tag' = { } # As in <body> for html, css tags.
+'tag.error' = { } # Erroneous closing html tags.
+
+'namespace' = { } # Namespace or module identifier.
+
+
+# Markup ==============================
+# Colors for markup languages, like Markdown or XML.
+
+'markup.heading.1' = { } # Markdown heading 1 color.
+'markup.heading.2' = { } # Markdown heading 2 color.
+'markup.heading.3' = { } # Markdown heading 3 color.
+'markup.heading.4' = { } # Markdown heading 4 color.
+'markup.heading.5' = { } # Markdown heading 5 color.
+'markup.heading.6' = { } # Markdown heading 6 color.
+'markup.heading.marker' = { } # Hashtag color on Markdown headings.
+
+'markup.list' = { }
+'markup.list.numbered' = { } # Numbered list.
+'markup.list.unnumbered' = { } # Bullet point list.
+
+'markup.bold' = { } # Bold text.
+'markup.italic' = { } # Italicised text.
+
+'markup.link' = { }
+'markup.link.url' = { } # Urls pointed to by links.
+'markup.link.label' = { } # Non-URL link references.
+'markup.link.text' = { } # URL and image descriptions in links.
+
+'markup.quote' = { } # `> Quotes` in Markdown.
+
+
+# Markup - Interface ==============================
+# "These scopes are used for theming the editor interface."
+
+'markup.normal' = { }
+'markup.normal.completion' = { } # For completion doc popup ui.
+'markup.normal.raw' = { } # For hover popup ui.
+
+'markup.heading.completion' = { } # Headings for completion doc popup ui.
+'markup.heading.raw' = { } # Headings for hover popup ui.
+
+'markup.raw' = { } # Code block in Markdown.
+'markup.raw.block' = { } # Multiline (```) codeblock in Markdown.
+'markup.raw.inline' = { } # `Inline code block` in Markdown.
+'markup.raw.inline.completion' = { } # ?
+'markup.raw.inline.hover' = { } # ?
+
+# Diff ==============================
+# Version control changes.
+
+'diff.plus' = { fg = "#469e58" } # Additions.
+'diff.minus' = { fg = "#ff0038" } # Deletions.
+'diff.delta' = { fg = "#3caba4" } # Modifications.
+'diff.delta.moved' = { } # Renamed or moved files.
+
+
+[palette] # Define your custom colors here.
+white = '#ffffff'
+
diff --git a/.tmux.conf b/.tmux.conf
index d2d0757..61cb9e5 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -39,7 +39,7 @@ bind -n M-k copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-
 bind -n M-j copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
 bind -n M-Up select-pane -U
 bind -n M-Down select-pane -D
-bind -n M-1 select-window -t nvim
+bind -n M-1 select-window -t 42
 bind -n M-2 select-window -t 2
 bind -n M-3 select-window -t 3
 bind -n M-4 select-window -t 4
diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper
deleted file mode 100755
index c912ee7..0000000
--- a/bin/tmux-edit-helper
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env bash
-set -fe -o pipefail
-
-eval "$(direnv export bash 2>/dev/null)"
-
-PATH="$HOME/bin:$PATH"
-
-if [ -n "$1" ]; then
-	_file=$(readlink -f "$@")
-else
-	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0"}
-	_root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
-	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
-	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
-	_file="${_root}/${_file}"
-	fre --store_name "$_store" --add "$_file"
-fi
-
-_nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
-
-(tmux select-window -t nvim 2>/dev/null && tmux select-pane -t 0) && exec nvim --server "$_nvim_socket" --remote "$_file"
-
-# nvim is not running/listening on remote socket, so start it.
-tmux new-window -S -n nvim \
-	-e "AR=$AR" \
-	-e "AS=$AS" \
-	-e "BUILD_COMMAND=$BUILD_COMMAND" \
-	-e "CC=$CC" \
-	-e "CXX=$CXX" \
-	-e "GOFLAGS=$GOFLAGS" \
-	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
-	-e "LC_ALL=$LC_ALL" \
-	-e "LD=$LD" \
-	-e "NM=$NM" \
-	-e "NM=$NM" \
-	-e "OBJCOPY=$OBJCOPY" \
-	-e "OBJDUMP=$OBJDUMP" \
-	-e "PATH=$PATH" \
-	-e "RANLIB=$RANLIB" \
-	-e "READELF=$READELF" \
-	-e "RUST_SRC_PATH=$RUST_SRC_PATH" \
-	-e "SIZE=$SIZE" \
-	-e "STRIP=$STRIP" \
-	nvim --listen "$_nvim_socket" "$_file"
diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper
new file mode 120000
index 0000000..90b21a9
--- /dev/null
+++ b/bin/tmux-edit-helper
@@ -0,0 +1 @@
+tmux-hx-helper
\ No newline at end of file
diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper
new file mode 100755
index 0000000..a292eb3
--- /dev/null
+++ b/bin/tmux-hx-helper
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+set -exo pipefail
+
+eval "$(direnv export bash 2>/dev/null)"
+
+PATH="$HOME/bin:$PATH"
+
+if [ -n "$1" ]; then
+	_file=$(readlink -f "$@")
+else
+	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0"}
+	_root=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
+	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
+	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
+	_file="${_root}/${_file}"
+	fre --store_name "$_store" --add "$_file"
+fi
+
+(tmux select-window -t helix && 
+tmux send-keys -t helix Escape &&
+tmux send-keys -t helix ":open ${_file}" Enter) || tmux new-window -t 42 -n helix helix "${_file}"
diff --git a/bin/tmux-nvim-helper b/bin/tmux-nvim-helper
new file mode 100755
index 0000000..3c89522
--- /dev/null
+++ b/bin/tmux-nvim-helper
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+set -fe -o pipefail
+
+eval "$(direnv export bash 2>/dev/null)"
+
+PATH="$HOME/bin:$PATH"
+
+if [ -n "$1" ]; then
+	_file=$(readlink -f "$@")
+else
+	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0"}
+	_root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
+	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
+	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
+	_file="${_root}/${_file}"
+	fre --store_name "$_store" --add "$_file"
+fi
+
+_nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
+
+(tmux select-window -t nvim 2>/dev/null && tmux select-pane -t 0) && exec nvim --server "$_nvim_socket" --remote "$_file"
+
+# nvim is not running/listening on remote socket, so start it.
+tmux new-window -S -t 1001-n nvim \
+	-e "AR=$AR" \
+	-e "AS=$AS" \
+	-e "BUILD_COMMAND=$BUILD_COMMAND" \
+	-e "CC=$CC" \
+	-e "CXX=$CXX" \
+	-e "GOFLAGS=$GOFLAGS" \
+	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
+	-e "LC_ALL=$LC_ALL" \
+	-e "LD=$LD" \
+	-e "NM=$NM" \
+	-e "NM=$NM" \
+	-e "OBJCOPY=$OBJCOPY" \
+	-e "OBJDUMP=$OBJDUMP" \
+	-e "PATH=$PATH" \
+	-e "RANLIB=$RANLIB" \
+	-e "READELF=$READELF" \
+	-e "RUST_SRC_PATH=$RUST_SRC_PATH" \
+	-e "SIZE=$SIZE" \
+	-e "STRIP=$STRIP" \
+	nvim --listen "$_nvim_socket" "$_file"

From 9ff59044ef0158974334fd2e4e89976d04fb3f85 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 31 Mar 2024 21:21:40 +0200
Subject: [PATCH 222/656] helix: enable copilot w/helix-gpt

---
 .config/helix/languages.toml | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/.config/helix/languages.toml b/.config/helix/languages.toml
index bcbd0e7..1193075 100644
--- a/.config/helix/languages.toml
+++ b/.config/helix/languages.toml
@@ -5,6 +5,17 @@ roots = [
   "Cargo.toml",
   "Cargo.lock"
 ]
+language-servers = [
+    "rust-analyzer",
+    "gpt",
+]
+
+[[language]]
+name = "go"
+language-servers = [
+    "gopls",
+    "gpt",
+]
 
 [language.auto-pairs]
 '(' = ')'
@@ -28,3 +39,8 @@ lifetimeElisionHints.enable = "skip_trivial"
 parameterHints.enable = true
 typeHints.enable = true
 typeHints.hideClosureInitialization = false
+
+[language-server.gpt]
+command = "helix-gpt"
+args = ["--handler", "copilot", "--logFile", "/home/dln/.cache/helix/helix-gpt.log"]
+

From 6bc5bcee50ee20bfeda2d17473dc310778bac27f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 31 Mar 2024 21:22:01 +0200
Subject: [PATCH 223/656] helix: border around popus

---
 .config/helix/config.toml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/helix/config.toml b/.config/helix/config.toml
index 8af7ba4..a239198 100644
--- a/.config/helix/config.toml
+++ b/.config/helix/config.toml
@@ -6,6 +6,7 @@ undercurl = true
 cursorline = true
 color-modes = true
 auto-pairs = false 
+popup-border = "all"
 
 [editor.cursor-shape]
 insert = "bar"

From 182abc1ad0be8125c1c827f07af5f65f08744c4b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 1 Apr 2024 11:04:47 +0200
Subject: [PATCH 224/656] Add complete edit history using fre

---
 .config/fish/conf.d/aliases.fish | 1 +
 .tmux.conf                       | 3 ++-
 bin/tmux-edit-history            | 4 ++++
 bin/tmux-hx-helper               | 4 +++-
 bin/tmux-nvim-helper             | 2 ++
 5 files changed, 12 insertions(+), 2 deletions(-)
 create mode 100755 bin/tmux-edit-history

diff --git a/.config/fish/conf.d/aliases.fish b/.config/fish/conf.d/aliases.fish
index 275eb25..3349f69 100644
--- a/.config/fish/conf.d/aliases.fish
+++ b/.config/fish/conf.d/aliases.fish
@@ -1,4 +1,5 @@
 alias e='tmux-edit-helper'
+alias eh='tmux-edit-history'
 alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
 alias git='git-branchless wrap --'
 alias l='bat --wrap=never --pager="less -S"'
diff --git a/.tmux.conf b/.tmux.conf
index 61cb9e5..606cf3d 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -64,7 +64,8 @@ bind-key / copy-mode \; send-key ?
 bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
 bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
 bind -n M-g display-popup -h '90%' -w '90%' -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "gitui"
-bind -n M-e display-popup -h '40%' -w '90%' -y 0 -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
+bind -n M-e display-popup -h '50%' -w '90%' -y 0 -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
+bind -n M-h display-popup -h '50%' -w '90%' -y 0 -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-history"
 bind -n M-m display-popup -h '90%' -w '90%' -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "~/bin/tmux-build-helper"
 
 
diff --git a/bin/tmux-edit-history b/bin/tmux-edit-history
new file mode 100755
index 0000000..0cd4532
--- /dev/null
+++ b/bin/tmux-edit-history
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -eo pipefail
+_file=$(fre --store_name edit-history --sorted | exec fzf --no-sort)
+[ -n "$_file" ] && exec tmux-edit-helper "$_file"
diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper
index a292eb3..393deeb 100755
--- a/bin/tmux-hx-helper
+++ b/bin/tmux-hx-helper
@@ -1,5 +1,5 @@
 #!/usr/bin/env bash
-set -exo pipefail
+set -eo pipefail
 
 eval "$(direnv export bash 2>/dev/null)"
 
@@ -16,6 +16,8 @@ else
 	fre --store_name "$_store" --add "$_file"
 fi
 
+fre --store_name "edit-history" --add "$_file"
+
 (tmux select-window -t helix && 
 tmux send-keys -t helix Escape &&
 tmux send-keys -t helix ":open ${_file}" Enter) || tmux new-window -t 42 -n helix helix "${_file}"
diff --git a/bin/tmux-nvim-helper b/bin/tmux-nvim-helper
index 3c89522..033e05b 100755
--- a/bin/tmux-nvim-helper
+++ b/bin/tmux-nvim-helper
@@ -16,6 +16,8 @@ else
 	fre --store_name "$_store" --add "$_file"
 fi
 
+fre --store_name "edit-history" --add "$_file"
+
 _nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
 
 (tmux select-window -t nvim 2>/dev/null && tmux select-pane -t 0) && exec nvim --server "$_nvim_socket" --remote "$_file"

From 6e27ee2b5fb3085757fa43105b72abcbb32ad571 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 1 Apr 2024 13:07:30 +0200
Subject: [PATCH 225/656] tmux: M-e invokes edit-helper, repeat to replace with
 edit-history

---
 .tmux.conf            | 8 ++++----
 bin/tmux-edit-history | 2 +-
 bin/tmux-hx-helper    | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/.tmux.conf b/.tmux.conf
index 606cf3d..9432e59 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -63,10 +63,10 @@ bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-d
 bind-key / copy-mode \; send-key ?
 bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
 bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
-bind -n M-g display-popup -h '90%' -w '90%' -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "gitui"
-bind -n M-e display-popup -h '50%' -w '90%' -y 0 -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
-bind -n M-h display-popup -h '50%' -w '90%' -y 0 -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-history"
-bind -n M-m display-popup -h '90%' -w '90%' -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "~/bin/tmux-build-helper"
+bind -n M-g display-popup -h '95%' -w '95%' -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "gitui"
+bind -n M-e display-popup -h '95%' -w '95%' -y 0 -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
+bind -n M-h display-popup -h '95%' -w '95%' -y 0 -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-history"
+bind -n M-m display-popup -h '95%' -w '95%' -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "~/bin/tmux-build-helper"
 
 
 setw -g window-status-format ""
diff --git a/bin/tmux-edit-history b/bin/tmux-edit-history
index 0cd4532..6631110 100755
--- a/bin/tmux-edit-history
+++ b/bin/tmux-edit-history
@@ -1,4 +1,4 @@
 #!/usr/bin/env bash
 set -eo pipefail
-_file=$(fre --store_name edit-history --sorted | exec fzf --no-sort)
+_file=$(fre --store_name edit-history --sorted | exec fzf --no-sort --preview "bat {}" --preview-window=down,70%,wrap,border-top --color=bg+:16,fg+:49,pointer:49 --layout=reverse "--bind=alt-e:become(tmux-edit-helper)")
 [ -n "$_file" ] && exec tmux-edit-helper "$_file"
diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper
index 393deeb..9370832 100755
--- a/bin/tmux-hx-helper
+++ b/bin/tmux-hx-helper
@@ -8,10 +8,10 @@ PATH="$HOME/bin:$PATH"
 if [ -n "$1" ]; then
 	_file=$(readlink -f "$@")
 else
-	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0"}
+	FZF=${FZF:-"fzf-tmux -p 90%,90% -y 0"}
 	_root=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
 	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
-	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
+	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort --preview "bat {}" --preview-window=bottom,70%,border-top --color=bg+:16,fg+:49,pointer:49 --layout=reverse "--bind=alt-e:become(tmux-edit-history)")
 	_file="${_root}/${_file}"
 	fre --store_name "$_store" --add "$_file"
 fi

From 9c7fa60c20790f5ef2d452aae0cd585eb6e3026d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 1 Apr 2024 13:08:03 +0200
Subject: [PATCH 226/656] bat: add catpuccin color theme

---
 .config/bat/config                          |    2 +-
 .config/bat/themes/Catppuccin Mocha.tmTheme | 2021 +++++++++++++++++++
 2 files changed, 2022 insertions(+), 1 deletion(-)
 create mode 100644 .config/bat/themes/Catppuccin Mocha.tmTheme

diff --git a/.config/bat/config b/.config/bat/config
index 609fc6e..d5f2441 100644
--- a/.config/bat/config
+++ b/.config/bat/config
@@ -1,3 +1,3 @@
 --italic-text=always
 --plain
---theme=ansi
+--theme="Catppuccin Mocha"
diff --git a/.config/bat/themes/Catppuccin Mocha.tmTheme b/.config/bat/themes/Catppuccin Mocha.tmTheme
new file mode 100644
index 0000000..364617b
--- /dev/null
+++ b/.config/bat/themes/Catppuccin Mocha.tmTheme	
@@ -0,0 +1,2021 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+  <dict>
+    <key>name</key>
+    <string>Catppuccin Mocha</string>
+    <key>semanticClass</key>
+    <string>theme.dark.catppuccin-mocha</string>
+    <key>uuid</key>
+    <string>627ce890-fabb-4d39-9819-7be71f4bdca7</string>
+    <key>author</key>
+    <string>Catppuccin Org</string>
+    <key>colorSpaceName</key>
+    <string>sRGB</string>
+    <key>settings</key>
+    <array>
+      <dict>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#1e1e2e</string>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+          <key>caret</key>
+          <string>#f5e0dc</string>
+          <key>lineHighlight</key>
+          <string>#cdd6f412</string>
+          <key>misspelling</key>
+          <string>#f38ba8</string>
+          <key>accent</key>
+          <string>#cba6f7</string>
+          <key>selection</key>
+          <string>#9399b240</string>
+          <key>activeGuide</key>
+          <string>#45475a</string>
+          <key>findHighlight</key>
+          <string>#3e5767</string>
+          <key>gutterForeground</key>
+          <string>#7f849c</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Basic text &amp; variable names (incl. leading punctuation)</string>
+        <key>scope</key>
+        <string>text, source, variable.other.readwrite, punctuation.definition.variable</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Parentheses, Brackets, Braces</string>
+        <key>scope</key>
+        <string>punctuation</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#9399b2</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Comments</string>
+        <key>scope</key>
+        <string>comment, punctuation.definition.comment</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#6c7086</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>string, punctuation.definition.string</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6e3a1</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>constant.character.escape</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Booleans, constants, numbers</string>
+        <key>scope</key>
+        <string>constant.numeric, variable.other.constant, entity.name.constant, constant.language.boolean, constant.language.false, constant.language.true, keyword.other.unit.user-defined, keyword.other.unit.suffix.floating-point</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>keyword, keyword.operator.word, keyword.operator.new, variable.language.super, support.type.primitive, storage.type, storage.modifier, punctuation.definition.keyword</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>entity.name.tag.documentation</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Punctuation</string>
+        <key>scope</key>
+        <string>keyword.operator, punctuation.accessor, punctuation.definition.generic, meta.function.closure punctuation.section.parameters, punctuation.definition.tag, punctuation.separator.key-value</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>entity.name.function, meta.function-call.method, support.function, support.function.misc, variable.function</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Classes</string>
+        <key>scope</key>
+        <string>entity.name.class, entity.other.inherited-class, support.class, meta.function-call.constructor, entity.name.struct</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Enum</string>
+        <key>scope</key>
+        <string>entity.name.enum</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Enum member</string>
+        <key>scope</key>
+        <string>meta.enum variable.other.readwrite, variable.other.enummember</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Object properties</string>
+        <key>scope</key>
+        <string>meta.property.object</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Types</string>
+        <key>scope</key>
+        <string>meta.type, meta.type-alias, support.type, entity.name.type</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Decorators</string>
+        <key>scope</key>
+        <string>meta.annotation variable.function, meta.annotation variable.annotation.function, meta.annotation punctuation.definition.annotation, meta.decorator, punctuation.decorator</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>variable.parameter, meta.function.parameters</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Built-ins</string>
+        <key>scope</key>
+        <string>constant.language, support.function.builtin</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>entity.other.attribute-name.documentation</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Preprocessor directives</string>
+        <key>scope</key>
+        <string>keyword.control.directive, punctuation.definition.directive</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Type parameters</string>
+        <key>scope</key>
+        <string>punctuation.definition.typeparameters</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89dceb</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Namespaces</string>
+        <key>scope</key>
+        <string>entity.name.namespace</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Property names (left hand assignments in json/yaml/css)</string>
+        <key>scope</key>
+        <string>support.type.property-name.css</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>This/Self keyword</string>
+        <key>scope</key>
+        <string>variable.language.this, variable.language.this punctuation.definition.variable</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Object properties</string>
+        <key>scope</key>
+        <string>variable.object.property</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>String template interpolation</string>
+        <key>scope</key>
+        <string>string.template variable, string variable</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>`new` as bold</string>
+        <key>scope</key>
+        <string>keyword.operator.new</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>bold</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>C++ extern keyword</string>
+        <key>scope</key>
+        <string>storage.modifier.specifier.extern.cpp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>C++ scope resolution</string>
+        <key>scope</key>
+        <string>entity.name.scope-resolution.template.call.cpp, entity.name.scope-resolution.parameter.cpp, entity.name.scope-resolution.cpp, entity.name.scope-resolution.function.definition.cpp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>C++ doc keywords</string>
+        <key>scope</key>
+        <string>storage.type.class.doxygen</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>C++ operators</string>
+        <key>scope</key>
+        <string>storage.modifier.reference.cpp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>C# Interpolated Strings</string>
+        <key>scope</key>
+        <string>meta.interpolation.cs</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>C# xml-style docs</string>
+        <key>scope</key>
+        <string>comment.block.documentation.cs</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Classes, reflecting the className color in JSX</string>
+        <key>scope</key>
+        <string>source.css entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Operators</string>
+        <key>scope</key>
+        <string>punctuation.separator.operator.css</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Pseudo classes</string>
+        <key>scope</key>
+        <string>source.css entity.other.attribute-name.pseudo-class</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>source.css constant.other.unicode-range</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>source.css variable.parameter.url</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6e3a1</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>CSS vendored property names</string>
+        <key>scope</key>
+        <string>support.type.vendored.property-name</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89dceb</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Less/SCSS right-hand variables (@/$-prefixed)</string>
+        <key>scope</key>
+        <string>source.css meta.property-value variable, source.css meta.property-value variable.other.less, source.css meta.property-value variable.other.less punctuation.definition.variable.less, meta.definition.variable.scss</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>CSS variables (--prefixed)</string>
+        <key>scope</key>
+        <string>source.css meta.property-list variable, meta.property-list variable.other.less, meta.property-list variable.other.less punctuation.definition.variable.less</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>CSS Percentage values, styled the same as numbers</string>
+        <key>scope</key>
+        <string>keyword.other.unit.percentage.css</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>CSS Attribute selectors, styled the same as strings</string>
+        <key>scope</key>
+        <string>source.css meta.attribute-selector</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6e3a1</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON/YAML keys, other left-hand assignments</string>
+        <key>scope</key>
+        <string>keyword.other.definition.ini, punctuation.support.type.property-name.json, support.type.property-name.json, punctuation.support.type.property-name.toml, support.type.property-name.toml, entity.name.tag.yaml, punctuation.support.type.property-name.yaml, support.type.property-name.yaml</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON/YAML constants</string>
+        <key>scope</key>
+        <string>constant.language.json, constant.language.yaml</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>YAML anchors</string>
+        <key>scope</key>
+        <string>entity.name.type.anchor.yaml, variable.other.alias.yaml</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>TOML tables / ini groups</string>
+        <key>scope</key>
+        <string>support.type.property-name.table, entity.name.section.group-title.ini</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>TOML dates</string>
+        <key>scope</key>
+        <string>constant.other.time.datetime.offset.toml</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>YAML anchor puctuation</string>
+        <key>scope</key>
+        <string>punctuation.definition.anchor.yaml, punctuation.definition.alias.yaml</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>YAML triple dashes</string>
+        <key>scope</key>
+        <string>entity.other.document.begin.yaml</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markup Diff</string>
+        <key>scope</key>
+        <string>markup.changed.diff</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Diff</string>
+        <key>scope</key>
+        <string>meta.diff.header.from-file, meta.diff.header.to-file, punctuation.definition.from-file.diff, punctuation.definition.to-file.diff</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Diff Inserted</string>
+        <key>scope</key>
+        <string>markup.inserted.diff</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6e3a1</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Diff Deleted</string>
+        <key>scope</key>
+        <string>markup.deleted.diff</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>dotenv left-hand side assignments</string>
+        <key>scope</key>
+        <string>variable.other.env</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>dotenv reference to existing env variable</string>
+        <key>scope</key>
+        <string>string.quoted variable.other.env</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>GDScript functions</string>
+        <key>scope</key>
+        <string>support.function.builtin.gdscript</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>GDScript constants</string>
+        <key>scope</key>
+        <string>constant.language.gdscript</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Comment keywords</string>
+        <key>scope</key>
+        <string>comment meta.annotation.go</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>go:embed, go:build, etc.</string>
+        <key>scope</key>
+        <string>comment meta.annotation.parameters.go</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Go constants (nil, true, false)</string>
+        <key>scope</key>
+        <string>constant.language.go</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>GraphQL variables</string>
+        <key>scope</key>
+        <string>variable.graphql</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>GraphQL aliases</string>
+        <key>scope</key>
+        <string>string.unquoted.alias.graphql</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f2cdcd</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>GraphQL enum members</string>
+        <key>scope</key>
+        <string>constant.character.enum.graphql</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>GraphQL field in types</string>
+        <key>scope</key>
+        <string>meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f2cdcd</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>HTML/XML DOCTYPE as keyword</string>
+        <key>scope</key>
+        <string>keyword.other.doctype, meta.tag.sgml.doctype punctuation.definition.tag, meta.tag.metadata.doctype entity.name.tag, meta.tag.metadata.doctype punctuation.definition.tag</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>HTML/XML-like &lt;tags/&gt;</string>
+        <key>scope</key>
+        <string>entity.name.tag</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Special characters like &amp;amp;</string>
+        <key>scope</key>
+        <string>text.html constant.character.entity, text.html constant.character.entity punctuation, constant.character.entity.xml, constant.character.entity.xml punctuation, constant.character.entity.js.jsx, constant.charactger.entity.js.jsx punctuation, constant.character.entity.tsx, constant.character.entity.tsx punctuation</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>HTML/XML tag attribute values</string>
+        <key>scope</key>
+        <string>entity.other.attribute-name</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Components</string>
+        <key>scope</key>
+        <string>support.class.component, support.class.component.jsx, support.class.component.tsx, support.class.component.vue</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Annotations</string>
+        <key>scope</key>
+        <string>punctuation.definition.annotation, storage.type.annotation</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Java enums</string>
+        <key>scope</key>
+        <string>constant.other.enum.java</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Java imports</string>
+        <key>scope</key>
+        <string>storage.modifier.import.java</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Javadoc</string>
+        <key>scope</key>
+        <string>comment.block.javadoc.java keyword.other.documentation.javadoc.java</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Exported Variable</string>
+        <key>scope</key>
+        <string>meta.export variable.other.readwrite.js</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JS/TS constants &amp; properties</string>
+        <key>scope</key>
+        <string>variable.other.constant.js, variable.other.constant.ts, variable.other.property.js, variable.other.property.ts</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSDoc; these are mainly params, so styled as such</string>
+        <key>scope</key>
+        <string>variable.other.jsdoc, comment.block.documentation variable.other</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSDoc keywords</string>
+        <key>scope</key>
+        <string>storage.type.class.jsdoc</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>support.type.object.console.js</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Node constants as keywords (module, etc.)</string>
+        <key>scope</key>
+        <string>support.constant.node, support.type.object.module.js</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>implements as keyword</string>
+        <key>scope</key>
+        <string>storage.modifier.implements</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Builtin types</string>
+        <key>scope</key>
+        <string>constant.language.null.js, constant.language.null.ts, constant.language.undefined.js, constant.language.undefined.ts, support.type.builtin.ts</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>variable.parameter.generic</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Arrow functions</string>
+        <key>scope</key>
+        <string>keyword.declaration.function.arrow.js, storage.type.function.arrow.ts</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach)</string>
+        <key>scope</key>
+        <string>punctuation.decorator.ts</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Extra JS/TS keywords</string>
+        <key>scope</key>
+        <string>keyword.operator.expression.in.js, keyword.operator.expression.in.ts, keyword.operator.expression.infer.ts, keyword.operator.expression.instanceof.js, keyword.operator.expression.instanceof.ts, keyword.operator.expression.is, keyword.operator.expression.keyof.ts, keyword.operator.expression.of.js, keyword.operator.expression.of.ts, keyword.operator.expression.typeof.ts</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Julia macros</string>
+        <key>scope</key>
+        <string>support.function.macro.julia</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Julia language constants (true, false)</string>
+        <key>scope</key>
+        <string>constant.language.julia</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Julia other constants (these seem to be arguments inside arrays)</string>
+        <key>scope</key>
+        <string>constant.other.symbol.julia</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>LaTeX preamble</string>
+        <key>scope</key>
+        <string>text.tex keyword.control.preamble</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>LaTeX be functions</string>
+        <key>scope</key>
+        <string>text.tex support.function.be</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89dceb</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>LaTeX math</string>
+        <key>scope</key>
+        <string>constant.other.general.math.tex</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f2cdcd</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Lua docstring keywords</string>
+        <key>scope</key>
+        <string>comment.line.double-dash.documentation.lua storage.type.annotation.lua</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Lua docstring variables</string>
+        <key>scope</key>
+        <string>comment.line.double-dash.documentation.lua entity.name.variable.lua, comment.line.double-dash.documentation.lua variable.lua</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>heading.1.markdown punctuation.definition.heading.markdown, heading.1.markdown, markup.heading.atx.1.mdx, markup.heading.atx.1.mdx punctuation.definition.heading.mdx, markup.heading.setext.1.markdown, markup.heading.heading-0.asciidoc</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>heading.2.markdown punctuation.definition.heading.markdown, heading.2.markdown, markup.heading.atx.2.mdx, markup.heading.atx.2.mdx punctuation.definition.heading.mdx, markup.heading.setext.2.markdown, markup.heading.heading-1.asciidoc</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>heading.3.markdown punctuation.definition.heading.markdown, heading.3.markdown, markup.heading.atx.3.mdx, markup.heading.atx.3.mdx punctuation.definition.heading.mdx, markup.heading.heading-2.asciidoc</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>heading.4.markdown punctuation.definition.heading.markdown, heading.4.markdown, markup.heading.atx.4.mdx, markup.heading.atx.4.mdx punctuation.definition.heading.mdx, markup.heading.heading-3.asciidoc</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6e3a1</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>heading.5.markdown punctuation.definition.heading.markdown, heading.5.markdown, markup.heading.atx.5.mdx, markup.heading.atx.5.mdx punctuation.definition.heading.mdx, markup.heading.heading-4.asciidoc</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>heading.6.markdown punctuation.definition.heading.markdown, heading.6.markdown, markup.heading.atx.6.mdx, markup.heading.atx.6.mdx punctuation.definition.heading.mdx, markup.heading.heading-5.asciidoc</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>markup.bold</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+          <key>fontStyle</key>
+          <string>bold</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>markup.italic</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>markup.strikethrough</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6adc8</string>
+          <key>fontStyle</key>
+          <string>strikethrough</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markdown auto links</string>
+        <key>scope</key>
+        <string>punctuation.definition.link, markup.underline.link</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markdown links</string>
+        <key>scope</key>
+        <string>text.html.markdown punctuation.definition.link.title, string.other.link.title.markdown, markup.link, punctuation.definition.constant.markdown, constant.other.reference.link.markdown, markup.substitution.attribute-reference</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b4befe</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markdown code spans</string>
+        <key>scope</key>
+        <string>punctuation.definition.raw.markdown, markup.inline.raw.string.markdown, markup.raw.block.markdown</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6e3a1</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markdown triple backtick language identifier</string>
+        <key>scope</key>
+        <string>fenced_code.block.language</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89dceb</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markdown triple backticks</string>
+        <key>scope</key>
+        <string>markup.fenced_code.block punctuation.definition, markup.raw support.asciidoc</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#9399b2</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markdown quotes</string>
+        <key>scope</key>
+        <string>markup.quote, punctuation.definition.quote.begin</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markdown separators</string>
+        <key>scope</key>
+        <string>meta.separator.markdown</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Markdown list bullets</string>
+        <key>scope</key>
+        <string>punctuation.definition.list.begin.markdown, markup.list.bullet</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Nix attribute names</string>
+        <key>scope</key>
+        <string>entity.other.attribute-name.multipart.nix, entity.other.attribute-name.single.nix</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Nix parameter names</string>
+        <key>scope</key>
+        <string>variable.parameter.name.nix</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Nix interpolated parameter names</string>
+        <key>scope</key>
+        <string>meta.embedded variable.parameter.name.nix</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b4befe</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Nix paths</string>
+        <key>scope</key>
+        <string>string.unquoted.path.nix</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>PHP Attributes</string>
+        <key>scope</key>
+        <string>support.attribute.builtin, meta.attribute.php</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>PHP Parameters (needed for the leading dollar sign)</string>
+        <key>scope</key>
+        <string>meta.function.parameters.php punctuation.definition.variable.php</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>PHP Constants (null, __FILE__, etc.)</string>
+        <key>scope</key>
+        <string>constant.language.php</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>PHP functions</string>
+        <key>scope</key>
+        <string>text.html.php support.function</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89dceb</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>PHPdoc keywords</string>
+        <key>scope</key>
+        <string>keyword.other.phpdoc.php</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Python argument functions reset to text, otherwise they inherit blue from function-call</string>
+        <key>scope</key>
+        <string>support.variable.magic.python, meta.function-call.arguments.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Python double underscore functions</string>
+        <key>scope</key>
+        <string>support.function.magic.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89dceb</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Python `self` keyword</string>
+        <key>scope</key>
+        <string>variable.parameter.function.language.special.self.python, variable.language.special.self.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>python keyword flow/logical (for ... in)</string>
+        <key>scope</key>
+        <string>keyword.control.flow.python, keyword.operator.logical.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>python storage type</string>
+        <key>scope</key>
+        <string>storage.type.function.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>python function support</string>
+        <key>scope</key>
+        <string>support.token.decorator.python, meta.function.decorator.identifier.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89dceb</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>python function calls</string>
+        <key>scope</key>
+        <string>meta.function-call.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>python function decorators</string>
+        <key>scope</key>
+        <string>entity.name.function.decorator.python, punctuation.definition.decorator.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>python placeholder reset to normal string</string>
+        <key>scope</key>
+        <string>constant.character.format.placeholder.other.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Python exception &amp; builtins such as exit()</string>
+        <key>scope</key>
+        <string>support.type.exception.python, support.function.builtin.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>entity.name.type</string>
+        <key>scope</key>
+        <string>support.type.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>python constants (True/False)</string>
+        <key>scope</key>
+        <string>constant.language.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Arguments accessed later in the function body</string>
+        <key>scope</key>
+        <string>meta.indexed-name.python, meta.item-access.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Python f-strings/binary/unicode storage types</string>
+        <key>scope</key>
+        <string>storage.type.string.python</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6e3a1</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Python type hints</string>
+        <key>scope</key>
+        <string>meta.function.parameters.python</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex string begin/end in JS/TS</string>
+        <key>scope</key>
+        <string>string.regexp punctuation.definition.string.begin, string.regexp punctuation.definition.string.end</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex anchors (^, $)</string>
+        <key>scope</key>
+        <string>keyword.control.anchor.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex regular string match</string>
+        <key>scope</key>
+        <string>string.regexp.ts</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex group parenthesis &amp; backreference (\1, \2, \3, ...)</string>
+        <key>scope</key>
+        <string>punctuation.definition.group.regexp, keyword.other.back-reference.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#a6e3a1</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex character class []</string>
+        <key>scope</key>
+        <string>punctuation.definition.character-class.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex character classes (\d, \w, \s)</string>
+        <key>scope</key>
+        <string>constant.other.character-class.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex range</string>
+        <key>scope</key>
+        <string>constant.other.character-class.range.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5e0dc</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex quantifier</string>
+        <key>scope</key>
+        <string>keyword.operator.quantifier.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex constant/numeric</string>
+        <key>scope</key>
+        <string>constant.character.numeric.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds</string>
+        <key>scope</key>
+        <string>punctuation.definition.group.no-capture.regexp, meta.assertion.look-ahead.regexp, meta.assertion.negative-look-ahead.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust attribute</string>
+        <key>scope</key>
+        <string>meta.annotation.rust, meta.annotation.rust punctuation, meta.attribute.rust, punctuation.definition.attribute.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust attribute strings</string>
+        <key>scope</key>
+        <string>meta.attribute.rust string.quoted.double.rust, meta.attribute.rust string.quoted.single.char.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust keyword</string>
+        <key>scope</key>
+        <string>entity.name.function.macro.rules.rust, storage.type.module.rust, storage.modifier.rust, storage.type.struct.rust, storage.type.enum.rust, storage.type.trait.rust, storage.type.union.rust, storage.type.impl.rust, storage.type.rust, storage.type.function.rust, storage.type.type.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust u/i32, u/i64, etc.</string>
+        <key>scope</key>
+        <string>entity.name.type.numeric.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+          <key>fontStyle</key>
+          <string/>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust generic</string>
+        <key>scope</key>
+        <string>meta.generic.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust impl</string>
+        <key>scope</key>
+        <string>entity.name.impl.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust module</string>
+        <key>scope</key>
+        <string>entity.name.module.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust trait</string>
+        <key>scope</key>
+        <string>entity.name.trait.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust struct</string>
+        <key>scope</key>
+        <string>storage.type.source.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust union</string>
+        <key>scope</key>
+        <string>entity.name.union.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f9e2af</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust enum member</string>
+        <key>scope</key>
+        <string>meta.enum.rust storage.type.source.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust macro</string>
+        <key>scope</key>
+        <string>support.macro.rust, meta.macro.rust support.function.rust, entity.name.function.macro.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust lifetime</string>
+        <key>scope</key>
+        <string>storage.modifier.lifetime.rust, entity.name.type.lifetime</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust string formatting</string>
+        <key>scope</key>
+        <string>string.quoted.double.rust constant.other.placeholder.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust return type generic</string>
+        <key>scope</key>
+        <string>meta.function.return-type.rust meta.generic.rust storage.type.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust functions</string>
+        <key>scope</key>
+        <string>meta.function.call.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust angle brackets</string>
+        <key>scope</key>
+        <string>punctuation.brackets.angle.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89dceb</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust constants</string>
+        <key>scope</key>
+        <string>constant.other.caps.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust function parameters</string>
+        <key>scope</key>
+        <string>meta.function.definition.rust variable.other.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#eba0ac</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust closure variables</string>
+        <key>scope</key>
+        <string>meta.function.call.rust variable.other.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust self</string>
+        <key>scope</key>
+        <string>variable.language.self.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Rust metavariable names</string>
+        <key>scope</key>
+        <string>variable.other.metavariable.name.rust, meta.macro.metavariable.rust keyword.operator.macro.dollar.rust</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Shell shebang</string>
+        <key>scope</key>
+        <string>comment.line.shebang, comment.line.shebang punctuation.definition.comment, comment.line.shebang, punctuation.definition.comment.shebang.shell, meta.shebang.shell</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Shell shebang command</string>
+        <key>scope</key>
+        <string>comment.line.shebang constant.language</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Shell interpolated command</string>
+        <key>scope</key>
+        <string>meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation, meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f38ba8</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Shell interpolated command variable</string>
+        <key>scope</key>
+        <string>meta.string meta.interpolation.parameter.shell variable.other.readwrite</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#fab387</string>
+          <key>fontStyle</key>
+          <string>italic</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>source.shell punctuation.section.interpolation, punctuation.definition.evaluation.backticks.shell</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#94e2d5</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Shell EOF</string>
+        <key>scope</key>
+        <string>entity.name.tag.heredoc.shell</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Shell quoted variable</string>
+        <key>scope</key>
+        <string>string.quoted.double.shell variable.other.normal.shell</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cdd6f4</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>markup.heading.synopsis.man, markup.heading.title.man, markup.heading.other.man, markup.heading.env.man</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#cba6f7</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>markup.heading.commands.man</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#89b4fa</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>markup.heading.env.man</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#f5c2e7</string>
+        </dict>
+      </dict>
+    </array>
+  </dict>
+</plist>
\ No newline at end of file

From 870ff77a1e71e43d60096171e34bee74e638e385 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 1 Apr 2024 15:41:02 +0200
Subject: [PATCH 227/656] fish: fancy colors for C-g

---
 .config/fish/config.fish | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 0ef3b13..a915c48 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -25,6 +25,8 @@ if status is-interactive
 
     ## Utilities
 
+    export EDITOR=helix
+
     function tree
         eza --tree --color=always $argv | bat --wrap=never
     end
@@ -40,7 +42,7 @@ if status is-interactive
     end
 
     function jump
-        set _dir $(fre --sorted | fzf-tmux --no-sort -p 90%,40% -y 0)
+        set _dir $(fre --sorted | fzf-tmux --no-sort -p 90%,40% -y 0 -- --color=fg:248,bg+:16,fg+:49,pointer:49,border:49 --layout=reverse)
         [ -n "$_dir" ] && pushd $_dir >>/dev/null
         commandline -f repaint
     end

From 558c7936b1d556e876e8e96f0bcbf37674d9c035 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 1 Apr 2024 23:36:31 +0200
Subject: [PATCH 228/656] tmux: ensure env vars are set in helpers

---
 bin/tmux-hx-helper   | 22 +++++++++++++++++++++-
 bin/tmux-nvim-helper |  2 +-
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper
index 9370832..56bdb95 100755
--- a/bin/tmux-hx-helper
+++ b/bin/tmux-hx-helper
@@ -20,4 +20,24 @@ fre --store_name "edit-history" --add "$_file"
 
 (tmux select-window -t helix && 
 tmux send-keys -t helix Escape &&
-tmux send-keys -t helix ":open ${_file}" Enter) || tmux new-window -t 42 -n helix helix "${_file}"
+tmux send-keys -t helix ":open ${_file}" Enter) || tmux new-window -t 42 -n helix \
+	-e "AR=$AR" \
+	-e "AS=$AS" \
+	-e "BUILD_COMMAND=$BUILD_COMMAND" \
+	-e "CC=$CC" \
+	-e "CXX=$CXX" \
+	-e "GOFLAGS=$GOFLAGS" \
+	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
+	-e "LC_ALL=$LC_ALL" \
+	-e "LD=$LD" \
+	-e "NM=$NM" \
+	-e "NM=$NM" \
+	-e "OBJCOPY=$OBJCOPY" \
+	-e "OBJDUMP=$OBJDUMP" \
+	-e "PATH=$PATH" \
+	-e "RANLIB=$RANLIB" \
+	-e "READELF=$READELF" \
+	-e "RUST_SRC_PATH=$RUST_SRC_PATH" \
+	-e "SIZE=$SIZE" \
+	-e "STRIP=$STRIP" \
+	helix "${_file}"
diff --git a/bin/tmux-nvim-helper b/bin/tmux-nvim-helper
index 033e05b..4b35744 100755
--- a/bin/tmux-nvim-helper
+++ b/bin/tmux-nvim-helper
@@ -23,7 +23,7 @@ _nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
 (tmux select-window -t nvim 2>/dev/null && tmux select-pane -t 0) && exec nvim --server "$_nvim_socket" --remote "$_file"
 
 # nvim is not running/listening on remote socket, so start it.
-tmux new-window -S -t 1001-n nvim \
+tmux new-window -S -t 43 -n nvim \
 	-e "AR=$AR" \
 	-e "AS=$AS" \
 	-e "BUILD_COMMAND=$BUILD_COMMAND" \

From c522ff99b21cfe748a350da57ff023318c10b75a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 1 Apr 2024 23:36:59 +0200
Subject: [PATCH 229/656] nvim: colors

---
 .config/nvim/lazy-lock.json              | 15 ++++++++-------
 .config/nvim/lua/plugins/colorscheme.lua | 18 +++++++++++++++++-
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 609dc42..783ae74 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -2,7 +2,8 @@
   "LazyVim": { "branch": "main", "commit": "5646ee5191da244ff8ea57b9dba8a7e0d1dbdd42" },
   "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
   "SchemaStore.nvim": { "branch": "main", "commit": "4ce271f0db8b5224b4d69a43a75c13f5b4dcba43" },
-  "catppuccin": { "branch": "main", "commit": "c3572a968a79b64bd0ef16f2c3e93014f112e66d" },
+  "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
+  "catppuccin": { "branch": "main", "commit": "aebe43db9cb26e1c70fc5b2fd4158169c405e720" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
@@ -27,28 +28,28 @@
   "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" },
   "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
   "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
-  "mini.colors": { "branch": "main", "commit": "f64963332f7fcb45c8dfcc243f682a9a0fb9935d" },
   "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "49e0364b8c9a3258b485c5ece40bb0f3a5e94b1c" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "16d1b194376bf1fc2acd89ccb3c29ba8315bfcea" },
   "neoconf.nvim": { "branch": "main", "commit": "ef304c29977b85c99382fcba821b3f710e144a74" },
-  "neodev.nvim": { "branch": "main", "commit": "6a533ed9d3435dcaa456380d833ea04da37ea2ed" },
+  "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
   "noice.nvim": { "branch": "main", "commit": "0cbe3f88d038320bdbda3c4c5c95f43a13c3aa12" },
   "none-ls.nvim": { "branch": "main", "commit": "18910d09d21d7df339805343bfe4a2b2e41c057b" },
   "nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" },
-  "nvim-cmp": { "branch": "main", "commit": "97dc716fc914c46577a4f254035ebef1aa72558a" },
+  "nvim-cmp": { "branch": "main", "commit": "7aa3f71932c419d716290e132cacbafbaf5bea1c" },
   "nvim-dap": { "branch": "master", "commit": "405df1dcc2e395ab5173a9c3d00e03942c023074" },
   "nvim-dap-go": { "branch": "main", "commit": "36abe1d320cb61bfdf094d4e0fe815ef58f2302a" },
   "nvim-dap-ui": { "branch": "master", "commit": "edfa93f60b189e5952c016eee262d0685d838450" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "baa5b0dc6663284cce32e0d00ac1f2511b13496f" },
   "nvim-lint": { "branch": "master", "commit": "2669aabb8362fdc36aced5ba864b7135636ea863" },
-  "nvim-lspconfig": { "branch": "master", "commit": "6e5c78ebc9936ca74add66bda22c566f951b6ee5" },
+  "nvim-lspconfig": { "branch": "master", "commit": "f4619ab31fc4676001ea05ae8200846e6e7700c7" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-nio": { "branch": "master", "commit": "33c62b3eadd8154169e42144de16ba4db6784bec" },
+  "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "2b012554a2536465243c0dff3605b5927c49ed23" },
-  "nvim-treesitter": { "branch": "master", "commit": "f84887230af1f7581e29ccd5d93f59d98058d565" },
+  "nvim-treesitter": { "branch": "master", "commit": "6e0b031ebb212e7082bc3007f8b9614cb393465c" },
   "nvim-treesitter-context": { "branch": "master", "commit": "f19766163c18515fb4d3c12d572bf9cba6cdb990" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
@@ -59,7 +60,7 @@
   "rustaceanvim": { "branch": "master", "commit": "b1433cb70569b888d26a26232da93fdbc76cb4a8" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "b22e6f6896cd64b109bd0807a24098d225d5fb49" },
+  "telescope.nvim": { "branch": "master", "commit": "1bb28df3cfc241b961331f00dcb8d5b45fe3e4f0" },
   "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
   "tokyonight.nvim": { "branch": "main", "commit": "9bf9ec53d5e87b025e2404069b71e7ebdc3a13e5" },
   "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" },
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 69ab246..b202a60 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,5 +1,18 @@
 return {
+	{
+		"p00f/alabaster.nvim",
+		url = "https://git.sr.ht/~p00f/alabaster.nvim",
+		lazy = false,
+	},
+
 	--[=====[
+	{
+		"LazyVim/LazyVim",
+		opts = {
+			colorscheme = "alabaster",
+		},
+	},
+
 	{ "echasnovski/mini.colors", version = false },
 
 	{
@@ -128,8 +141,11 @@ return {
 				Group.link("NavicIconsTypeParameter", groups.NavicIcon)
 
 				Color.new("NormalFloatFg", "#b8d1ef", styles.nocombine)
-				Color.new("NormalFloatBg", "#335a88", styles.nocombine)
+				-- Color.new("NormalFloatBg", "#335a88", styles.nocombine)
+				Color.new("NormalFloatBg", "#242d38", styles.nocombine)
+				Color.new("NormalFloatBorder", "#00d992", styles.nocombine)
 				Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
+				Group.new("FloatBorder", colors.NormalFloatBorder, colors.NormalFloatBg)
 
 				Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
 				Color.new("PmenuSelBg", "#335a88", styles.nocombine)

From 348a87f0492ee80df8b27b64d95772c7ead40a32 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 1 Apr 2024 23:37:35 +0200
Subject: [PATCH 230/656] bat: linux-grey default text

---
 .config/bat/themes/Catppuccin Mocha.tmTheme | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.config/bat/themes/Catppuccin Mocha.tmTheme b/.config/bat/themes/Catppuccin Mocha.tmTheme
index 364617b..332cc98 100644
--- a/.config/bat/themes/Catppuccin Mocha.tmTheme	
+++ b/.config/bat/themes/Catppuccin Mocha.tmTheme	
@@ -47,7 +47,7 @@
         <key>settings</key>
         <dict>
           <key>foreground</key>
-          <string>#cdd6f4</string>
+          <string>#cccccc</string>
         </dict>
       </dict>
       <dict>
@@ -2018,4 +2018,4 @@
       </dict>
     </array>
   </dict>
-</plist>
\ No newline at end of file
+</plist>

From 6bc7f9e74286f0c98783fb2d12fa7284820b6cd1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 4 Apr 2024 21:48:45 +0200
Subject: [PATCH 231/656] git: use ssh commit signing

---
 .config/git/allowed_signers | 3 +++
 .gitconfig                  | 9 ++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)
 create mode 100644 .config/git/allowed_signers

diff --git a/.config/git/allowed_signers b/.config/git/allowed_signers
new file mode 100644
index 0000000..42c52d6
--- /dev/null
+++ b/.config/git/allowed_signers
@@ -0,0 +1,3 @@
+dln@arity.se sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
+daniel@arity.se sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
+dln@shelman.io sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
diff --git a/.gitconfig b/.gitconfig
index 7c99bef..f6ad666 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -10,6 +10,7 @@ compression = 3
 
 [user]
 useConfigOnly = true
+signingKey = key::sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
 
 [column]
 ui = auto
@@ -126,7 +127,13 @@ diffFilter = delta --color-only --features=interactive
 helper = store
 
 [commit]
-gpgsign = false
+gpgsign = true
+
+[gpg]
+format = ssh
+
+[gpg "ssh"]
+allowedSignersFile = ~/.config/git/allowed_signers
 
 [user]
 name = Daniel Lundin

From eefe6eb9a1794fca66c02ec904ca73d816477e2f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 4 Apr 2024 22:55:35 +0200
Subject: [PATCH 232/656] git: autoselect first -sk ssh key from agent for
 signing

---
 .config/git/signing-key.sh | 3 +++
 .gitconfig                 | 3 ++-
 2 files changed, 5 insertions(+), 1 deletion(-)
 create mode 100755 .config/git/signing-key.sh

diff --git a/.config/git/signing-key.sh b/.config/git/signing-key.sh
new file mode 100755
index 0000000..aed9246
--- /dev/null
+++ b/.config/git/signing-key.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+ssh-add -L | awk '/^sk-ssh/ { print "key::" $1 " " $2 }'
diff --git a/.gitconfig b/.gitconfig
index f6ad666..5bf2e93 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -10,7 +10,7 @@ compression = 3
 
 [user]
 useConfigOnly = true
-signingKey = key::sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
+# signingKey = key::sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
 
 [column]
 ui = auto
@@ -134,6 +134,7 @@ format = ssh
 
 [gpg "ssh"]
 allowedSignersFile = ~/.config/git/allowed_signers
+defaultKeyCommand = /home/dln/.config/git/signing-key.sh
 
 [user]
 name = Daniel Lundin

From 0afb5698dd9938ba6fbfde41e18a9e7f50ad5cb3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 4 Apr 2024 23:10:46 +0200
Subject: [PATCH 233/656] git: clean up .gitconfig

---
 .gitconfig | 32 +-------------------------------
 1 file changed, 1 insertion(+), 31 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index 5bf2e93..3a1dea7 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -10,7 +10,6 @@ compression = 3
 
 [user]
 useConfigOnly = true
-# signingKey = key::sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
 
 [column]
 ui = auto
@@ -50,36 +49,12 @@ copr = "!f() { \
   && git checkout --detach FETCH_HEAD \
   ;};f"
 
-gerrit-clone = "!f() { \
-  git clone ssh://gerrit-ssh.shelman.io:2222/$1 \
-  && (cd $1 && mkdir -p `git rev-parse --git-dir`/hooks/ \
-  && scp -O -P 2222 gerrit-ssh.shelman.io:hooks/commit-msg `git rev-parse --git-dir`/hooks/commit-msg \
-  && chmod +x `git rev-parse --git-dir`/hooks/commit-msg \
-  && git branchless init); }; f"
-
-gerrit-switch = !(ssh `git remote get-url origin | cut -d / -f -3` gerrit query --format=JSON --current-patch-set status:open project:`git remote get-url origin | cut -d / -f 4-` \
-    | jq -sr 'map(select(.number) | \"\\(.number) @ \\(.currentPatchSet.ref) - \\(.subject)\")|join(\"\\n\")' \
-    | fzf +s -d ' ' \
-    | cut -d ' ' -f3 \
-    | xargs -n1 git fetch origin) && git checkout FETCH_HEAD
-
-gerrit-push = !git push origin HEAD:refs/for/main
-gerrit-push-wip = !git push origin HEAD:refs/for/main%wip
-gerrit-push-ready = !git push origin HEAD:refs/for/main%ready
-gerrit-replace = !git branchless amend && git push origin HEAD:refs/for/main
-gerrit-config = !git fetch origin refs/meta/config:refs/remotes/origin/meta/config && git checkout FETCH_HEAD
-gerrit-config-push = !git push origin HEAD:refs/meta/config
-gp = gerrit-push
-gpw = gerrit-push-wip
-gpr = gerrit-push-ready
-
 ll = log --graph --date=relative --topo-order --pretty='format:%C(yellow)%h%C(yellow)%d %Cblue%ar %Cgreenby %an%Creset -- %s'
 lla = log --graph --date=relative --topo-order --pretty='format:%Cgreen%h %Cblue%ar %Credby %an%Creset -- %s' --all
 
 guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"
 serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/
 
-identity = "! git config user.name \"$(git config user.$1.name)\"; git config user.email \"$(git config user.$1.email)\"; git config user.signingkey \"$(git config user.$1.signingkey)\"; :"
 
 [color]
 ui = auto
@@ -157,17 +132,12 @@ concurrenttransfers = 32
 
 [diff]
   tool = difft
-  # external = difft
 
 [difftool]
   prompt = false
 
 [difftool "difft"]
-  cmd = difft --display inline "$LOCAL" "$REMOTE"
-[scalar]
-	repo = /tmp/k2/src
-[maintenance]
-	repo = /tmp/k2/src
+  cmd = difft --color=always --display inline "$LOCAL" "$REMOTE" | bat
 [fetch]
 	showForcedUpdates = true
 [tag]

From 7ad9868c208a8aafd6564dc12182de1c091c8ffc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 5 Apr 2024 20:30:39 +0200
Subject: [PATCH 234/656] tmux: gnome-style app-shortcuts for switching panes

---
 .tmux.conf         | 30 +++++++++++-------------------
 bin/tmux-hx-helper | 45 +++++++++++++++++++++++----------------------
 bin/tmux-shortcut  | 20 ++++++++++++++++++++
 3 files changed, 54 insertions(+), 41 deletions(-)
 create mode 100755 bin/tmux-shortcut

diff --git a/.tmux.conf b/.tmux.conf
index 9432e59..7f504be 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -39,16 +39,17 @@ bind -n M-k copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-
 bind -n M-j copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
 bind -n M-Up select-pane -U
 bind -n M-Down select-pane -D
-bind -n M-1 select-window -t 42
-bind -n M-2 select-window -t 2
-bind -n M-3 select-window -t 3
-bind -n M-4 select-window -t 4
-bind -n M-5 select-window -t 5
-bind -n M-6 select-window -t 6
-bind -n M-7 select-window -t 7
-bind -n M-8 select-window -t 8
-bind -n M-9 select-window -t 9
-bind -n M-0 select-window -t 10
+bind -n M-1 run-shell -b "tmux-shortcut 1 helix"
+bind -n M-2 run-shell -b "tmux-shortcut 2"
+bind -n M-3 run-shell -b "tmux-shortcut 3"
+bind -n M-4 run-shell -b "tmux-shortcut 4"
+bind -n M-5 run-shell -b "tmux-shortcut 5"
+bind -n M-6 run-shell -b "tmux-shortcut 6"
+bind -n M-7 run-shell -b "tmux-shortcut 7"
+bind -n M-8 run-shell -b "tmux-shortcut 8"
+bind -n M-9 run-shell -b "tmux-shortcut 9"
+bind -n M-0 run-shell -b "tmux-shortcut 10"
+
 bind -n M-m send-keys -t 9 q C-u "clear; tmux clear-history -t 9" C-m C-p C-p C-p C-m
 bind C-o send-keys C-o
 bind r source-file ~/.tmux.conf
@@ -85,14 +86,5 @@ set -g set-titles on
 set -g set-titles-string "#H - #T"
 
 new -s0 -n 1
-new-window -n 2
-new-window -n 3
-new-window -n 4
-new-window -n 5
-new-window -n 6
-new-window -n 7
-new-window -n 8
-new-window -n 9
-new-window -n 0
 
 # vim:set ft=tmux:
diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper
index 56bdb95..de73970 100755
--- a/bin/tmux-hx-helper
+++ b/bin/tmux-hx-helper
@@ -18,26 +18,27 @@ fi
 
 fre --store_name "edit-history" --add "$_file"
 
-(tmux select-window -t helix && 
-tmux send-keys -t helix Escape &&
-tmux send-keys -t helix ":open ${_file}" Enter) || tmux new-window -t 42 -n helix \
-	-e "AR=$AR" \
-	-e "AS=$AS" \
-	-e "BUILD_COMMAND=$BUILD_COMMAND" \
-	-e "CC=$CC" \
-	-e "CXX=$CXX" \
-	-e "GOFLAGS=$GOFLAGS" \
-	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
-	-e "LC_ALL=$LC_ALL" \
-	-e "LD=$LD" \
-	-e "NM=$NM" \
-	-e "NM=$NM" \
-	-e "OBJCOPY=$OBJCOPY" \
-	-e "OBJDUMP=$OBJDUMP" \
-	-e "PATH=$PATH" \
-	-e "RANLIB=$RANLIB" \
-	-e "READELF=$READELF" \
-	-e "RUST_SRC_PATH=$RUST_SRC_PATH" \
-	-e "SIZE=$SIZE" \
-	-e "STRIP=$STRIP" \
+tmux-shortcut 1 env \
+	"AR=$AR" \
+	"AS=$AS" \
+	"BUILD_COMMAND=$BUILD_COMMAND" \
+	"CC=$CC" \
+	"CXX=$CXX" \
+	"GOFLAGS=$GOFLAGS" \
+	"GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
+	"LC_ALL=$LC_ALL" \
+	"LD=$LD" \
+	"NM=$NM" \
+	"NM=$NM" \
+	"OBJCOPY=$OBJCOPY" \
+	"OBJDUMP=$OBJDUMP" \
+	"PATH=$PATH" \
+	"RANLIB=$RANLIB" \
+	"READELF=$READELF" \
+	"RUST_SRC_PATH=$RUST_SRC_PATH" \
+	"SIZE=$SIZE" \
+	"STRIP=$STRIP" \
 	helix "${_file}"
+sleep 0.1
+tmux send-keys Escape &&
+	tmux send-keys ":open ${_file}" Enter
diff --git a/bin/tmux-shortcut b/bin/tmux-shortcut
new file mode 100755
index 0000000..536ab54
--- /dev/null
+++ b/bin/tmux-shortcut
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+set -eo pipefail
+
+nr="@app-${1}"
+shift
+
+pane="$(tmux show -vg ${nr} || true)"
+if [[ -n "${pane}" ]] && tmux has-session -t "${pane}" ; then
+  if tmux list-panes -F "#{pane_id}" | grep "^${pane}\$" >>/dev/null ; then
+    # Pane is on this window. Focus it and exit.
+    exec tmux select-pane -t "${pane}"
+  fi
+else
+  # App pane does not exist, so create a new window.
+  pane=$(tmux new-window -d -P -F '#{pane_id}' "$@")
+  tmux set -g "${nr}" "${pane}"
+fi
+
+# Swap active pane for app
+tmux swap-pane -s "${pane}"

From 478d0e33d05348a7e07cb25c991a00552dfba5ea Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 6 Apr 2024 12:03:43 +0200
Subject: [PATCH 235/656] git: clean up config

---
 .gitconfig | 168 +++++++++++++++++++++++++++--------------------------
 1 file changed, 87 insertions(+), 81 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index 3a1dea7..aed0491 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -1,47 +1,22 @@
-[core]
-excludesfile = "~/.gitignore"
-pager = delta
-compression = 3
-looseCompression = 3
-
-[pack]
-threads = 0
-compression = 3
-
-[user]
-useConfigOnly = true
-
-[column]
-ui = auto
-
-[push]
-default = tracking
-
-[branch "main"]
-rebase = true
-
-[branch "master"]
-rebase = true
-
 [alias]
 b = branch -va
 cl = clone --filter=blob:none
+co = checkout
 d = diff --stat -p -C --color-words
-dg = diff --stat -p -C
 ds = diff --staged --stat -p -C --color-words
-sh = show --stat -p -C --color-words
 dt = difftool
 patch = !git --no-pager diff --no-color
-co = checkout
+pullr = pull --rebase --autostash
+sh = show --stat -p -C --color-words
 st = status -sb
-pullr = pull --rebase
 t = tag --sort=-v:refname --format='%(color:bold italic)%(objectname:short)%(color:noitalic) %(refname:short)'
 
+new = !git fetch -u origin main:main && git branchless switch -d origin/main
 sl = branchless smartlog
 sync = branchless sync
 sw = branchless switch
 s = branchless switch -i
-new = !git fetch -u origin main:main && git branchless switch -d origin/main
+
 copr = "!f() { \
   pr=$1 \
   && test -n \"$pr\" || pr=`tea pr list -o simple | fzf --bind 'enter:become(echo {+1})'` \
@@ -55,54 +30,87 @@ lla = log --graph --date=relative --topo-order --pretty='format:%Cgreen%h %Cblue
 guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"
 serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/
 
-
-[color]
-ui = auto
-branch = auto
-diff = auto
-status = auto
-
 [apply]
 whitespace = nowarn
 
 [blame]
 date = relative
 
+[branch "main"]
+rebase = true
+
+[branch "master"]
+rebase = true
+
+[color]
+branch = auto
+diff = auto
+status = auto
+ui = auto
+
+[column]
+ui = auto
+
+[core]
+compression = 3
+excludesfile = "~/.gitignore"
+looseCompression = 3
+pager = delta
+
 [delta]
 ; # syntax-theme = GitHub
-  file-style = bold "#ffff66" "#333300"
-  file-transformation = "s/$/ ══  /"
-  file-decoration-style=none
-  file-added-label =  "   ══"
-  file-modified-label = "   ══"
-  file-removed-label = "   ══"
-  file-renamed-label = "   ══"
-  hunk-header-decoration-style=none
-  ; hunk-header-decoration-style='#99eeff' 
-  hunk-header-file-style = bold "#66ddff"
-  hunk-header-style = line-number bold "#99eeff" "#001133"
-  hunk-header-line-number-style = bold "#66ccff"
-  hunk-label-style = bold "#66ccff"
-  hunk-label = " "
-  line-numbers = true
-  max-line-distance = 0.9
-
-
-
-[hub]
-protocol = git
+file-added-label =  "   ══"
+file-decoration-style=none
+file-modified-label = "   ══"
+file-removed-label = "   ══"
+file-renamed-label = "   ══"
+file-style = bold "#ffff66" "#333300"
+file-transformation = "s/$/ ══  /"
+hunk-header-decoration-style=none
+hunk-header-file-style = bold "#66ddff"
+hunk-header-line-number-style = bold "#66ccff"
+hunk-header-style = line-number bold "#99eeff" "#001133"
+hunk-label = " "
+hunk-label-style = bold "#66ccff"
+line-numbers = true
+max-line-distance = 0.9
 
 [http]
 cookiefile = /home/dln/.gitcookies
 
+[hub]
+protocol = git
+
 [interactive]
 diffFilter = delta --color-only --features=interactive
 
+[commit]
+gpgsign = true
+verbose = true
+
 [credential]
 helper = store
 
-[commit]
-gpgsign = true
+[diff]
+algorithm = histogram
+tool = difft
+
+[difftool]
+prompt = false
+
+[difftool "difft"]
+cmd = difft --color=always --display inline "$LOCAL" "$REMOTE" | bat
+
+[fetch]
+prune = true
+prunetags = true
+showForcedUpdates = true
+
+[filter "lfs"]
+clean = git-lfs clean -- %f
+process = git-lfs filter-process
+required = true
+smudge = git-lfs smudge -- %f
 
 [gpg]
 format = ssh
@@ -111,34 +119,32 @@ format = ssh
 allowedSignersFile = ~/.config/git/allowed_signers
 defaultKeyCommand = /home/dln/.config/git/signing-key.sh
 
-[user]
-name = Daniel Lundin
-email = dln@arity.se
-
 [init]
 defaultBranch = main
 
-; [url "git@github.com:"]
-; 	insteadOf = https://github.com/
-
 [lfs]
 concurrenttransfers = 32
 
-[filter "lfs"]
-	clean = git-lfs clean -- %f
-	smudge = git-lfs smudge -- %f
-	process = git-lfs filter-process
-	required = true
+[merge]
+conflictstyle = zdiff3
 
-[diff]
-  tool = difft
+[pack]
+compression = 3
+threads = 0
 
-[difftool]
-  prompt = false
+[push]
+default = tracking
+
+[rebase]
+autosquash = true
+
+[rerere]
+enabled = true
 
-[difftool "difft"]
-  cmd = difft --color=always --display inline "$LOCAL" "$REMOTE" | bat
-[fetch]
-	showForcedUpdates = true
 [tag]
-	sort = -v:refname
+sort = -v:refname
+
+[user]
+email = dln@arity.se
+name = Daniel Lundin
+useConfigOnly = true

From bce5c26f58ff5ec855955b49e4e94d6e81dfd837 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 6 Apr 2024 23:43:14 +0200
Subject: [PATCH 236/656] git: fancy log

---
 .gitconfig | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index aed0491..12b3341 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -7,7 +7,7 @@ ds = diff --staged --stat -p -C --color-words
 dt = difftool
 patch = !git --no-pager diff --no-color
 pullr = pull --rebase --autostash
-sh = show --stat -p -C --color-words
+sh = show --stat -p -C --color-words --show-signature
 st = status -sb
 t = tag --sort=-v:refname --format='%(color:bold italic)%(objectname:short)%(color:noitalic) %(refname:short)'
 
@@ -24,8 +24,9 @@ copr = "!f() { \
   && git checkout --detach FETCH_HEAD \
   ;};f"
 
-ll = log --graph --date=relative --topo-order --pretty='format:%C(yellow)%h%C(yellow)%d %Cblue%ar %Cgreenby %an%Creset -- %s'
-lla = log --graph --date=relative --topo-order --pretty='format:%Cgreen%h %Cblue%ar %Credby %an%Creset -- %s' --all
+g = graph -S -m simple -s round
+ll = "log --first-parent --topo-order --pretty='format:%x1B[1;2;3;38:2:127:114:88m%h%x1B[38:2:154:234:255m%d%Creset %x1B[3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
+lla = "log --graph --all --topo-order --pretty='format:%x1B[38:2:233:218:190m%h%x1B[38:2:154:234:255m%d%Creset %x1B[1;3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
 
 guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"
 serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/

From 36a8248ef3bd82d24e86e3aa8e48be8dfffa4f12 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 10 Apr 2024 17:35:03 +0200
Subject: [PATCH 237/656] tmux: revert back to window-switching for simplicity
 and speed

---
 .tmux.conf | 37 +++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/.tmux.conf b/.tmux.conf
index 7f504be..289499c 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -39,16 +39,16 @@ bind -n M-k copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-
 bind -n M-j copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
 bind -n M-Up select-pane -U
 bind -n M-Down select-pane -D
-bind -n M-1 run-shell -b "tmux-shortcut 1 helix"
-bind -n M-2 run-shell -b "tmux-shortcut 2"
-bind -n M-3 run-shell -b "tmux-shortcut 3"
-bind -n M-4 run-shell -b "tmux-shortcut 4"
-bind -n M-5 run-shell -b "tmux-shortcut 5"
-bind -n M-6 run-shell -b "tmux-shortcut 6"
-bind -n M-7 run-shell -b "tmux-shortcut 7"
-bind -n M-8 run-shell -b "tmux-shortcut 8"
-bind -n M-9 run-shell -b "tmux-shortcut 9"
-bind -n M-0 run-shell -b "tmux-shortcut 10"
+bind -n M-1 select-window -t 42
+bind -n M-2 select-window -t 2
+bind -n M-3 select-window -t 3
+bind -n M-4 select-window -t 4
+bind -n M-5 select-window -t 5
+bind -n M-6 select-window -t 6
+bind -n M-7 select-window -t 7
+bind -n M-8 select-window -t 8
+bind -n M-9 select-window -t 9
+bind -n M-0 select-window -t 10
 
 bind -n M-m send-keys -t 9 q C-u "clear; tmux clear-history -t 9" C-m C-p C-p C-p C-m
 bind C-o send-keys C-o
@@ -64,10 +64,10 @@ bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-d
 bind-key / copy-mode \; send-key ?
 bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
 bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
-bind -n M-g display-popup -h '95%' -w '95%' -b rounded -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "gitui"
-bind -n M-e display-popup -h '95%' -w '95%' -y 0 -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
-bind -n M-h display-popup -h '95%' -w '95%' -y 0 -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -e FZF=fzf -E "~/bin/tmux-edit-history"
-bind -n M-m display-popup -h '95%' -w '95%' -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{?pane_path,#{pane_path},#{pane_current_path}}' -E "~/bin/tmux-build-helper"
+bind -n M-g display-popup -h '95%' -w '95%' -b rounded -d '#{pane_current_path}' -E "gitui"
+bind -n M-e display-popup -h '95%' -w '95%' -y 0 -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{pane_current_path}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
+bind -n M-h display-popup -h '95%' -w '95%' -y 0 -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{pane_current_path}' -e FZF=fzf -E "~/bin/tmux-edit-history"
+bind -n M-m display-popup -h '95%' -w '95%' -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{pane_current_path}' -E "~/bin/tmux-build-helper"
 
 
 setw -g window-status-format ""
@@ -86,5 +86,14 @@ set -g set-titles on
 set -g set-titles-string "#H - #T"
 
 new -s0 -n 1
+new-window -n 2
+new-window -n 3
+new-window -n 4
+new-window -n 5
+new-window -n 6
+new-window -n 7
+new-window -n 8
+new-window -n 9
+new-window -n 0
 
 # vim:set ft=tmux:

From 1b9788a00073b0ab60f3b3f264d5ece4e7f1693a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 10 Apr 2024 17:35:43 +0200
Subject: [PATCH 238/656] switch back to nvim for now

---
 .config/fish/config.fish | 2 +-
 bin/tmux-edit-helper     | 2 +-
 bin/tmux-hx-helper       | 2 +-
 bin/tmux-nvim-helper     | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index a915c48..1a8d08d 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -25,7 +25,7 @@ if status is-interactive
 
     ## Utilities
 
-    export EDITOR=helix
+    export EDITOR=nvim
 
     function tree
         eza --tree --color=always $argv | bat --wrap=never
diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper
index 90b21a9..cdf7994 120000
--- a/bin/tmux-edit-helper
+++ b/bin/tmux-edit-helper
@@ -1 +1 @@
-tmux-hx-helper
\ No newline at end of file
+tmux-nvim-helper
\ No newline at end of file
diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper
index de73970..633150e 100755
--- a/bin/tmux-hx-helper
+++ b/bin/tmux-hx-helper
@@ -41,4 +41,4 @@ tmux-shortcut 1 env \
 	helix "${_file}"
 sleep 0.1
 tmux send-keys Escape &&
-	tmux send-keys ":open ${_file}" Enter
+	tmux send-keys ":open ${_file}" Enter ":reload" Enter
diff --git a/bin/tmux-nvim-helper b/bin/tmux-nvim-helper
index 4b35744..9115fad 100755
--- a/bin/tmux-nvim-helper
+++ b/bin/tmux-nvim-helper
@@ -23,7 +23,7 @@ _nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
 (tmux select-window -t nvim 2>/dev/null && tmux select-pane -t 0) && exec nvim --server "$_nvim_socket" --remote "$_file"
 
 # nvim is not running/listening on remote socket, so start it.
-tmux new-window -S -t 43 -n nvim \
+tmux new-window -S -t 42 -n nvim \
 	-e "AR=$AR" \
 	-e "AS=$AS" \
 	-e "BUILD_COMMAND=$BUILD_COMMAND" \

From f3aa4836284eb00c1a683c1f55260a617b263a88 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 10 Apr 2024 17:36:06 +0200
Subject: [PATCH 239/656] git: fancy log alias ll formatting

---
 .gitconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitconfig b/.gitconfig
index 12b3341..ac6ab3d 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -25,7 +25,7 @@ copr = "!f() { \
   ;};f"
 
 g = graph -S -m simple -s round
-ll = "log --first-parent --topo-order --pretty='format:%x1B[1;2;3;38:2:127:114:88m%h%x1B[38:2:154:234:255m%d%Creset %x1B[3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
+ll = "log --first-parent --topo-order --pretty='format:%Creset%x1B[1;3;38:2:127:114:88m%h %G? ┼%x1B[0;38:2:154:234:255m%d%Creset %x1B[3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁᠁᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
 lla = "log --graph --all --topo-order --pretty='format:%x1B[38:2:233:218:190m%h%x1B[38:2:154:234:255m%d%Creset %x1B[1;3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
 
 guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"

From 1fd76dd0f3dfb6b2b422f09ee9f4f1174ef8d9e4 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 10 Apr 2024 17:36:44 +0200
Subject: [PATCH 240/656] helix: styling

---
 .config/helix/config.toml        |  27 +++-
 .config/helix/themes/sumi-e.toml | 245 +++++++++++++++----------------
 2 files changed, 148 insertions(+), 124 deletions(-)

diff --git a/.config/helix/config.toml b/.config/helix/config.toml
index a239198..99d8310 100644
--- a/.config/helix/config.toml
+++ b/.config/helix/config.toml
@@ -7,6 +7,8 @@ cursorline = true
 color-modes = true
 auto-pairs = false 
 popup-border = "all"
+rulers = [80]
+gutters = ["diagnostics", "line-numbers", "spacer", "diff", "spacer"]
 
 [editor.cursor-shape]
 insert = "bar"
@@ -16,11 +18,34 @@ select = "underline"
 [editor.indent-guides]
 character = "│" # "╎"
 render = true
+skip-levels = 1
+
+[editor.statusline]
+separator = "│"
+mode.normal = "  "
+mode.insert = " "
+mode.select = "󰒅 "
+left = ["spinner", "mode", "diagnostics"]
+center = ["file-name", "file-encoding"]
+right = ["version-control", "separator", "selections", "register", "separator", "position"]
 
 [editor.lsp]
 display-inlay-hints = true
+display-messages = true
 
 [keys.normal]
+backspace = "delete_char_backward"
+C-h = "delete_char_backward"
+C = ["select_mode", "goto_line_end", "normal_mode", "change_selection_noyank"]
 H = ":toggle lsp.display-inlay-hints"
 Z = { Z = ":write-quit-all" }
-"esc" = ["keep_primary_selection", "collapse_selection"]
+esc = ["keep_primary_selection", "collapse_selection"]
+"`" = ["goto_last_accessed_file"]
+tab = ["buffer_picker"]
+C-r = ":config-reload"
+C-f = [":new", ":insert-output lf -selection-path=/dev/stdout", "split_selection_on_newline", "goto_file", "goto_last_modification", "goto_last_modified_file", ":buffer-close!", ":redraw"]
+V = ["goto_first_nonwhitespace", "extend_to_line_end"]
+x = "extend_line"
+
+[keys.select]
+x = "extend_line"
diff --git a/.config/helix/themes/sumi-e.toml b/.config/helix/themes/sumi-e.toml
index b643f8b..d7a73c7 100644
--- a/.config/helix/themes/sumi-e.toml
+++ b/.config/helix/themes/sumi-e.toml
@@ -1,192 +1,191 @@
-# Template document for helix color schemes
-# See also: https://docs.helix-editor.com/themes.html
-#
-# NOTE: Keys default to the most specific parent value.
-#       e.g ui.cursor.primary > ui.cursor > ui
 
 # GENERAL ==============================
 
-warning = { fg = "#ff7700" } # Editor warnings.
-error = { fg = "#ff0038" } # Editor errors, like mis-typing a command.
-info = { fg = "#00d992" } # Contextual info in diagnostic messages (LSP).
-hint = { } # Code diagnostics hints (LSP).
-diagnostic = { fg = "#c49848"} # Code diagnostics in editing area (LSP).
-"diagnostic.hint" = { underline = { color = "silver", style = "curl" } }
-"diagnostic.info" = { underline = { color = "delta", style = "curl" } }
-"diagnostic.warning" = { underline = { color = "lightning", style = "curl" } }
-"diagnostic.error" = { underline = { color = "apricot", style = "curl" } }
-"diagnostic.unnecessary" = { modifiers = ["dim"] }
+warning = { fg = "#ff7700", bg = "#221100", modifierd = [ "italic" ] }
+error = { fg = "#ff0038", bg = "#220000", modifiers = [ "italic" ] }
+hint = { fg = "#00d992", bg = "#002211", modifierd = [ "italic" ]  }
+info = { fg = "#ffcc00", bg = "#222200", modifiers = ["italic"] }
+diagnostic = { fg = "#c49848"}
+"diagnostic.info" = { underline = { color = "#ffcc00", style = "curl" } }
+"diagnostic.hint" = { fg = "#00d992", underline = { color = "#00d992", style = "curl" } }
+"diagnostic.warning" = { fg = "#ff7700", underline = { color = "#ff7700", style = "curl" } }
+"diagnostic.error" = { fg = "#ff0038", underline = { color = "#ff0038", style = "curl" } }
+"diagnostic.unnecessary" = { fg = "#ffcc00", modifiers = ["dim", "italic"], underline = { style = "curl" } }
 "diagnostic.deprecated" = { modifiers = ["crossed_out"] }
 
 
 # UI ==============================
 # For styling helix itself.
 
-'ui.background' = { bg="background" } # Default background color.
+'ui.background' = { bg="background" }
 'ui.background.separator' = { fg="#00a171" } 
-'ui.window' = { bg="#224466" } # Window border between splits.
-'ui.gutter' = { } # Left gutter for diagnostics and breakpoints.
+'ui.window' = { bg="#224466" }
+'ui.gutter' = { bg="#11171d" }
 
-'ui.text' = { fg = "#e3e0cd" } # Default text color.
-'ui.text.focus' = { bg = "#294467" } # Selection highlight in buffer-picker or file-picker.
-'ui.text.info' = { } # Info popup contents (space mode menu).
+'ui.text' = { fg = "#cccccc" }
+'ui.text.focus' = { bg = "#294467" }
+'ui.text.info' = { }
 
-'ui.cursor' = { bg = "#00a171", fg = "#000000" } # Fallback cursor colour, non-primary cursors when there are multiple (shift-c).
-'ui.cursor.primary' = { bg ="#23fdb6", fg = "#000000" } # The primary cursor when there are multiple (shift-c).
-'ui.cursor.insert' = { fg = "#ff0000" } # The cursor in insert mode (i).
-'ui.cursor.select' = { } # The cursor in select mode (v).
-'ui.cursor.match' = { } # The matching parentheses of that under the cursor.
+'ui.cursor' = { bg = "#00a171", fg = "#000000" }
+'ui.cursor.primary' = { bg ="#23fdb6", fg = "#000000" }
+'ui.cursor.insert' = { fg = "#ff0000" }
+'ui.cursor.select' = { fg = "#3399ff" }
+'ui.cursor.match' = { fg = "#000000", bg = "#ffd54f" }
 'ui.cursorline.primary' = { bg = "#141b23" }
 
-'ui.selection' = { bg = "#294467" } # All currently selected text.
-'ui.selection.primary' = { bg = "#294467" } # The primary selection when there are multiple.
+'ui.selection' = { bg = "#294467" }
+'ui.selection.primary' = { bg = "#294467" }
 
-'ui.linenr' = { fg = "#374351" } # Line numbers.
-'ui.linenr.selected' = { fg = "#617d9d", bg = "#14202e" } # Current line number.
+'ui.linenr' = { fg = "#374351", modifiers = [ "bold", "italic" ] }
+'ui.linenr.selected' = { fg = "#617d9d", bg = "#14202e" }
 
-'ui.virtual' = {  } # Namespace for additions to the editing area.
+'ui.virtual' = {  }
 "ui.virtual.indent-guide" = { fg = "#273341" }
-"ui.virtual.inlay-hint" = { fg = "#51a0cf", modifiers = ["italic"] }
-'ui.virtual.ruler' = { } # Vertical rulers (colored columns in editing area).
-'ui.virtual.whitespace' = { } # Whitespace markers in editing area.
+"ui.virtual.inlay-hint" = { fg = "#51a0cf", modifiers = ["italic", "bold"] }
+'ui.virtual.ruler' = { bg = "#11171d" }
+'ui.virtual.whitespace' = { }
+'ui.virtual.wrap' = { fg = "#ffd54f" }
+"ui.virtual.jump-label" = { fg = "#96ffe6", bg = "#051e33", modifiers = ["bold", "italic"] }
 
-'ui.statusline' = { bg = "#151920", fg = "#4d5a6c" } # Status line.
-'ui.statusline.inactive' = { } # Status line in unfocused windows.
-"ui.statusline.normal" = { } # Statusline mode during normal mode (only if editor.color-modes is enabled)
-"ui.statusline.insert" = { fg = "#b99912" } # Statusline mode during insert mode (only if editor.color-modes is enabled)
-"ui.statusline.select" = { } # Statusline mode during select mode (only if editor.color-modes is enabled)
+# 'ui.statusline' = { bg = "#151920", fg = "#4d5a6c" }
+'ui.statusline' = { bg = "#11171d", fg = "#637184", modifiers = ["italic", "bold"] }
+'ui.statusline.inactive' = { }
+"ui.statusline.normal" = { }
+"ui.statusline.insert" = { fg = "#d7b640" }
+"ui.statusline.select" = { fg = "#3dc9ff" }
 
-'ui.help' = { } # `:command` descriptions above the command line.
+'ui.help' = { }
 
-'ui.highlight' = { } # selected contents of symbol pickers (spc-s, spc-S) and current line in buffer picker (spc-b).
+'ui.highlight' = { bg="#224466" }
 "ui.highlight.frameline" = { }
 
-'ui.menu' = { bg = "#242d38", fg="#bfd5e2" } # Autocomplete menu.
-'ui.menu.selected' = { bg = "#135d7e" } # Selected autocomplete item.
+'ui.menu' = { bg = "#242d38", fg="#bfd5e2" }
+'ui.menu.selected' = { bg = "#135d7e" }
 
-'ui.popup' = { bg = "#253d6b", fg="#b2c6e9" } # Documentation popups (space-k).
-'ui.popup.info' = { } # Info popups box (space mode menu).
+'ui.popup' = { bg = "#253d6b", fg="#b2c6e9" }
+'ui.popup.info' = { }
 
 
 # SYNTAX HIGHLIGHTING ==============================
 # All the keys here are Treesitter scopes.
 
-'property' = { } # Regex group names.
-'special' = { fg="#ffecd3" } # Special symbols e.g `?` in Rust, `...` in Hare.
-'attribute' = { } # Class attributes, html tag attributes.
+'property' = { }
+'special' = { fg="#ffecd3" }
+'attribute' = { }
 
-'type' = { } # Variable type, like integer or string, including program defined classes, structs etc..
-'type.builtin' = { } # Primitive types of the language (string, int, float).
-'type.enum.variant' = { } # A variant of an enum.
+'type' = { }
+'type.builtin' = { }
+'type.enum.variant' = { }
 
-'constructor' = { } # Constructor method for a class or struct.
+'constructor' = { }
 
-'constant' = { } # Constant value
-'constant.builtin' = { } # Special constants like `true`, `false`, `none`, etc.
-'constant.builtin.boolean' = { } # True or False.
-'constant.character' = { } # Constant of character type.
-'constant.character.escape' = { } # escape codes like \n.
-'constant.numeric'  = { } # constant integer or float value.
-'constant.numeric.integer' = { } # constant integer value.
-'constant.numeric.float' = { } # constant float value.
+'constant' = { }
+'constant.builtin' = { }
+'constant.builtin.boolean' = { }
+'constant.character' = { }
+'constant.character.escape' = { }
+'constant.numeric'  = { }
+'constant.numeric.integer' = { }
+'constant.numeric.float' = { }
 
-'string' = { fg="#88ab8a", modifiers=["italic"] } # String literal.
-'string.regexp' = { } # Regular expression literal.
-'string.special' = { } # Strings containing a path, URL, etc.
-'string.special.path' = { } # String containing a file path.
-'string.special.url' = { } # String containing a web URL.
-'string.special.symbol' = { } # Erlang/Elixir atoms, Ruby symbols, Clojure keywords.
+'string' = { fg="#88ab8a", modifiers=["italic"] }
+'string.regexp' = { }
+'string.special' = { }
+'string.special.path' = { }
+'string.special.url' = { }
+'string.special.symbol' = { }
 
-'comment' = { fg = "#e57373", modifiers = ["bold", "italic"] } # This is a comment.
-'comment.line' = { } # Line comments, like this.
-'comment.block' = { } # Block comments, like /* this */ in some languages.
-'comment.block.documentation' = { } # Doc comments, e.g '///' in rust.
+'comment' = { fg = "#e57373", modifiers = ["bold", "italic"] }
+'comment.line' = { }
+'comment.block' = { }
+'comment.block.documentation' = { }
 
-'variable' = { fg="#eceff1" } # Variable names.
-'variable.builtin' = { } # Language reserved variables: `this`, `self`, `super`, etc.
-'variable.parameter' = { } # Function parameters.
-'variable.other.member' = { } # Fields of composite data types (e.g. structs, unions).
+'variable' = { fg="#999999", modifiers = [ "italic" ] }
+# 'variable.builtin' = { }
+'variable.parameter' = { fg = "#eeccaa", modifiers = [ "italic" ] }
+# 'variable.other.member' = { }
 
-'label' = { } # Loop labels, among other things.
+'label' = { }
 
-'punctuation' = { } # Any punctuation symbol.
-'punctuation.delimiter' = { fg = "#999999" } # Commas, colons or other delimiter depending on the language.
-'punctuation.bracket' = { } # Parentheses, angle brackets, etc.
+'punctuation' = { fg = "#b0bec5" }
+'punctuation.delimiter' = { fg = "#b0bec5" }
+'punctuation.bracket' = { fg = "#b0bec5" }
 
-'keyword' = { } # Language reserved keywords.
-'keyword.control' = { } # Control keywords.
-'keyword.control.conditional' = { } # `if`, `else`, `elif`.
-'keyword.control.repeat' = { } # `for`, `while`, `loop`.
-'keyword.control.import' = { } # `import`, `export` `use`.
-'keyword.control.return' = { } # `return` in most languages.
-'keyword.control.exception' = { } # `try`, `catch`, `raise`/`throw` and related.
-'keyword.operator' = { } # `or`, `and`, `in`.
-'keyword.directive' = { } # Preprocessor directives (#if in C...).
-'keyword.function' = { } # The keyword to define a function: 'def', 'fun', 'fn'.
+'keyword' = { fg = "#d5d5d5" }
+# 'keyword.control' = { }
+# 'keyword.control.conditional' = { }
+# 'keyword.control.repeat' = { }
+# 'keyword.control.import' = { }
+# 'keyword.control.return' = { }
+# 'keyword.control.exception' = { }
+# 'keyword.operator' = { }
+# 'keyword.directive' = { }
+# 'keyword.function' = { }
 
-'operator' = { } # Logical, mathematical, and other operators.
+'operator' = { }
 
-'function' = { fg = "#f7f7f7" } #, modifiers = [ "bold" ] }
+'function' = { fg = "#f7f7f7" }
 'function.builtin' = { }
-'function.method' = { } # Cla"ss / Struct methods.
+'function.method' = { }
 'function.macro' = { }
-'function.special' = { } # Preprocessor function in C.
+'function.special' = { }
 
-'tag' = { } # As in <body> for html, css tags.
-'tag.error' = { } # Erroneous closing html tags.
+'tag' = { }
+'tag.error' = { }
 
-'namespace' = { } # Namespace or module identifier.
+'namespace' = { fg = "#b0bec5" }
 
 
 # Markup ==============================
 # Colors for markup languages, like Markdown or XML.
 
-'markup.heading.1' = { } # Markdown heading 1 color.
-'markup.heading.2' = { } # Markdown heading 2 color.
-'markup.heading.3' = { } # Markdown heading 3 color.
-'markup.heading.4' = { } # Markdown heading 4 color.
-'markup.heading.5' = { } # Markdown heading 5 color.
-'markup.heading.6' = { } # Markdown heading 6 color.
-'markup.heading.marker' = { } # Hashtag color on Markdown headings.
+'markup.heading.1' = { }
+'markup.heading.2' = { }
+'markup.heading.3' = { }
+'markup.heading.4' = { }
+'markup.heading.5' = { }
+'markup.heading.6' = { }
+'markup.heading.marker' = { }
 
 'markup.list' = { }
-'markup.list.numbered' = { } # Numbered list.
-'markup.list.unnumbered' = { } # Bullet point list.
+'markup.list.numbered' = { }
+'markup.list.unnumbered' = { }
 
-'markup.bold' = { } # Bold text.
-'markup.italic' = { } # Italicised text.
+'markup.bold' = { }
+'markup.italic' = { }
 
 'markup.link' = { }
-'markup.link.url' = { } # Urls pointed to by links.
-'markup.link.label' = { } # Non-URL link references.
-'markup.link.text' = { } # URL and image descriptions in links.
+'markup.link.url' = { }
+'markup.link.label' = { }
+'markup.link.text' = { }
 
-'markup.quote' = { } # `> Quotes` in Markdown.
+'markup.quote' = { }
 
 
 # Markup - Interface ==============================
 # "These scopes are used for theming the editor interface."
 
 'markup.normal' = { }
-'markup.normal.completion' = { } # For completion doc popup ui.
-'markup.normal.raw' = { } # For hover popup ui.
+'markup.normal.completion' = { }
+'markup.normal.raw' = { }
 
-'markup.heading.completion' = { } # Headings for completion doc popup ui.
-'markup.heading.raw' = { } # Headings for hover popup ui.
+'markup.heading.completion' = { }
+'markup.heading.raw' = { }
 
-'markup.raw' = { } # Code block in Markdown.
-'markup.raw.block' = { } # Multiline (```) codeblock in Markdown.
-'markup.raw.inline' = { } # `Inline code block` in Markdown.
-'markup.raw.inline.completion' = { } # ?
-'markup.raw.inline.hover' = { } # ?
+'markup.raw' = { }
+'markup.raw.block' = { }
+'markup.raw.inline' = { }
+'markup.raw.inline.completion' = { }
+'markup.raw.inline.hover' = { }
 
 # Diff ==============================
 # Version control changes.
 
-'diff.plus' = { fg = "#469e58" } # Additions.
-'diff.minus' = { fg = "#ff0038" } # Deletions.
-'diff.delta' = { fg = "#3caba4" } # Modifications.
-'diff.delta.moved' = { } # Renamed or moved files.
+'diff.plus' = { fg = "#678350" }
+'diff.minus' = { fg = "#ff0038" }
+'diff.delta' = { fg = "#897a21" }
+'diff.delta.gutter' = { fg = "#ffff00" }
+# 'diff.delta.moved' = { }
 
 
 [palette] # Define your custom colors here.

From 291ea5c46af6e67b5104d0a435863a5f680ea26f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 10 Apr 2024 17:43:53 +0200
Subject: [PATCH 241/656] atuin: session filter for up key

---
 .config/atuin/config.toml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml
index ecfbfb3..0768eb6 100644
--- a/.config/atuin/config.toml
+++ b/.config/atuin/config.toml
@@ -54,6 +54,7 @@
 ## the accepted values are identical to those of "filter_mode"
 ## leave unspecified to use same mode set in "filter_mode"
 # filter_mode_shell_up_key_binding = "global"
+filter_mode_shell_up_key_binding = "session"
 
 ## which search mode to use when atuin is invoked from a shell up-key binding
 ## the accepted values are identical to those of "search_mode"

From c2d0cbe641ee17fdb721cc351ad4365bfe7a44c7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 10 Apr 2024 17:44:41 +0200
Subject: [PATCH 242/656] nvim: bring over key bind from helix

---
 .config/nvim/lua/config/keymaps.lua | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
index f99684e..944e633 100644
--- a/.config/nvim/lua/config/keymaps.lua
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -7,3 +7,5 @@ vim.api.nvim_del_keymap("n", "<c-_>")
 vim.api.nvim_set_keymap("n", "<c-_>", "gcc", {})
 vim.api.nvim_set_keymap("v", "<c-_>", "gc", {})
 vim.api.nvim_set_keymap("n", "<Leader><c-_>", "gcgc", {})
+
+vim.api.nvim_set_keymap("n", "<Tab>", "<Space>,", {})

From 94791633d6acc479c2d125fd7bd7080a824c8e0d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 10 Apr 2024 17:50:33 +0200
Subject: [PATCH 243/656] nvim: give codeium a whirl

---
 .config/nvim/lazy-lock.json          | 50 ++++++++++++++--------------
 .config/nvim/lua/config/lazy.lua     |  3 +-
 .config/nvim/lua/plugins/copilot.lua | 40 ----------------------
 .config/nvim/lua/plugins/extras.lua  | 10 ++++++
 4 files changed, 37 insertions(+), 66 deletions(-)
 delete mode 100644 .config/nvim/lua/plugins/copilot.lua

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 783ae74..0409583 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,66 +1,66 @@
 {
   "LazyVim": { "branch": "main", "commit": "5646ee5191da244ff8ea57b9dba8a7e0d1dbdd42" },
-  "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "4ce271f0db8b5224b4d69a43a75c13f5b4dcba43" },
-  "alabaster.nvim": { "branch": "main", "commit": "ab61b9d3b7398e6c8ebd5207f609c24ebb37ebeb" },
-  "catppuccin": { "branch": "main", "commit": "aebe43db9cb26e1c70fc5b2fd4158169c405e720" },
+  "LuaSnip": { "branch": "master", "commit": "be7be2ca7f55bb881a7ffc16b2efa5af034ab06b" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "c5d5abc86910fb31b9f734cae2547322e81d3a26" },
+  "alabaster.nvim": { "branch": "main", "commit": "ff1a9e07718506e45b94b2088366c5a8ab1ee1ea" },
+  "catppuccin": { "branch": "main", "commit": "02bdd749931a5d739063562e57531c118e081882" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
+  "codeium.nvim": { "branch": "main", "commit": "a070f57c0f54bd940436b94c8b679bcad5a48811" },
   "colorbuddy.nvim": { "branch": "master", "commit": "9e96ccd88f4510d0a54ce1d5c11119eac9fb217e" },
   "conform.nvim": { "branch": "master", "commit": "9d5ba06d6ee7418c674f498634617416d15b6239" },
-  "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" },
-  "copilot.lua": { "branch": "master", "commit": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6" },
-  "crates.nvim": { "branch": "main", "commit": "b4f4987ccdb1cc3899ee541ef4375c73c48c4570" },
-  "dashboard-nvim": { "branch": "master", "commit": "39f308a0b845b8da46f83c8a2d69f0191d4b7a8f" },
+  "crates.nvim": { "branch": "main", "commit": "e8fa8ec62ded43c3b06bca7ef36be26b924681bb" },
+  "dashboard-nvim": { "branch": "master", "commit": "681300934baf36f6184ca41f0b26aed22056d4ee" },
   "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
-  "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
-  "gitsigns.nvim": { "branch": "main", "commit": "70584ff9aae8078b64430c574079d79620b8f06d" },
+  "friendly-snippets": { "branch": "main", "commit": "ea068f1becd91bcd4591fceb6420d4335e2e14d3" },
+  "gitsigns.nvim": { "branch": "main", "commit": "1a50b94066def8591d5f65bd60a4233902e9def4" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
-  "incline.nvim": { "branch": "main", "commit": "a03020c920a55b75d82ac54c9da18cbf52e8c4d8" },
+  "incline.nvim": { "branch": "main", "commit": "385e541b9a13bcc6cd387501fb9d9af86fb3173e" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
   "lazy.nvim": { "branch": "main", "commit": "bef521ac89c8d423f9d092e37b58e8af0c099309" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "9dfcf2036c223920826140f0151d929a43f9eceb" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "44509689b9bf3984d729cc264aacb31cb7f41668" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" },
   "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
   "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
-  "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" },
+  "mini.comment": { "branch": "main", "commit": "5707e22dd38f7b0d0ea7b273a43948fe203ff3a4" },
   "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
   "mini.surround": { "branch": "main", "commit": "49e0364b8c9a3258b485c5ece40bb0f3a5e94b1c" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "16d1b194376bf1fc2acd89ccb3c29ba8315bfcea" },
-  "neoconf.nvim": { "branch": "main", "commit": "ef304c29977b85c99382fcba821b3f710e144a74" },
+  "neocodeium": { "branch": "main", "commit": "4395b6f01e565bd332433a5867882fb6ec725c24" },
+  "neoconf.nvim": { "branch": "main", "commit": "9d61ff423ae5f179ace1823300c4873f38a7c418" },
   "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
   "noice.nvim": { "branch": "main", "commit": "0cbe3f88d038320bdbda3c4c5c95f43a13c3aa12" },
-  "none-ls.nvim": { "branch": "main", "commit": "18910d09d21d7df339805343bfe4a2b2e41c057b" },
+  "none-ls.nvim": { "branch": "main", "commit": "dca7ddec321a102ec9e792b1b29193702aff5fbb" },
   "nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" },
-  "nvim-cmp": { "branch": "main", "commit": "7aa3f71932c419d716290e132cacbafbaf5bea1c" },
+  "nvim-cmp": { "branch": "main", "commit": "ce16de5665c766f39c271705b17fff06f7bcb84f" },
   "nvim-dap": { "branch": "master", "commit": "405df1dcc2e395ab5173a9c3d00e03942c023074" },
   "nvim-dap-go": { "branch": "main", "commit": "36abe1d320cb61bfdf094d4e0fe815ef58f2302a" },
   "nvim-dap-ui": { "branch": "master", "commit": "edfa93f60b189e5952c016eee262d0685d838450" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "baa5b0dc6663284cce32e0d00ac1f2511b13496f" },
-  "nvim-lint": { "branch": "master", "commit": "2669aabb8362fdc36aced5ba864b7135636ea863" },
-  "nvim-lspconfig": { "branch": "master", "commit": "f4619ab31fc4676001ea05ae8200846e6e7700c7" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "3e8e207513e6ef520894950acd76b79902714103" },
+  "nvim-lint": { "branch": "master", "commit": "4055dc856d5ac8f6b85748006fd8fa6457e086e8" },
+  "nvim-lspconfig": { "branch": "master", "commit": "e25c4cdecd3d58c0deccce0f372426c8c480bcce" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
-  "nvim-nio": { "branch": "master", "commit": "33c62b3eadd8154169e42144de16ba4db6784bec" },
+  "nvim-nio": { "branch": "master", "commit": "5800f585def265d52f1d8848133217c800bcb25d" },
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "2b012554a2536465243c0dff3605b5927c49ed23" },
-  "nvim-treesitter": { "branch": "master", "commit": "6e0b031ebb212e7082bc3007f8b9614cb393465c" },
+  "nvim-treesitter": { "branch": "master", "commit": "2bad828b48aed74efe8f7e4ea15550e18c7b482d" },
   "nvim-treesitter-context": { "branch": "master", "commit": "f19766163c18515fb4d3c12d572bf9cba6cdb990" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "2aa454e4037424c678a8ff033951a5be39e54b9c" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "734ebad31c81c6198dfe102aa23280937c937c42" },
-  "nvim-web-devicons": { "branch": "master", "commit": "3ee60deaa539360518eaab93a6c701fe9f4d82ef" },
+  "nvim-web-devicons": { "branch": "master", "commit": "6e355632387a085f15a66ad68cf681c1d7374a04" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" },
-  "rustaceanvim": { "branch": "master", "commit": "b1433cb70569b888d26a26232da93fdbc76cb4a8" },
+  "rustaceanvim": { "branch": "master", "commit": "e2dbf91daed26d4dd7263affbecbf9a36e0096e5" },
   "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "1bb28df3cfc241b961331f00dcb8d5b45fe3e4f0" },
+  "telescope.nvim": { "branch": "master", "commit": "5a701e99906961218b55d7ad6c2a998f066c6fe0" },
   "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
   "tokyonight.nvim": { "branch": "main", "commit": "9bf9ec53d5e87b025e2404069b71e7ebdc3a13e5" },
   "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" },
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index ff1e9c0..283aeab 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -12,7 +12,8 @@ require("lazy").setup({
 		{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
 		-- import any extras modules here
 		-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
-		{ import = "lazyvim.plugins.extras.coding.copilot" },
+		-- { import = "lazyvim.plugins.extras.coding.copilot" },
+		{ import = "lazyvim.plugins.extras.coding.codeium" },
 		{ import = "lazyvim.plugins.extras.coding.yanky" },
 		{ import = "lazyvim.plugins.extras.formatting.prettier" },
 		{ import = "lazyvim.plugins.extras.lang.go" },
diff --git a/.config/nvim/lua/plugins/copilot.lua b/.config/nvim/lua/plugins/copilot.lua
deleted file mode 100644
index 2e8f8aa..0000000
--- a/.config/nvim/lua/plugins/copilot.lua
+++ /dev/null
@@ -1,40 +0,0 @@
-return {
-  "zbirenbaum/copilot.lua",
-  opts = {
-    panel = {
-      enabled = true,
-      auto_refresh = false,
-      keymap = {
-        jump_prev = "[[",
-        jump_next = "]]",
-        accept = "<CR>",
-        refresh = "gr",
-        open = "<M-CR>",
-      },
-    },
-    suggestion = {
-      enabled = true,
-      auto_trigger = true,
-      debounce = 75,
-      keymap = {
-        accept = "<C-j>",
-        next = "<M-]>",
-        prev = "<M-[>",
-        dismiss = "<C-]>",
-      },
-    },
-    filetypes = {
-      yaml = false,
-      markdown = false,
-      help = false,
-      gitcommit = false,
-      gitrebase = false,
-      hgcommit = false,
-      svn = false,
-      cvs = false,
-      ["."] = false,
-    },
-    copilot_node_command = "node", -- Node version must be < 18
-    server_opts_overrides = {},
-  },
-}
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 50f0128..e1e530c 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -58,4 +58,14 @@ return {
 			},
 		},
 	},
+
+	{
+		"monkoose/neocodeium",
+		event = "VeryLazy",
+		config = function()
+			local neocodeium = require("neocodeium")
+			neocodeium.setup()
+			vim.keymap.set("i", "<C-j>", neocodeium.accept)
+		end,
+	},
 }

From e10e8993eacc8a63bad1d895fa03cbbeee4f3491 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 9 May 2024 11:16:28 +0200
Subject: [PATCH 244/656] git: unicode fixings

---
 .gitconfig | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index ac6ab3d..31e32f6 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -60,18 +60,18 @@ pager = delta
 
 [delta]
 ; # syntax-theme = GitHub
-file-added-label =  "   ══"
+file-added-label =  " ➕ ══"
 file-decoration-style=none
-file-modified-label = "   ══"
-file-removed-label = "   ══"
-file-renamed-label = "   ══"
+file-modified-label = " ▲ ══"
+file-removed-label = " ➖══"
+file-renamed-label = " ➞ ══"
 file-style = bold "#ffff66" "#333300"
 file-transformation = "s/$/ ══  /"
 hunk-header-decoration-style=none
 hunk-header-file-style = bold "#66ddff"
 hunk-header-line-number-style = bold "#66ccff"
 hunk-header-style = line-number bold "#99eeff" "#001133"
-hunk-label = " "
+hunk-label = "⯁"
 hunk-label-style = bold "#66ccff"
 line-numbers = true
 max-line-distance = 0.9

From 1b3d0013856bb7a453f91cc0d4f8a048b457964a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 9 May 2024 11:16:52 +0200
Subject: [PATCH 245/656] nvim: cleanup and adjust

---
 .config/nvim/lazy-lock.json              | 89 ++++++++++++------------
 .config/nvim/lua/config/lazy.lua         |  6 +-
 .config/nvim/lua/config/options.lua      | 15 ++--
 .config/nvim/lua/plugins/coding.lua      | 42 +++++++++++
 .config/nvim/lua/plugins/colorscheme.lua | 13 ++--
 .config/nvim/lua/plugins/extras.lua      | 31 +++++++++
 .config/nvim/lua/plugins/lsp.lua         | 30 ++------
 .config/nvim/lua/plugins/ui.lua          |  3 +-
 8 files changed, 144 insertions(+), 85 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 0409583..a68b787 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,70 +1,71 @@
 {
-  "LazyVim": { "branch": "main", "commit": "5646ee5191da244ff8ea57b9dba8a7e0d1dbdd42" },
-  "LuaSnip": { "branch": "master", "commit": "be7be2ca7f55bb881a7ffc16b2efa5af034ab06b" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "c5d5abc86910fb31b9f734cae2547322e81d3a26" },
+  "LazyVim": { "branch": "main", "commit": "530e94a9fa19577401e968a9673282c3d79f01e3" },
+  "LuaSnip": { "branch": "master", "commit": "b152822e1a4bafb6bdf11a16cc26525cbd95ee00" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "35a0998728380a17b8590447e8207391411c667a" },
   "alabaster.nvim": { "branch": "main", "commit": "ff1a9e07718506e45b94b2088366c5a8ab1ee1ea" },
-  "catppuccin": { "branch": "main", "commit": "02bdd749931a5d739063562e57531c118e081882" },
+  "catppuccin": { "branch": "main", "commit": "d97387aea8264f484bb5d5e74f2182a06c83e0d8" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
-  "codeium.nvim": { "branch": "main", "commit": "a070f57c0f54bd940436b94c8b679bcad5a48811" },
-  "colorbuddy.nvim": { "branch": "master", "commit": "9e96ccd88f4510d0a54ce1d5c11119eac9fb217e" },
-  "conform.nvim": { "branch": "master", "commit": "9d5ba06d6ee7418c674f498634617416d15b6239" },
-  "crates.nvim": { "branch": "main", "commit": "e8fa8ec62ded43c3b06bca7ef36be26b924681bb" },
-  "dashboard-nvim": { "branch": "master", "commit": "681300934baf36f6184ca41f0b26aed22056d4ee" },
-  "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
-  "friendly-snippets": { "branch": "main", "commit": "ea068f1becd91bcd4591fceb6420d4335e2e14d3" },
-  "gitsigns.nvim": { "branch": "main", "commit": "1a50b94066def8591d5f65bd60a4233902e9def4" },
+  "codeium.nvim": { "branch": "main", "commit": "d3b88eb3aa1de6da33d325c196b8a41da2bcc825" },
+  "colorbuddy.nvim": { "branch": "master", "commit": "8b968581e5c19d22a861d5f3fe5dbd83394fa681" },
+  "conform.nvim": { "branch": "master", "commit": "6dc1603ea408f476a57937bbeaf7f86520a21a98" },
+  "crates.nvim": { "branch": "main", "commit": "7d8541ec0e3b30ac2c43864d3ee13a632e1231ed" },
+  "dashboard-nvim": { "branch": "master", "commit": "a0a78099658c7d4be3714f657b18ca8285d5d106" },
+  "dressing.nvim": { "branch": "master", "commit": "5162edb1442a729a885c45455a07e9a89058be2f" },
+  "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
+  "friendly-snippets": { "branch": "main", "commit": "3e9a3f5a0cfcef1741e352c37bda4e82e5eb846a" },
+  "gitsigns.nvim": { "branch": "main", "commit": "805610a9393fa231f2c2b49cb521bfa413fadb3d" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
-  "incline.nvim": { "branch": "main", "commit": "385e541b9a13bcc6cd387501fb9d9af86fb3173e" },
+  "incline.nvim": { "branch": "main", "commit": "3e8edbc457daab8dba087dbba319865a912be7f9" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
   "lazy.nvim": { "branch": "main", "commit": "bef521ac89c8d423f9d092e37b58e8af0c099309" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "44509689b9bf3984d729cc264aacb31cb7f41668" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "05744f0f1967b5757bd05c08df4271ab8ec990aa" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" },
-  "mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
+  "mini.ai": { "branch": "main", "commit": "55e9b7217f29e62f734e239bfeed5731a065d801" },
   "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
-  "mini.comment": { "branch": "main", "commit": "5707e22dd38f7b0d0ea7b273a43948fe203ff3a4" },
-  "mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
-  "mini.surround": { "branch": "main", "commit": "49e0364b8c9a3258b485c5ece40bb0f3a5e94b1c" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "16d1b194376bf1fc2acd89ccb3c29ba8315bfcea" },
-  "neocodeium": { "branch": "main", "commit": "4395b6f01e565bd332433a5867882fb6ec725c24" },
-  "neoconf.nvim": { "branch": "main", "commit": "9d61ff423ae5f179ace1823300c4873f38a7c418" },
+  "mini.comment": { "branch": "main", "commit": "f9f1a646fd3d9df7397aa1b9550a875fe8189eb0" },
+  "mini.indentscope": { "branch": "main", "commit": "a8274b6ea2d868198d27bd91a31ed5ea3a6a5744" },
+  "mini.surround": { "branch": "main", "commit": "0f528eb2e1bab420c0569d9e52615144c51db920" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "7aad1bf3f6b849cbf108e02c55ad4d701cb4d33a" },
+  "neocodeium": { "branch": "main", "commit": "666d4f57e8bf0789c58957a9483dd671bc038123" },
+  "neoconf.nvim": { "branch": "main", "commit": "d4a48c2a6fdeec138605cee4eb6f8c6fafd0b3ed" },
   "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
-  "noice.nvim": { "branch": "main", "commit": "0cbe3f88d038320bdbda3c4c5c95f43a13c3aa12" },
-  "none-ls.nvim": { "branch": "main", "commit": "dca7ddec321a102ec9e792b1b29193702aff5fbb" },
-  "nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" },
-  "nvim-cmp": { "branch": "main", "commit": "ce16de5665c766f39c271705b17fff06f7bcb84f" },
-  "nvim-dap": { "branch": "master", "commit": "405df1dcc2e395ab5173a9c3d00e03942c023074" },
-  "nvim-dap-go": { "branch": "main", "commit": "36abe1d320cb61bfdf094d4e0fe815ef58f2302a" },
-  "nvim-dap-ui": { "branch": "master", "commit": "edfa93f60b189e5952c016eee262d0685d838450" },
+  "noice.nvim": { "branch": "main", "commit": "09102ca2e9a3e9302119fdaf7a059a034e4a626d" },
+  "none-ls.nvim": { "branch": "main", "commit": "f5632db2491fbe02b54f1a321a98548a8ba2bd15" },
+  "nui.nvim": { "branch": "main", "commit": "a3597dc88b53489d3fddbddbbd13787355253bb0" },
+  "nvim-cmp": { "branch": "main", "commit": "cd2cf0c124d3de577fb5449746568ee8e601afc8" },
+  "nvim-dap": { "branch": "master", "commit": "6ae8a14828b0f3bff1721a35a1dfd604b6a933bb" },
+  "nvim-dap-go": { "branch": "main", "commit": "5faf165f5062187320eaf9d177c3c1f647adc22e" },
+  "nvim-dap-ui": { "branch": "master", "commit": "5934302d63d1ede12c0b22b6f23518bb183fc972" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "3e8e207513e6ef520894950acd76b79902714103" },
-  "nvim-lint": { "branch": "master", "commit": "4055dc856d5ac8f6b85748006fd8fa6457e086e8" },
-  "nvim-lspconfig": { "branch": "master", "commit": "e25c4cdecd3d58c0deccce0f372426c8c480bcce" },
+  "nvim-lint": { "branch": "master", "commit": "83ee4952a968d89329e5a49b4648831d98124783" },
+  "nvim-lspconfig": { "branch": "master", "commit": "a3d9395455f2b2e3b50a0b0f37b8b4c23683f44a" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
-  "nvim-nio": { "branch": "master", "commit": "5800f585def265d52f1d8848133217c800bcb25d" },
+  "nvim-nio": { "branch": "master", "commit": "8765cbc4d0c629c8158a5341e1b4305fd93c3a90" },
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
-  "nvim-spectre": { "branch": "master", "commit": "2b012554a2536465243c0dff3605b5927c49ed23" },
-  "nvim-treesitter": { "branch": "master", "commit": "2bad828b48aed74efe8f7e4ea15550e18c7b482d" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "f19766163c18515fb4d3c12d572bf9cba6cdb990" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "2aa454e4037424c678a8ff033951a5be39e54b9c" },
+  "nvim-spectre": { "branch": "master", "commit": "4651801ba37a9407b7257287aec45b6653ffc5e9" },
+  "nvim-treesitter": { "branch": "master", "commit": "1b2f0067035c3d3ae7e0642614b8b03a2f19f49d" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "2650e6431f7daba5d9c2c64134fa5eb2312eb3d7" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "23b820146956b3b681c19e10d3a8bc0cbd9a1d4c" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "734ebad31c81c6198dfe102aa23280937c937c42" },
-  "nvim-web-devicons": { "branch": "master", "commit": "6e355632387a085f15a66ad68cf681c1d7374a04" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "0bdccb9c67a42a5e2d99384dc9bfa29b1451528f" },
+  "nvim-web-devicons": { "branch": "master", "commit": "5b9067899ee6a2538891573500e8fd6ff008440f" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
-  "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" },
-  "rustaceanvim": { "branch": "master", "commit": "e2dbf91daed26d4dd7263affbecbf9a36e0096e5" },
-  "sqlite.lua": { "branch": "master", "commit": "40701b6151f8883980c1548647116de39b763540" },
+  "plenary.nvim": { "branch": "master", "commit": "08e301982b9a057110ede7a735dd1b5285eb341f" },
+  "rustaceanvim": { "branch": "master", "commit": "2eb8776df1aab03f514b38ddc39af57efbd8970b" },
+  "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "5a701e99906961218b55d7ad6c2a998f066c6fe0" },
+  "telescope.nvim": { "branch": "master", "commit": "fac83a556e7b710dc31433dec727361ca062dbe9" },
   "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
-  "tokyonight.nvim": { "branch": "main", "commit": "9bf9ec53d5e87b025e2404069b71e7ebdc3a13e5" },
-  "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" },
-  "vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
+  "tokyonight.nvim": { "branch": "main", "commit": "67afeaf7fd6ebba000633e89f63c31694057edde" },
+  "trouble.nvim": { "branch": "dev", "commit": "b4b9a11b3578d510963f6f681fecb4631ae992c3" },
+  "vim-illuminate": { "branch": "master", "commit": "e522e0dd742a83506db0a72e1ced68c9c130f185" },
   "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
   "yanky.nvim": { "branch": "main", "commit": "7c5cbf0122ff2dfbb6a92f14885894f65949cc8b" }
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 283aeab..6fe0e9e 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -42,9 +42,9 @@ require("lazy").setup({
 			-- disable some rtp plugins
 			disabled_plugins = {
 				"gzip",
-				-- "matchit",
-				-- "matchparen",
-				-- "netrwPlugin",
+				"matchit",
+				"matchparen",
+				"netrwPlugin",
 				"tarPlugin",
 				"tohtml",
 				"tutor",
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index ca57020..4178853 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -2,19 +2,20 @@
 -- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
 -- Add any additional options here
 
-local opt = vim.opt
-
-opt.number = true
-opt.relativenumber = false
-opt.clipboard = "unnamedplus"
+vim.opt.number = true
+vim.opt.relativenumber = false
+vim.opt.clipboard = "unnamed" --"unnamedplus"
 
 vim.g.do_filetype_lua = 1
-
 vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
+
 vim.o.autochdir = true
 vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
 vim.o.scrolloff = 7
-vim.o.updatetime = 100
+vim.o.splitkeep = "screen"
+vim.o.updatetime = 250
+vim.o.timeout = true
+vim.o.timeoutlen = 300
 
 -- additional filetypes
 vim.filetype.add({
diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
index f5b7e2e..bbabbc5 100644
--- a/.config/nvim/lua/plugins/coding.lua
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -8,7 +8,49 @@ return {
 		"nvim-cmp",
 		dependencies = { "hrsh7th/cmp-emoji" },
 		opts = function(_, opts)
+			local cmp = require("cmp")
 			table.insert(opts.sources, { name = "emoji" })
+
+			opts.view = { docs = { auto_open = false }, entries = { follow_cursor = true } }
+			opts.completion = {
+				autocomplete = false,
+			}
+
+			local winhighlight =
+				"Normal:NoiceCmdlinePopupTitle,FloatBorder:NoiceCmdlinePopupBorder,CursorLine:PMenuSel,Search:Search"
+
+			opts.window = {
+				completion = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
+				documentation = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
+				preview = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
+			}
+
+			-- lua sorting = { comparators = { cmp.config.compare.sort_text, -- this needs to be 1st cmp.config.compare.offset, cmp.config.compare.exact, cmp.config.compare.score, cmp.config.compare.kind, cmp.config.compare.length, cmp.config.compare.order, } }
+
+			opts.sorting = {
+				priority_weight = 2,
+				comparators = {
+					cmp.config.compare.exact,
+					cmp.config.compare.recently_used,
+					cmp.config.compare.locality,
+					cmp.config.compare.offset,
+					-- cmp.config.compare.scopes,
+					cmp.config.compare.score,
+					cmp.config.compare.kind,
+					-- cmp.config.compare.sort_text,
+					cmp.config.compare.length,
+					cmp.config.compare.order,
+				},
+			}
+
+			return opts
 		end,
 	},
+
+	{
+		"Exafunction/codeium.nvim",
+		opts = {
+			enable_chat = false,
+		},
+	},
 }
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index b202a60..ecaa748 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -35,7 +35,6 @@ return {
 
 	{
 		"jesseleite/nvim-noirbuddy",
-		as = "noirbuddy",
 		lazy = false,
 		dependencies = {
 			{ "tjdevries/colorbuddy.nvim" },
@@ -147,12 +146,14 @@ return {
 				Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
 				Group.new("FloatBorder", colors.NormalFloatBorder, colors.NormalFloatBg)
 
-				Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
-				Color.new("PmenuSelBg", "#335a88", styles.nocombine)
-				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
+				-- Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
+				-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
+				Color.new("PmenuSelFg", "#52ffb5", styles.nocombine)
+				Color.new("PmenuSelBg", "#003322", styles.nocombine)
+				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg, styles.bold)
 
-				Color.new("PmenuSelBg", "#335a88", styles.nocombine)
-				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
+				-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
+				-- Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
 
 				Color.new("TreesitterContext", "#242e38", styles.nocombine)
 				Group.new("TreesitterContext", nil, colors.TreesitterContext)
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index e1e530c..bfc6f4a 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -56,6 +56,36 @@ return {
 					end, { desc = "Rust external documentation", buffer = bufnr })
 				end,
 			},
+
+			settings = {
+				-- rust-analyzer language server configuration
+				["rust-analyzer"] = {
+					cargo = {
+						allFeatures = true,
+						loadOutDirsFromCheck = true,
+						runBuildScripts = true,
+						targetDir = true,
+						-- extraEnv = {
+						-- 	RUSTC_LINKER = "clang",
+						-- 	RUSTFLAGS = "-Clink-arg=-fuse-ld=mold",
+						-- },
+					},
+					-- Add clippy lints for Rust.
+					checkOnSave = {
+						allFeatures = true,
+						command = "clippy",
+						extraArgs = { "--no-deps" },
+					},
+					procMacro = {
+						enable = true,
+						ignored = {
+							["async-trait"] = { "async_trait" },
+							["napi-derive"] = { "napi" },
+							["async-recursion"] = { "async_recursion" },
+						},
+					},
+				},
+			},
 		},
 	},
 
@@ -66,6 +96,7 @@ return {
 			local neocodeium = require("neocodeium")
 			neocodeium.setup()
 			vim.keymap.set("i", "<C-j>", neocodeium.accept)
+			vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete)
 		end,
 	},
 }
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index c1cfe44..82dac87 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -6,30 +6,12 @@ return {
 			servers = {
 				rust_analyzer = {
 					mason = false,
-					targetDir = true,
-					keys = {
-						{ "K", "<cmd>RustHoverActions<cr>", desc = "Hover Actions (Rust)" },
-						{ "<leader>cR", "<cmd>RustCodeAction<cr>", desc = "Code Action (Rust)" },
-						{ "<leader>dr", "<cmd>RustDebuggables<cr>", desc = "Run Debuggables (Rust)" },
-					},
-					settings = {
-						["rust-analyzer"] = {
-							cargo = {
-								allFeatures = true,
-								loadOutDirsFromCheck = true,
-								runBuildScripts = true,
-								targetDir = true,
-							},
-							procMacro = {
-								enable = true,
-								ignored = {
-									["async-trait"] = { "async_trait" },
-									["napi-derive"] = { "napi" },
-									["async-recursion"] = { "async_recursion" },
-								},
-							},
-						},
-					},
+					-- targetDir = true,
+					-- keys = {
+					-- 	{ "K", "<cmd>RustHoverActions<cr>", desc = "Hover Actions (Rust)" },
+					-- 	{ "<leader>cR", "<cmd>RustCodeAction<cr>", desc = "Code Action (Rust)" },
+					-- 	{ "<leader>dr", "<cmd>RustDebuggables<cr>", desc = "Run Debuggables (Rust)" },
+					-- },
 				},
 				yamlls = {
 					settings = {
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index 4afcfba..935a8f8 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -72,8 +72,9 @@ return {
 	{
 		"rcarriga/nvim-notify",
 		opts = {
-			timeout = 1500,
+			timeout = 2000,
 			background_colour = "#1e2835",
+			render = "wrapped-compact",
 		},
 	},
 

From 1a7711e2a8e3e8a74071c2a499f16d14e59b623c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 9 May 2024 11:47:16 +0200
Subject: [PATCH 246/656] nvim: instant timeoutlen for general snappiness

---
 .config/nvim/lua/config/options.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 4178853..3690f7d 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -15,7 +15,7 @@ vim.o.scrolloff = 7
 vim.o.splitkeep = "screen"
 vim.o.updatetime = 250
 vim.o.timeout = true
-vim.o.timeoutlen = 300
+vim.o.timeoutlen = 0
 
 -- additional filetypes
 vim.filetype.add({

From fff2203e4bd901c882f26137f7b8b009fb4fbc34 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 9 May 2024 13:13:52 +0200
Subject: [PATCH 247/656] nvim: use modes.nvim for mode-specific cursor colors.
 fancier codeium  highlights

---
 .config/nvim/lazy-lock.json              |  1 +
 .config/nvim/lua/config/options.lua      |  2 +-
 .config/nvim/lua/plugins/colorscheme.lua | 12 ++++++++++++
 .config/nvim/lua/plugins/ui.lua          | 15 +++++++++++++++
 4 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index a68b787..381c925 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -31,6 +31,7 @@
   "mini.comment": { "branch": "main", "commit": "f9f1a646fd3d9df7397aa1b9550a875fe8189eb0" },
   "mini.indentscope": { "branch": "main", "commit": "a8274b6ea2d868198d27bd91a31ed5ea3a6a5744" },
   "mini.surround": { "branch": "main", "commit": "0f528eb2e1bab420c0569d9e52615144c51db920" },
+  "modes.nvim": { "branch": "main", "commit": "4035a46aaabe43faf1b54740575af9dd5bb03809" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "7aad1bf3f6b849cbf108e02c55ad4d701cb4d33a" },
   "neocodeium": { "branch": "main", "commit": "666d4f57e8bf0789c58957a9483dd671bc038123" },
   "neoconf.nvim": { "branch": "main", "commit": "d4a48c2a6fdeec138605cee4eb6f8c6fafd0b3ed" },
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 3690f7d..cb6f5b5 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -4,7 +4,7 @@
 
 vim.opt.number = true
 vim.opt.relativenumber = false
-vim.opt.clipboard = "unnamed" --"unnamedplus"
+-- vim.opt.clipboard = "unnamed" --"unnamedplus"
 
 vim.g.do_filetype_lua = 1
 vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index ecaa748..0a81937 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -76,6 +76,18 @@ return {
 				Color.new("normal", "#e3e0cd")
 				Group.new("Normal", colors.normal, nil)
 
+				Color.new("Visual", "#440066")
+				Group.new("ModesVisualVisual", nil, colors.Visual)
+				Group.new("Visual", nil, colors.Visual)
+				Group.new("VisualNOS", nil, colors.Visual)
+
+				Color.new("NeoCodeiumLabelBg", "#eda92d")
+				Color.new("NeoCodeiumLabelFg", "#000000")
+				Group.new("NeoCodeiumLabel", colors.NeoCodeiumLabelFg, colors.NeoCodeiumLabelBg)
+
+				Color.new("NeoCodeiumSuggestion", "#996611")
+				Group.new("NeoCodeiumSuggestion", colors.NeoCodeiumSuggestion, nil, styles.italic)
+
 				Color.new("WinSeparator", "#223344")
 				Group.new("WinSeparator", colors.WinSeparator, nil)
 
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index 935a8f8..d554be2 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -69,6 +69,21 @@ return {
 		},
 	},
 
+	{
+		"mvllow/modes.nvim",
+		opts = {
+			colors = {
+				copy = "#f5c359",
+				delete = "#c75c6a",
+				insert = "#ffcc00",
+				visual = "#c343fc",
+			},
+			set_cursor = true,
+			set_cursorline = true,
+			set_number = true,
+		},
+	},
+
 	{
 		"rcarriga/nvim-notify",
 		opts = {

From 67c72e3dd75916d26b1a0007c7597f43744e8c68 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 9 May 2024 17:18:20 +0200
Subject: [PATCH 248/656] =?UTF-8?q?nvim:=20noice=20tweaks=20for=20increase?=
 =?UTF-8?q?d=20Calm=E2=84=A2=EF=B8=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .config/nvim/lazy-lock.json              |  5 +--
 .config/nvim/lua/config/lazy.lua         |  4 +--
 .config/nvim/lua/config/options.lua      |  2 +-
 .config/nvim/lua/plugins/colorscheme.lua | 10 ++++++
 .config/nvim/lua/plugins/ui.lua          | 39 +++++++++++++++++++++++-
 5 files changed, 54 insertions(+), 6 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 381c925..c4f9836 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -3,6 +3,7 @@
   "LuaSnip": { "branch": "master", "commit": "b152822e1a4bafb6bdf11a16cc26525cbd95ee00" },
   "SchemaStore.nvim": { "branch": "main", "commit": "35a0998728380a17b8590447e8207391411c667a" },
   "alabaster.nvim": { "branch": "main", "commit": "ff1a9e07718506e45b94b2088366c5a8ab1ee1ea" },
+  "bufferline.nvim": { "branch": "main", "commit": "73540cb95f8d95aa1af3ed57713c6720c78af915" },
   "catppuccin": { "branch": "main", "commit": "d97387aea8264f484bb5d5e74f2182a06c83e0d8" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
@@ -22,6 +23,7 @@
   "incline.nvim": { "branch": "main", "commit": "3e8edbc457daab8dba087dbba319865a912be7f9" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
   "lazy.nvim": { "branch": "main", "commit": "bef521ac89c8d423f9d092e37b58e8af0c099309" },
+  "lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "05744f0f1967b5757bd05c08df4271ab8ec990aa" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
@@ -31,7 +33,6 @@
   "mini.comment": { "branch": "main", "commit": "f9f1a646fd3d9df7397aa1b9550a875fe8189eb0" },
   "mini.indentscope": { "branch": "main", "commit": "a8274b6ea2d868198d27bd91a31ed5ea3a6a5744" },
   "mini.surround": { "branch": "main", "commit": "0f528eb2e1bab420c0569d9e52615144c51db920" },
-  "modes.nvim": { "branch": "main", "commit": "4035a46aaabe43faf1b54740575af9dd5bb03809" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "7aad1bf3f6b849cbf108e02c55ad4d701cb4d33a" },
   "neocodeium": { "branch": "main", "commit": "666d4f57e8bf0789c58957a9483dd671bc038123" },
   "neoconf.nvim": { "branch": "main", "commit": "d4a48c2a6fdeec138605cee4eb6f8c6fafd0b3ed" },
@@ -51,7 +52,7 @@
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "4651801ba37a9407b7257287aec45b6653ffc5e9" },
-  "nvim-treesitter": { "branch": "master", "commit": "1b2f0067035c3d3ae7e0642614b8b03a2f19f49d" },
+  "nvim-treesitter": { "branch": "master", "commit": "707b0dcf7641fa3a2aaad5053b215503f54f89aa" },
   "nvim-treesitter-context": { "branch": "master", "commit": "2650e6431f7daba5d9c2c64134fa5eb2312eb3d7" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "23b820146956b3b681c19e10d3a8bc0cbd9a1d4c" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 6fe0e9e..1fc7c73 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -42,8 +42,8 @@ require("lazy").setup({
 			-- disable some rtp plugins
 			disabled_plugins = {
 				"gzip",
-				"matchit",
-				"matchparen",
+				-- "matchit",
+				-- "matchparen",
 				"netrwPlugin",
 				"tarPlugin",
 				"tohtml",
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index cb6f5b5..3690f7d 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -4,7 +4,7 @@
 
 vim.opt.number = true
 vim.opt.relativenumber = false
--- vim.opt.clipboard = "unnamed" --"unnamedplus"
+vim.opt.clipboard = "unnamed" --"unnamedplus"
 
 vim.g.do_filetype_lua = 1
 vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 0a81937..1047171 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -80,6 +80,7 @@ return {
 				Group.new("ModesVisualVisual", nil, colors.Visual)
 				Group.new("Visual", nil, colors.Visual)
 				Group.new("VisualNOS", nil, colors.Visual)
+				Group.new("MatchParen", nil, colors.Visual)
 
 				Color.new("NeoCodeiumLabelBg", "#eda92d")
 				Color.new("NeoCodeiumLabelFg", "#000000")
@@ -88,6 +89,15 @@ return {
 				Color.new("NeoCodeiumSuggestion", "#996611")
 				Group.new("NeoCodeiumSuggestion", colors.NeoCodeiumSuggestion, nil, styles.italic)
 
+				Color.new("NoiceCmdLineBg", "#112233")
+				Color.new("NoiceCmdLineFg", "#99ccff")
+				Group.new("NoiceCmdLine", colors.NoiceCmdLineFg, colors.NoiceCmdLineBg)
+
+				Color.new("NoiceFormatProgressTodo", "#223344")
+				Group.new("NoiceFormatProgressTodo", nil, colors.NoiceFormatProgressTodo)
+				Color.new("NoiceFormatProgressDone", "#446699")
+				Group.new("NoiceFormatProgressDone", nil, colors.NoiceFormatProgressDone)
+
 				Color.new("WinSeparator", "#223344")
 				Group.new("WinSeparator", colors.WinSeparator, nil)
 
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index d554be2..390de3b 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -84,12 +84,49 @@ return {
 		},
 	},
 
+	{
+		"folke/noice.nvim",
+		event = "VeryLazy",
+		keys = {
+			{ "<leader>sna", "<cmd>NoiceTelescope<cr>", desc = "Show all messages in Telescope" },
+		},
+		opts = function()
+			local enable_conceal = true -- Hide command text if true
+			return {
+				presets = { bottom_search = true }, -- The kind of popup used for /
+				cmdline = {
+					view = "cmdline", -- The kind of popup used for :
+					format = {
+						cmdline = { conceal = enable_conceal },
+						search_down = { conceal = enable_conceal },
+						search_up = { conceal = enable_conceal },
+						filter = { conceal = enable_conceal },
+						lua = { conceal = enable_conceal },
+						help = { conceal = enable_conceal },
+						input = { conceal = enable_conceal },
+					},
+				},
+
+				messages = { enabled = true },
+				lsp = {
+					hover = { enabled = false },
+					signature = { enabled = false },
+					progress = { enabled = true, view = "cmdline" },
+					message = { enabled = false },
+					smart_move = { enabled = false },
+				},
+			}
+		end,
+	},
+
 	{
 		"rcarriga/nvim-notify",
 		opts = {
-			timeout = 2000,
+			stages = "fade_in_slide_out",
+			timeout = 1000,
 			background_colour = "#1e2835",
 			render = "wrapped-compact",
+			top_down = false,
 		},
 	},
 

From 20846ca2ac60e889b13ccab210892ee333137a5e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 10 May 2024 22:33:44 +0200
Subject: [PATCH 249/656] nvim: use buildifier and starpls for bazel files

---
 .config/nvim/lua/plugins/extras.lua | 1 +
 .config/nvim/lua/plugins/lsp.lua    | 1 +
 2 files changed, 2 insertions(+)

diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index bfc6f4a..61f7c27 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -10,6 +10,7 @@ return {
 				nls.builtins.formatting.stylua,
 				nls.builtins.formatting.shfmt,
 				nls.builtins.formatting.buf,
+				nls.builtins.formatting.buildifier,
 				nls.builtins.diagnostics.buf.with({
 					args = { "lint", "--disable-symlinks", "--path", "$FILENAME" },
 					cwd = function()
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index 82dac87..cc5441a 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -13,6 +13,7 @@ return {
 					-- 	{ "<leader>dr", "<cmd>RustDebuggables<cr>", desc = "Run Debuggables (Rust)" },
 					-- },
 				},
+				starpls = {},
 				yamlls = {
 					settings = {
 						yaml = {

From 58837c4f509aa68866aa82c46674c374a76a2408 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 12 May 2024 11:24:22 +0200
Subject: [PATCH 250/656] jj: set immutable heads

---
 .jjconfig.toml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.jjconfig.toml b/.jjconfig.toml
index a7f9752..befcefa 100644
--- a/.jjconfig.toml
+++ b/.jjconfig.toml
@@ -13,3 +13,9 @@ la = ["log", "--ignore-working-copy", "-r", "all()"]
 b = ["branch", "list"]
 n = ["new", "main"]
 d = ["diff"]
+
+[revset-aliases]
+# The `main.. &` bit is an optimization to scan for non-`mine()` commits only
+# among commits that are not in `main`.
+"immutable_heads()" = "main@origin | (main@origin.. & ~mine())"
+

From 67e454b615546fb58ec118ea7aa1859947fe3a28 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 12 May 2024 11:25:11 +0200
Subject: [PATCH 251/656] fish: fixup

---
 .config/fish/conf.d/abbr.fish |  2 +-
 .config/fish/config.fish      | 30 ++++++++++++++++++------------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/.config/fish/conf.d/abbr.fish b/.config/fish/conf.d/abbr.fish
index 9e5859a..0eaf442 100644
--- a/.config/fish/conf.d/abbr.fish
+++ b/.config/fish/conf.d/abbr.fish
@@ -1,6 +1,6 @@
 abbr --add b git branch -va
 abbr --add d git diff --stat -p -C --color-words
 abbr --add new git checkout --detach main
-abbr --add s git st
+abbr --add s git status -sb
 abbr --add sl git branchless smartlog
 abbr --add sw git branchless switch --interactive
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 1a8d08d..1f21ad2 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -1,31 +1,35 @@
-
 set fish_greeting
+set fish_emoji_width 2
 
 fish_add_path $HOME/.cargo/bin
 fish_add_path $HOME/bin
 
 ## Nix
-export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
-export NIX_REMOTE=daemon
+set -gx LOCALE_ARCHIVE /usr/lib/locale/locale-archive
+set -gx NIX_REMOTE daemon
 fish_add_path $HOME/.nix-profile/bin
 
 if status is-interactive
 
     ## Pager
-    export LESS="--mouse --wheel-lines=1 -nRXF"
-    export LESSCOLORIZER="bat"
-    export LESSOPEN="|lesspipe.sh %s"
-    export PAGER="bat"
-    export BAT_PAGER="less -r"
+    set -gx LESS "--mouse --wheel-lines=1 -nRXF"
+    set -gx LESSCOLORIZER bat
+    set -gx LESSOPEN "|lesspipe.sh %s"
+    set -gx PAGER bat
+    set -gx BAT_PAGER "less -r"
 
     ## OpenTelemetry
-    export OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.aarn.shelman.io
-    export OTEL_RESOURCE_ATTRIBUTES=instance=dln-dev
-    export OTEL_LOG_LEVEL=debug
+    set -gx OTEL_EXPORTER_OTLP_ENDPOINT https://otel.aarn.shelman.io
+    set -gx OTEL_RESOURCE_ATTRIBUTES instance=dln-dev
+    set -gx OTEL_LOG_LEVEL debug
 
     ## Utilities
 
-    export EDITOR=nvim
+    set -gx EDITOR (which nvim)
+    set -gx VISUAL $EDITOR
+    set -gx SUDO_EDITOR $EDITOR
+
+
 
     function tree
         eza --tree --color=always $argv | bat --wrap=never
@@ -59,6 +63,8 @@ if status is-interactive
     # FIXME: how to use autin history for these?
     bind \cn history-prefix-search-forward
     bind \cp history-prefix-search-backward
+    # bind \cP _atuin_bind_up
+    bind \cJ forward-char
 
     atuin init fish | source
 end

From 8f4d7bb9a702a8a067b0cebe9c172be9b3d8c133 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 12 May 2024 11:25:35 +0200
Subject: [PATCH 252/656] nvim: telescope fancification

---
 .config/nvim/lazy-lock.json              | 25 ++++++++++++------------
 .config/nvim/lua/config/options.lua      |  2 +-
 .config/nvim/lua/plugins/colorscheme.lua | 16 +++++++++++++--
 .config/nvim/lua/plugins/editor.lua      | 13 ++++++------
 .config/nvim/lua/plugins/extras.lua      |  8 ++++++++
 .tmux.conf                               |  1 +
 bin/tmux-nvim-helper                     |  2 +-
 7 files changed, 45 insertions(+), 22 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index c4f9836..1d5c099 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -3,7 +3,6 @@
   "LuaSnip": { "branch": "master", "commit": "b152822e1a4bafb6bdf11a16cc26525cbd95ee00" },
   "SchemaStore.nvim": { "branch": "main", "commit": "35a0998728380a17b8590447e8207391411c667a" },
   "alabaster.nvim": { "branch": "main", "commit": "ff1a9e07718506e45b94b2088366c5a8ab1ee1ea" },
-  "bufferline.nvim": { "branch": "main", "commit": "73540cb95f8d95aa1af3ed57713c6720c78af915" },
   "catppuccin": { "branch": "main", "commit": "d97387aea8264f484bb5d5e74f2182a06c83e0d8" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
@@ -12,36 +11,37 @@
   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "codeium.nvim": { "branch": "main", "commit": "d3b88eb3aa1de6da33d325c196b8a41da2bcc825" },
   "colorbuddy.nvim": { "branch": "master", "commit": "8b968581e5c19d22a861d5f3fe5dbd83394fa681" },
-  "conform.nvim": { "branch": "master", "commit": "6dc1603ea408f476a57937bbeaf7f86520a21a98" },
+  "conform.nvim": { "branch": "master", "commit": "dc950e5717f1da65b1fcd986b1bbff0d6bd0e2ee" },
   "crates.nvim": { "branch": "main", "commit": "7d8541ec0e3b30ac2c43864d3ee13a632e1231ed" },
   "dashboard-nvim": { "branch": "master", "commit": "a0a78099658c7d4be3714f657b18ca8285d5d106" },
   "dressing.nvim": { "branch": "master", "commit": "5162edb1442a729a885c45455a07e9a89058be2f" },
   "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
+  "flash.nvim": { "branch": "main", "commit": "7bb4a9c75d1e20cd24185afedeaa11681829ba23" },
   "friendly-snippets": { "branch": "main", "commit": "3e9a3f5a0cfcef1741e352c37bda4e82e5eb846a" },
   "gitsigns.nvim": { "branch": "main", "commit": "805610a9393fa231f2c2b49cb521bfa413fadb3d" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "incline.nvim": { "branch": "main", "commit": "3e8edbc457daab8dba087dbba319865a912be7f9" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
   "lazy.nvim": { "branch": "main", "commit": "bef521ac89c8d423f9d092e37b58e8af0c099309" },
-  "lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "05744f0f1967b5757bd05c08df4271ab8ec990aa" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "9ae570e206360e47d30b4c35a4550c165f4ea7b7" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
-  "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" },
+  "mason.nvim": { "branch": "main", "commit": "0f1cb65f436b769733d18b41572f617a1fb41f62" },
   "mini.ai": { "branch": "main", "commit": "55e9b7217f29e62f734e239bfeed5731a065d801" },
   "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
   "mini.comment": { "branch": "main", "commit": "f9f1a646fd3d9df7397aa1b9550a875fe8189eb0" },
   "mini.indentscope": { "branch": "main", "commit": "a8274b6ea2d868198d27bd91a31ed5ea3a6a5744" },
-  "mini.surround": { "branch": "main", "commit": "0f528eb2e1bab420c0569d9e52615144c51db920" },
+  "mini.surround": { "branch": "main", "commit": "eb89a88a51655e46a93595204a9251a012918883" },
+  "modes.nvim": { "branch": "main", "commit": "4035a46aaabe43faf1b54740575af9dd5bb03809" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "7aad1bf3f6b849cbf108e02c55ad4d701cb4d33a" },
   "neocodeium": { "branch": "main", "commit": "666d4f57e8bf0789c58957a9483dd671bc038123" },
-  "neoconf.nvim": { "branch": "main", "commit": "d4a48c2a6fdeec138605cee4eb6f8c6fafd0b3ed" },
+  "neoconf.nvim": { "branch": "main", "commit": "085ab9ea610fb651a5d0ff2b4de04e9457162178" },
   "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
   "noice.nvim": { "branch": "main", "commit": "09102ca2e9a3e9302119fdaf7a059a034e4a626d" },
   "none-ls.nvim": { "branch": "main", "commit": "f5632db2491fbe02b54f1a321a98548a8ba2bd15" },
   "nui.nvim": { "branch": "main", "commit": "a3597dc88b53489d3fddbddbbd13787355253bb0" },
   "nvim-cmp": { "branch": "main", "commit": "cd2cf0c124d3de577fb5449746568ee8e601afc8" },
-  "nvim-dap": { "branch": "master", "commit": "6ae8a14828b0f3bff1721a35a1dfd604b6a933bb" },
+  "nvim-dap": { "branch": "master", "commit": "615a1b2046e1eaf7995e0ba8e8a65f344201349d" },
   "nvim-dap-go": { "branch": "main", "commit": "5faf165f5062187320eaf9d177c3c1f647adc22e" },
   "nvim-dap-ui": { "branch": "master", "commit": "5934302d63d1ede12c0b22b6f23518bb183fc972" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "3e8e207513e6ef520894950acd76b79902714103" },
@@ -52,16 +52,17 @@
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "4651801ba37a9407b7257287aec45b6653ffc5e9" },
-  "nvim-treesitter": { "branch": "master", "commit": "707b0dcf7641fa3a2aaad5053b215503f54f89aa" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "2650e6431f7daba5d9c2c64134fa5eb2312eb3d7" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "23b820146956b3b681c19e10d3a8bc0cbd9a1d4c" },
+  "nvim-treesitter": { "branch": "master", "commit": "6587d8e6942b8d2146d61bab4c4acff9dec5ae59" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "1e52a2c4223c1e7b0def9c76a1f3757d372196c3" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "dfa4178c0cadb44f687603d72ad0908474c28dd9" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
   "nvim-ts-context-commentstring": { "branch": "main", "commit": "0bdccb9c67a42a5e2d99384dc9bfa29b1451528f" },
   "nvim-web-devicons": { "branch": "master", "commit": "5b9067899ee6a2538891573500e8fd6ff008440f" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "08e301982b9a057110ede7a735dd1b5285eb341f" },
-  "rustaceanvim": { "branch": "master", "commit": "2eb8776df1aab03f514b38ddc39af57efbd8970b" },
+  "rustaceanvim": { "branch": "master", "commit": "187ba89020a6cb9c9bfe39818ef05964473baefc" },
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
+  "telescope-frecency.nvim": { "branch": "master", "commit": "6b6565e6584c86ca501bdac485cbdc2ca64556e4" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope.nvim": { "branch": "master", "commit": "fac83a556e7b710dc31433dec727361ca062dbe9" },
   "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 3690f7d..5545fc7 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -15,7 +15,7 @@ vim.o.scrolloff = 7
 vim.o.splitkeep = "screen"
 vim.o.updatetime = 250
 vim.o.timeout = true
-vim.o.timeoutlen = 0
+vim.o.timeoutlen = 150
 
 -- additional filetypes
 vim.filetype.add({
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 1047171..dae653e 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -217,8 +217,20 @@ return {
 				Color.new("FlashLabelBg", "#EA1199")
 				Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
 
-				Group.new("TelescopeTitle", colors.primary)
-				Group.new("TelescopeBorder", colors.secondary)
+				Color.new("TelescopeBorder", "#23fdb6")
+				Group.new("TelescopeTitle", colors.TelescopeBorder)
+				Group.new("telescopeborder", colors.TelescopeBorder)
+				Group.new("telescoperesultsnormal", colors.TelescopeBorder)
+
+				Color.new("TelescopeSelectionBg", "#00401d")
+				Color.new("TelescopeSelectionFg", "#f6fb2d")
+				Group.new(
+					"TelescopeSelection",
+					colors.TelescopeSelectionFg,
+					colors.TelescopeSelectionBg,
+					styles.nocombine + styles.bold
+				)
+
 				Group.new("@comment", colors.comment, nil, styles.italic + styles.bold)
 				Group.new("@string", colors.string, nil, styles.italic)
 
diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index 0ce8233..687f174 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -7,22 +7,23 @@ return {
 		"telescope.nvim",
 		opts = {
 			defaults = {
-				layout_strategy = "vertical",
+				layout_strategy = "horizontal",
 				layout_config = {
 					anchor = "top",
-					vertical = {
+					horizontal = {
 						prompt_position = "top",
-						mirror = true,
-						-- preview_width = 0.5,
-						preview_height = 0.5,
+						mirror = false,
+						preview_width = 0.4,
+						-- preview_height = 0.5,
 					},
 					width = 0.9,
 					height = 0.9,
 					preview_cutoff = 10,
 				},
-				-- sorting_strategy = "ascending",
+				sorting_strategy = "ascending",
 				winblend = 0,
 				wrap_results = true,
+				previewer = false,
 			},
 		},
 	},
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 61f7c27..6c54725 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -1,4 +1,11 @@
 return {
+	{
+		"nvim-telescope/telescope-frecency.nvim",
+		config = function()
+			require("telescope").load_extension("frecency")
+		end,
+	},
+
 	{
 		"nvimtools/none-ls.nvim",
 		opts = function(_, opts)
@@ -11,6 +18,7 @@ return {
 				nls.builtins.formatting.shfmt,
 				nls.builtins.formatting.buf,
 				nls.builtins.formatting.buildifier,
+				nls.builtins.diagnostics.buildifier,
 				nls.builtins.diagnostics.buf.with({
 					args = { "lint", "--disable-symlinks", "--path", "$FILENAME" },
 					cwd = function()
diff --git a/.tmux.conf b/.tmux.conf
index 289499c..6ae19c6 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -74,6 +74,7 @@ setw -g window-status-format ""
 setw -g window-status-current-format ""
 setw -g window-status-separator ""
 set -g status-style "bg=#444444,fg=#dddddd,italics"
+set -g popup-border-style "fg=#77fecc"
 set -g pane-border-style "fg=#334455"
 set -g pane-active-border-style "fg=#334455"
 set -g status-position bottom
diff --git a/bin/tmux-nvim-helper b/bin/tmux-nvim-helper
index 9115fad..68f1e9e 100755
--- a/bin/tmux-nvim-helper
+++ b/bin/tmux-nvim-helper
@@ -8,7 +8,7 @@ PATH="$HOME/bin:$PATH"
 if [ -n "$1" ]; then
 	_file=$(readlink -f "$@")
 else
-	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0"}
+	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0 --layout=reverse"}
 	_root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
 	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
 	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)

From cd62574246aa71bd35370185db1380a4126c9e1f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 13 May 2024 09:31:12 +0200
Subject: [PATCH 253/656] bat: use ansi mode while waiting for next release
 w/auto light/dark theme

---
 .config/bat/config | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/bat/config b/.config/bat/config
index d5f2441..609fc6e 100644
--- a/.config/bat/config
+++ b/.config/bat/config
@@ -1,3 +1,3 @@
 --italic-text=always
 --plain
---theme="Catppuccin Mocha"
+--theme=ansi

From 0066554957fa4af2d10738eb83207a41c1bee500 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 13 May 2024 09:31:43 +0200
Subject: [PATCH 254/656] nvim: colors

---
 .config/nvim/lazy-lock.json              | 20 +++++++++-----------
 .config/nvim/lua/plugins/colorscheme.lua | 20 +++++++++++++++-----
 2 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 1d5c099..83d5624 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,8 +1,7 @@
 {
-  "LazyVim": { "branch": "main", "commit": "530e94a9fa19577401e968a9673282c3d79f01e3" },
+  "LazyVim": { "branch": "main", "commit": "cfe87ba894b6c2c961827de45c55b57b1183865c" },
   "LuaSnip": { "branch": "master", "commit": "b152822e1a4bafb6bdf11a16cc26525cbd95ee00" },
   "SchemaStore.nvim": { "branch": "main", "commit": "35a0998728380a17b8590447e8207391411c667a" },
-  "alabaster.nvim": { "branch": "main", "commit": "ff1a9e07718506e45b94b2088366c5a8ab1ee1ea" },
   "catppuccin": { "branch": "main", "commit": "d97387aea8264f484bb5d5e74f2182a06c83e0d8" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
@@ -16,17 +15,16 @@
   "dashboard-nvim": { "branch": "master", "commit": "a0a78099658c7d4be3714f657b18ca8285d5d106" },
   "dressing.nvim": { "branch": "master", "commit": "5162edb1442a729a885c45455a07e9a89058be2f" },
   "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
-  "flash.nvim": { "branch": "main", "commit": "7bb4a9c75d1e20cd24185afedeaa11681829ba23" },
   "friendly-snippets": { "branch": "main", "commit": "3e9a3f5a0cfcef1741e352c37bda4e82e5eb846a" },
   "gitsigns.nvim": { "branch": "main", "commit": "805610a9393fa231f2c2b49cb521bfa413fadb3d" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "incline.nvim": { "branch": "main", "commit": "3e8edbc457daab8dba087dbba319865a912be7f9" },
   "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
-  "lazy.nvim": { "branch": "main", "commit": "bef521ac89c8d423f9d092e37b58e8af0c099309" },
+  "lazy.nvim": { "branch": "main", "commit": "758bb5de98b805acc5eeed8cdc8ac7f0bc4b0b86" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "9ae570e206360e47d30b4c35a4550c165f4ea7b7" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
-  "mason.nvim": { "branch": "main", "commit": "0f1cb65f436b769733d18b41572f617a1fb41f62" },
+  "mason.nvim": { "branch": "main", "commit": "1b3d60405d1d720b2c4927f19672e9479703b00f" },
   "mini.ai": { "branch": "main", "commit": "55e9b7217f29e62f734e239bfeed5731a065d801" },
   "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
   "mini.comment": { "branch": "main", "commit": "f9f1a646fd3d9df7397aa1b9550a875fe8189eb0" },
@@ -35,24 +33,24 @@
   "modes.nvim": { "branch": "main", "commit": "4035a46aaabe43faf1b54740575af9dd5bb03809" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "7aad1bf3f6b849cbf108e02c55ad4d701cb4d33a" },
   "neocodeium": { "branch": "main", "commit": "666d4f57e8bf0789c58957a9483dd671bc038123" },
-  "neoconf.nvim": { "branch": "main", "commit": "085ab9ea610fb651a5d0ff2b4de04e9457162178" },
+  "neoconf.nvim": { "branch": "main", "commit": "bdd6c7dac2038d6495890dd84f451cf9f7425c50" },
   "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
   "noice.nvim": { "branch": "main", "commit": "09102ca2e9a3e9302119fdaf7a059a034e4a626d" },
   "none-ls.nvim": { "branch": "main", "commit": "f5632db2491fbe02b54f1a321a98548a8ba2bd15" },
   "nui.nvim": { "branch": "main", "commit": "a3597dc88b53489d3fddbddbbd13787355253bb0" },
-  "nvim-cmp": { "branch": "main", "commit": "cd2cf0c124d3de577fb5449746568ee8e601afc8" },
+  "nvim-cmp": { "branch": "main", "commit": "24122371810089d390847d8ba66325c1f1aa64c0" },
   "nvim-dap": { "branch": "master", "commit": "615a1b2046e1eaf7995e0ba8e8a65f344201349d" },
   "nvim-dap-go": { "branch": "main", "commit": "5faf165f5062187320eaf9d177c3c1f647adc22e" },
   "nvim-dap-ui": { "branch": "master", "commit": "5934302d63d1ede12c0b22b6f23518bb183fc972" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "3e8e207513e6ef520894950acd76b79902714103" },
   "nvim-lint": { "branch": "master", "commit": "83ee4952a968d89329e5a49b4648831d98124783" },
-  "nvim-lspconfig": { "branch": "master", "commit": "a3d9395455f2b2e3b50a0b0f37b8b4c23683f44a" },
+  "nvim-lspconfig": { "branch": "master", "commit": "94513a5b246cf32a8f87ca714af50911df63351c" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-nio": { "branch": "master", "commit": "8765cbc4d0c629c8158a5341e1b4305fd93c3a90" },
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "4651801ba37a9407b7257287aec45b6653ffc5e9" },
-  "nvim-treesitter": { "branch": "master", "commit": "6587d8e6942b8d2146d61bab4c4acff9dec5ae59" },
+  "nvim-treesitter": { "branch": "master", "commit": "0d2c80b4d00c8f793e17d2d1d24d4aa5aaa88bc2" },
   "nvim-treesitter-context": { "branch": "master", "commit": "1e52a2c4223c1e7b0def9c76a1f3757d372196c3" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "dfa4178c0cadb44f687603d72ad0908474c28dd9" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
@@ -60,14 +58,14 @@
   "nvim-web-devicons": { "branch": "master", "commit": "5b9067899ee6a2538891573500e8fd6ff008440f" },
   "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
   "plenary.nvim": { "branch": "master", "commit": "08e301982b9a057110ede7a735dd1b5285eb341f" },
-  "rustaceanvim": { "branch": "master", "commit": "187ba89020a6cb9c9bfe39818ef05964473baefc" },
+  "rustaceanvim": { "branch": "master", "commit": "1c3d3a75bebcb16df2a093b147ba498185e4ab17" },
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-frecency.nvim": { "branch": "master", "commit": "6b6565e6584c86ca501bdac485cbdc2ca64556e4" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope.nvim": { "branch": "master", "commit": "fac83a556e7b710dc31433dec727361ca062dbe9" },
   "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
   "tokyonight.nvim": { "branch": "main", "commit": "67afeaf7fd6ebba000633e89f63c31694057edde" },
-  "trouble.nvim": { "branch": "dev", "commit": "b4b9a11b3578d510963f6f681fecb4631ae992c3" },
+  "trouble.nvim": { "branch": "dev", "commit": "f6a3fbfb667c3cccea8df9b7471fb9b31b1235fc" },
   "vim-illuminate": { "branch": "master", "commit": "e522e0dd742a83506db0a72e1ced68c9c130f185" },
   "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index dae653e..1b86901 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,11 +1,13 @@
 return {
+	--[=====[
 	{
-		"p00f/alabaster.nvim",
-		url = "https://git.sr.ht/~p00f/alabaster.nvim",
+		-- "p00f/alabaster.nvim",
+		-- url = "https://git.sr.ht/~p00f/alabaster.nvim",
+		"lsjostro/alabaster.nvim",
 		lazy = false,
+		priority = 1000,
 	},
 
-	--[=====[
 	{
 		"LazyVim/LazyVim",
 		opts = {
@@ -13,6 +15,7 @@ return {
 		},
 	},
 
+
 	{ "echasnovski/mini.colors", version = false },
 
 	{
@@ -32,6 +35,9 @@ return {
 	},
 
   --]=====]
+	--
+	--
+	--
 
 	{
 		"jesseleite/nvim-noirbuddy",
@@ -220,9 +226,13 @@ return {
 				Color.new("TelescopeBorder", "#23fdb6")
 				Group.new("TelescopeTitle", colors.TelescopeBorder)
 				Group.new("telescopeborder", colors.TelescopeBorder)
-				Group.new("telescoperesultsnormal", colors.TelescopeBorder)
 
-				Color.new("TelescopeSelectionBg", "#00401d")
+				Color.new("TelescopeBorder", "#23fdb6")
+
+				Color.new("TelescopeNormal", "#b6c5bd")
+				Group.new("telescoperesultsnormal", colors.TelescopeNormal)
+
+				Color.new("TelescopeSelectionBg", "#003f29")
 				Color.new("TelescopeSelectionFg", "#f6fb2d")
 				Group.new(
 					"TelescopeSelection",

From 84c03de0d479f4678f9832150db4c1a988d5a973 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 13 May 2024 09:30:04 +0200
Subject: [PATCH 255/656] Initial work on light/dark auto modes

---
 .config/nvim/lazy-lock.json                   | 16 ++------
 .config/wezterm/colors/shelman-dark.toml      | 40 +++++++++++++++++++
 .config/wezterm/colors/shelman-light.toml     | 34 ++++++++++++++++
 .config/wezterm/shelman-dark.toml             | 14 -------
 .config/wezterm/shelman-light.toml            | 14 -------
 .config/wezterm/wezterm.lua                   | 33 +++++++++++----
 .../wezterm-dln-dev-secondary.desktop         |  2 +-
 .ssh/config                                   |  3 ++
 .tmux.conf                                    |  1 +
 9 files changed, 108 insertions(+), 49 deletions(-)
 create mode 100644 .config/wezterm/colors/shelman-dark.toml
 create mode 100644 .config/wezterm/colors/shelman-light.toml
 delete mode 100644 .config/wezterm/shelman-dark.toml
 delete mode 100644 .config/wezterm/shelman-light.toml

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 83d5624..5f1a163 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -11,10 +11,9 @@
   "codeium.nvim": { "branch": "main", "commit": "d3b88eb3aa1de6da33d325c196b8a41da2bcc825" },
   "colorbuddy.nvim": { "branch": "master", "commit": "8b968581e5c19d22a861d5f3fe5dbd83394fa681" },
   "conform.nvim": { "branch": "master", "commit": "dc950e5717f1da65b1fcd986b1bbff0d6bd0e2ee" },
-  "crates.nvim": { "branch": "main", "commit": "7d8541ec0e3b30ac2c43864d3ee13a632e1231ed" },
+  "crates.nvim": { "branch": "main", "commit": "cfd14e75867e77fe2f38fae09dcb1a36bc6aa95b" },
   "dashboard-nvim": { "branch": "master", "commit": "a0a78099658c7d4be3714f657b18ca8285d5d106" },
   "dressing.nvim": { "branch": "master", "commit": "5162edb1442a729a885c45455a07e9a89058be2f" },
-  "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
   "friendly-snippets": { "branch": "main", "commit": "3e9a3f5a0cfcef1741e352c37bda4e82e5eb846a" },
   "gitsigns.nvim": { "branch": "main", "commit": "805610a9393fa231f2c2b49cb521bfa413fadb3d" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
@@ -23,7 +22,6 @@
   "lazy.nvim": { "branch": "main", "commit": "758bb5de98b805acc5eeed8cdc8ac7f0bc4b0b86" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "9ae570e206360e47d30b4c35a4550c165f4ea7b7" },
-  "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "1b3d60405d1d720b2c4927f19672e9479703b00f" },
   "mini.ai": { "branch": "main", "commit": "55e9b7217f29e62f734e239bfeed5731a065d801" },
   "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
@@ -39,18 +37,12 @@
   "none-ls.nvim": { "branch": "main", "commit": "f5632db2491fbe02b54f1a321a98548a8ba2bd15" },
   "nui.nvim": { "branch": "main", "commit": "a3597dc88b53489d3fddbddbbd13787355253bb0" },
   "nvim-cmp": { "branch": "main", "commit": "24122371810089d390847d8ba66325c1f1aa64c0" },
-  "nvim-dap": { "branch": "master", "commit": "615a1b2046e1eaf7995e0ba8e8a65f344201349d" },
-  "nvim-dap-go": { "branch": "main", "commit": "5faf165f5062187320eaf9d177c3c1f647adc22e" },
-  "nvim-dap-ui": { "branch": "master", "commit": "5934302d63d1ede12c0b22b6f23518bb183fc972" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "3e8e207513e6ef520894950acd76b79902714103" },
   "nvim-lint": { "branch": "master", "commit": "83ee4952a968d89329e5a49b4648831d98124783" },
   "nvim-lspconfig": { "branch": "master", "commit": "94513a5b246cf32a8f87ca714af50911df63351c" },
-  "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
-  "nvim-nio": { "branch": "master", "commit": "8765cbc4d0c629c8158a5341e1b4305fd93c3a90" },
   "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
   "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
   "nvim-spectre": { "branch": "master", "commit": "4651801ba37a9407b7257287aec45b6653ffc5e9" },
-  "nvim-treesitter": { "branch": "master", "commit": "0d2c80b4d00c8f793e17d2d1d24d4aa5aaa88bc2" },
+  "nvim-treesitter": { "branch": "master", "commit": "d5a1c2b0c8ec5bb377a41c1c414b315d6b3e9432" },
   "nvim-treesitter-context": { "branch": "master", "commit": "1e52a2c4223c1e7b0def9c76a1f3757d372196c3" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "dfa4178c0cadb44f687603d72ad0908474c28dd9" },
   "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
@@ -62,10 +54,10 @@
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-frecency.nvim": { "branch": "master", "commit": "6b6565e6584c86ca501bdac485cbdc2ca64556e4" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "fac83a556e7b710dc31433dec727361ca062dbe9" },
+  "telescope.nvim": { "branch": "master", "commit": "02a60a83961cf9c80e471599171982a31d1cc853" },
   "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
   "tokyonight.nvim": { "branch": "main", "commit": "67afeaf7fd6ebba000633e89f63c31694057edde" },
-  "trouble.nvim": { "branch": "dev", "commit": "f6a3fbfb667c3cccea8df9b7471fb9b31b1235fc" },
+  "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" },
   "vim-illuminate": { "branch": "master", "commit": "e522e0dd742a83506db0a72e1ced68c9c130f185" },
   "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
diff --git a/.config/wezterm/colors/shelman-dark.toml b/.config/wezterm/colors/shelman-dark.toml
new file mode 100644
index 0000000..5679fbb
--- /dev/null
+++ b/.config/wezterm/colors/shelman-dark.toml
@@ -0,0 +1,40 @@
+[metadata]
+name = "Shelman Dark"
+origin_url = ""
+
+[colors]
+ansi = [
+  "#000000",
+  "#ff0035",
+  "#85ff00",
+  "#ffc900",
+  "#00a7ff",
+  "#cb01ff",
+  "#00e0ff",
+  "#f0f0f0",
+]
+
+brights = [
+  "#000000",
+  "#ff8c88",
+  "#baff94",
+  "#ffe090",
+  "#88ccff",
+  "#e38dff",
+  "#97eeff",
+  "#ffffff",
+]
+
+# background = "#000000"
+background = "#0d1117"
+# background = "#11171d"
+#background = "#171e26"
+# background = "#161923"
+# foreground = "#e3e0cd"
+# foreground = "#d3d0bd"
+foreground = "#cccccc"
+cursor_bg = "#00d992"
+cursor_fg = "#000000"
+cursor_border = "#000000"
+selection_bg = "#d7d7d7"
+selection_fg = "#000000"
diff --git a/.config/wezterm/colors/shelman-light.toml b/.config/wezterm/colors/shelman-light.toml
new file mode 100644
index 0000000..04b0e87
--- /dev/null
+++ b/.config/wezterm/colors/shelman-light.toml
@@ -0,0 +1,34 @@
+[metadata]
+name = "Shelman Light"
+origin_url = ""
+
+[colors]
+ansi = [
+  "#000000",
+  "#9e001d",
+  "#306300",
+  "#deae00",
+  "#00669e",
+  "#7d009e",
+  "#008a9e",
+  "#f0f0f0",
+]
+
+brights = [
+  "#000000",
+  "#ff0035",
+  "#509e00",
+  "#ffc900",
+  "#00a7ff",
+  "#cb01ff",
+  "#00e0ff",
+  "#ffffff",
+]
+
+background = "#fefeff"
+foreground = "#2c363c"
+cursor_bg = "#aa0000"
+cursor_fg = "#ffffff"
+cursor_border = "#ffffff"
+selection_bg = "#ffe6a4"
+selection_fg = "#483600"
diff --git a/.config/wezterm/shelman-dark.toml b/.config/wezterm/shelman-dark.toml
deleted file mode 100644
index 24f0f06..0000000
--- a/.config/wezterm/shelman-dark.toml
+++ /dev/null
@@ -1,14 +0,0 @@
-[metadata]
-  name = "Shelman Dark"
-  origin_url = ""
-
-[colors]
-  ansi = ["#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#f0f0f0"]
-  brights = ["#000000", "#ffb4af", "#d2ffba", "#ffebb7", "#b1deff", "#edb5ff", "#bdf4ff", "#ffffff"]
-  background = "#1e2835"
-  foreground = "#e0e0e0"
-  cursor_bg = "#ffcc00"
-  cursor_fg = "#000000"
-  cursor_border = "#ffcc00"
-  selection_bg = "#d7d7d7"
-  selection_fg = "#000000"
diff --git a/.config/wezterm/shelman-light.toml b/.config/wezterm/shelman-light.toml
deleted file mode 100644
index 6b730cb..0000000
--- a/.config/wezterm/shelman-light.toml
+++ /dev/null
@@ -1,14 +0,0 @@
-[metadata]
-  name = "Shelman Light"
-  origin_url = ""
-
-[colors]
-  ansi = ["#000000", "#9e001d", "#509e00", "#ffc900", "#00669e", "#7d009e", "#008a9e", "#f0f0f0"]
-  brights = ["#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#ffffff"]
-  background = "#fefeff"
-  foreground = "#000000"
-  cursor_bg = "#aa0000"
-  cursor_fg = "#ffffff"
-  cursor_border = "#aa0000"
-  selection_bg = "#d7d7d7"
-  selection_fg = "#000000"
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index b967d2b..d6565b0 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -7,15 +7,32 @@ local spawn_dev_nvim = { "ssh", dev_host, "nvim", "--listen", os.getenv("XDG_RUN
 
 wezterm.add_to_config_reload_watch_list(os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm")
 
+local function scheme_for_appearance(appearance)
+	if appearance:find("Dark") then
+		return "Shelman Dark"
+	else
+		return "Shelman Light"
+	end
+end
+
+local function font_for_appearance(appearance)
+	if appearance:find("Dark") then
+		return wezterm.font({
+			family = "IosevkaShelman Nerd Font",
+			weight = "Light",
+		})
+	else
+		return wezterm.font({
+			family = "IosevkaShelman Nerd Font",
+			--	weight = "Regular",
+			--weight = "Regular",
+		})
+	end
+end
+
 return {
-	color_scheme = "Shelman Theme",
-	color_scheme_dirs = {
-		os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm",
-	},
-	font = wezterm.font({
-		family = "IosevkaShelman Nerd Font",
-		weight = "Light",
-	}),
+	color_scheme = scheme_for_appearance(wezterm.gui.get_appearance()),
+	font = font_for_appearance(wezterm.gui.get_appearance()),
 	font_rules = {
 		{
 			italic = true,
diff --git a/.local/share/applications/wezterm-dln-dev-secondary.desktop b/.local/share/applications/wezterm-dln-dev-secondary.desktop
index 39b281b..862fa5a 100644
--- a/.local/share/applications/wezterm-dln-dev-secondary.desktop
+++ b/.local/share/applications/wezterm-dln-dev-secondary.desktop
@@ -7,4 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config window_background_opacity=0.8 --config 'default_prog={"ssh", "-tq", "dln-dev", "--", "tmux", "-u", "new", "-As1", "-t0"}' start --class=org.wezfurlong.wezterm-secondary
+Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-tq", "dln-dev", "--", "tmux", "-u", "new", "-As1", "-t0"}' start --class=org.wezfurlong.wezterm-secondary
diff --git a/.ssh/config b/.ssh/config
index 7596805..be346ee 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -4,6 +4,7 @@ ControlMaster auto
 ControlPath ${XDG_RUNTIME_DIR}/ssh_control:%h:%p:%r
 ControlPersist 1200
 Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
+
 AddressFamily inet
 PreferredAuthentications=publickey
 
@@ -21,7 +22,9 @@ LocalForward localhost:3000 localhost:3000
 LocalForward localhost:8000 localhost:8000
 LocalForward localhost:8080 localhost:8080
 LocalForward localhost:9090 localhost:9090
+LocalForward localhost:10000 localhost:10000
 RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.dln-dev.sock
+RemoteForward localhost:9022 localhost:9022
 
 Host *
 ForwardAgent no
diff --git a/.tmux.conf b/.tmux.conf
index 6ae19c6..6779453 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -24,6 +24,7 @@ set -g history-limit 10000
 #
 set -g default-terminal "wezterm"
 set -ga terminal-features '*:clipboard:ccolor:hyperlinks:osc7:overline:sixel:strikethrough:title:usstyle:RGB'
+set -ga terminal-overrides ',wezterm:cnorm=\E[?12h\E[?25h'
 
 # Key bindings
 bind -n M-Tab if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window'

From 19f00ce5525df0176bf58d34f8f90a8ec55eb438 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 14 May 2024 15:48:18 +0200
Subject: [PATCH 256/656] nvim: hide telescope previews by default

---
 .config/nvim/lua/plugins/editor.lua | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index 687f174..f217eb6 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -24,6 +24,9 @@ return {
 				winblend = 0,
 				wrap_results = true,
 				previewer = false,
+				preview = {
+					hide_on_startup = true,
+				},
 			},
 		},
 	},

From a143f808c7493e7a028ae6f97793f08d13ad1b85 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 14 May 2024 19:57:55 +0200
Subject: [PATCH 257/656] nvim: dashboard prettification

---
 .config/nvim/lua/plugins/ui.lua | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index 390de3b..a52669a 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -20,15 +20,39 @@ hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
 	Group.new("IndentBlanklineContextChar", colors.IndentBlanklineContextChar)
 end)
 
+local logo = [[
+███████ ██   ██ ███████ ██      ███    ███  █████  ███    ██      ██████  ██████   ██████  ██    ██ ██████ 
+██      ██   ██ ██      ██      ████  ████ ██   ██ ████   ██     ██       ██   ██ ██    ██ ██    ██ ██   ██
+███████ ███████ █████   ██      ██ ████ ██ ███████ ██ ██  ██     ██   ███ ██████  ██    ██ ██    ██ ██████ 
+     ██ ██   ██ ██      ██      ██  ██  ██ ██   ██ ██  ██ ██     ██    ██ ██   ██ ██    ██ ██    ██ ██     
+███████ ██   ██ ███████ ███████ ██      ██ ██   ██ ██   ████      ██████  ██   ██  ██████   ██████  ██     
+]]
+
 return {
+	{
+		"nvimdev/dashboard-nvim",
+		opts = {
+			theme = "hyper",
+			config = {
+				header = vim.split(string.rep("\n", 8) .. logo, "\n"),
+				week_header = { enable = false },
+				packages = { enable = false },
+				project = { enable = false },
+				footer = {},
+				shortcut = {},
+			},
+		},
+	},
+
 	{
 		"echasnovski/mini.indentscope",
 		opts = {
 			draw = {
-				delay = 25, -- ms
+				delay = 50, -- ms
 			},
 		},
 	},
+
 	{
 		"akinsho/bufferline.nvim",
 		enabled = false,
@@ -54,7 +78,7 @@ return {
 				},
 			},
 			scope = {
-				enabled = true,
+				enabled = false,
 				show_start = false,
 				char = "│",
 				highlight = {

From 12680213900d341569da97136d4989c7ef879e37 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 23 May 2024 22:09:31 +0200
Subject: [PATCH 258/656] fish: colors

---
 .config/fish/fish_variables | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
index ac55d57..68e6461 100644
--- a/.config/fish/fish_variables
+++ b/.config/fish/fish_variables
@@ -15,6 +15,7 @@ SETUVAR fish_color_history_current:\x2d\x2dbold
 SETUVAR fish_color_host:89b4fa
 SETUVAR fish_color_host_remote:a6e3a1
 SETUVAR fish_color_keyword:f38ba8
+SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
 SETUVAR fish_color_normal:cdd6f4
 SETUVAR fish_color_operator:f5c2e7
 SETUVAR fish_color_option:a6e3a1
@@ -43,3 +44,4 @@ SETUVAR fish_pager_color_selected_completion:\x1d
 SETUVAR fish_pager_color_selected_description:\x1d
 SETUVAR fish_pager_color_selected_prefix:\x1d
 SETUVAR fish_user_paths:/home/dln/\x2ekrew/bin\x1e/home/dln/bin\x1e/home/dln/\x2ecargo/bin
+SETUVAR --export theme:Catppuccin\x20Latte

From 3ab98646c7ecca5c4c13e972337cca6ba863a2ae Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 23 May 2024 22:09:52 +0200
Subject: [PATCH 259/656] helix: dark mode

---
 .config/helix/config.toml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/helix/config.toml b/.config/helix/config.toml
index 99d8310..c789a38 100644
--- a/.config/helix/config.toml
+++ b/.config/helix/config.toml
@@ -1,4 +1,5 @@
 theme = "sumi-e"
+# theme = "github_light"
 
 [editor]
 true-color = true

From b520597a527f91006560f074fef5d260abc72e1f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 23 May 2024 22:10:11 +0200
Subject: [PATCH 260/656] neovim: onward

---
 .config/nvim/lazy-lock.json              | 102 ++++++++++++-----------
 .config/nvim/lua/config/lazy.lua         |   2 +-
 .config/nvim/lua/config/options.lua      |   4 +-
 .config/nvim/lua/plugins/coding.lua      |   6 +-
 .config/nvim/lua/plugins/colorscheme.lua |  28 +------
 .config/nvim/lua/plugins/lsp.lua         |   5 +-
 .config/nvim/lua/plugins/ui.lua          |  12 +++
 7 files changed, 79 insertions(+), 80 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 5f1a163..913a3bc 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,65 +1,69 @@
 {
-  "LazyVim": { "branch": "main", "commit": "cfe87ba894b6c2c961827de45c55b57b1183865c" },
-  "LuaSnip": { "branch": "master", "commit": "b152822e1a4bafb6bdf11a16cc26525cbd95ee00" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "35a0998728380a17b8590447e8207391411c667a" },
+  "LazyVim": { "branch": "main", "commit": "0f6ff53ce336082869314db11e9dfa487cf83292" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "9a5992a881583d886bfbb46631a09f736f0fae50" },
+  "alabaster.nvim": { "branch": "main", "commit": "5bb485d630d50796d4c8c7edc0f0fb9001fccde3" },
   "catppuccin": { "branch": "main", "commit": "d97387aea8264f484bb5d5e74f2182a06c83e0d8" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
-  "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
+  "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
-  "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
   "codeium.nvim": { "branch": "main", "commit": "d3b88eb3aa1de6da33d325c196b8a41da2bcc825" },
   "colorbuddy.nvim": { "branch": "master", "commit": "8b968581e5c19d22a861d5f3fe5dbd83394fa681" },
-  "conform.nvim": { "branch": "master", "commit": "dc950e5717f1da65b1fcd986b1bbff0d6bd0e2ee" },
-  "crates.nvim": { "branch": "main", "commit": "cfd14e75867e77fe2f38fae09dcb1a36bc6aa95b" },
-  "dashboard-nvim": { "branch": "master", "commit": "a0a78099658c7d4be3714f657b18ca8285d5d106" },
-  "dressing.nvim": { "branch": "master", "commit": "5162edb1442a729a885c45455a07e9a89058be2f" },
-  "friendly-snippets": { "branch": "main", "commit": "3e9a3f5a0cfcef1741e352c37bda4e82e5eb846a" },
-  "gitsigns.nvim": { "branch": "main", "commit": "805610a9393fa231f2c2b49cb521bfa413fadb3d" },
+  "conform.nvim": { "branch": "master", "commit": "f3b930db4964d60e255c8f9e37b7f2218dfc08cb" },
+  "crates.nvim": { "branch": "main", "commit": "d556c00d60c9421c913ee54ff690df2a34f6264e" },
+  "dashboard-nvim": { "branch": "master", "commit": "5182c09ac8085dc73b78ad0ea9f5479c9a866fc4" },
+  "dressing.nvim": { "branch": "master", "commit": "3c38ac861e1b8d4077ff46a779cde17330b29f3a" },
+  "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
+  "friendly-snippets": { "branch": "main", "commit": "dd2fd1281d4b22e7b4a5bfafa3e142d958e251f2" },
+  "fzf": { "branch": "master", "commit": "daa602422dc272cbec6b99bc7520262672ad7230" },
+  "fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
+  "gitsigns.nvim": { "branch": "main", "commit": "cdfcd9d39d23c46ae9a040de2c6a8b8bf868746e" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
-  "incline.nvim": { "branch": "main", "commit": "3e8edbc457daab8dba087dbba319865a912be7f9" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
-  "lazy.nvim": { "branch": "main", "commit": "758bb5de98b805acc5eeed8cdc8ac7f0bc4b0b86" },
+  "incline.nvim": { "branch": "main", "commit": "16fc9c073e3ea4175b66ad94375df6d73fc114c0" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "d98f537c3492e87b6dc6c2e3f66ac517528f406f" },
+  "lazy.nvim": { "branch": "main", "commit": "8f19915175395680808de529e4220da8dafc0759" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "9ae570e206360e47d30b4c35a4550c165f4ea7b7" },
-  "mason.nvim": { "branch": "main", "commit": "1b3d60405d1d720b2c4927f19672e9479703b00f" },
-  "mini.ai": { "branch": "main", "commit": "55e9b7217f29e62f734e239bfeed5731a065d801" },
-  "mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
-  "mini.comment": { "branch": "main", "commit": "f9f1a646fd3d9df7397aa1b9550a875fe8189eb0" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "a4caa0d083aab56f6cd5acf2d42331b74614a585" },
+  "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
+  "mason.nvim": { "branch": "main", "commit": "49ff59aded1047a773670651cfa40e76e63c6377" },
+  "mini.ai": { "branch": "main", "commit": "a0262e61f79dfc7bb940d1719c00b0ede042ddd7" },
+  "mini.colors": { "branch": "main", "commit": "be18d56eeaae810e34334c0e9230608f59f71c28" },
   "mini.indentscope": { "branch": "main", "commit": "a8274b6ea2d868198d27bd91a31ed5ea3a6a5744" },
-  "mini.surround": { "branch": "main", "commit": "eb89a88a51655e46a93595204a9251a012918883" },
   "modes.nvim": { "branch": "main", "commit": "4035a46aaabe43faf1b54740575af9dd5bb03809" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "7aad1bf3f6b849cbf108e02c55ad4d701cb4d33a" },
+  "neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
   "neocodeium": { "branch": "main", "commit": "666d4f57e8bf0789c58957a9483dd671bc038123" },
-  "neoconf.nvim": { "branch": "main", "commit": "bdd6c7dac2038d6495890dd84f451cf9f7425c50" },
+  "neoconf.nvim": { "branch": "main", "commit": "9092129e9a42ae26375001bd2e6118f8d57c7f2a" },
   "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
-  "noice.nvim": { "branch": "main", "commit": "09102ca2e9a3e9302119fdaf7a059a034e4a626d" },
-  "none-ls.nvim": { "branch": "main", "commit": "f5632db2491fbe02b54f1a321a98548a8ba2bd15" },
-  "nui.nvim": { "branch": "main", "commit": "a3597dc88b53489d3fddbddbbd13787355253bb0" },
-  "nvim-cmp": { "branch": "main", "commit": "24122371810089d390847d8ba66325c1f1aa64c0" },
-  "nvim-lint": { "branch": "master", "commit": "83ee4952a968d89329e5a49b4648831d98124783" },
-  "nvim-lspconfig": { "branch": "master", "commit": "94513a5b246cf32a8f87ca714af50911df63351c" },
-  "nvim-noirbuddy": { "branch": "master", "commit": "9cb20d2a649153d07649c9c85c092c0533d4883d" },
-  "nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
-  "nvim-spectre": { "branch": "master", "commit": "4651801ba37a9407b7257287aec45b6653ffc5e9" },
-  "nvim-treesitter": { "branch": "master", "commit": "d5a1c2b0c8ec5bb377a41c1c414b315d6b3e9432" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "1e52a2c4223c1e7b0def9c76a1f3757d372196c3" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "dfa4178c0cadb44f687603d72ad0908474c28dd9" },
-  "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "0bdccb9c67a42a5e2d99384dc9bfa29b1451528f" },
-  "nvim-web-devicons": { "branch": "master", "commit": "5b9067899ee6a2538891573500e8fd6ff008440f" },
-  "persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
-  "plenary.nvim": { "branch": "master", "commit": "08e301982b9a057110ede7a735dd1b5285eb341f" },
-  "rustaceanvim": { "branch": "master", "commit": "1c3d3a75bebcb16df2a093b147ba498185e4ab17" },
-  "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
-  "telescope-frecency.nvim": { "branch": "master", "commit": "6b6565e6584c86ca501bdac485cbdc2ca64556e4" },
+  "noice.nvim": { "branch": "main", "commit": "883cd5b638aef23d087c334940112d39ebff0aaa" },
+  "none-ls.nvim": { "branch": "main", "commit": "aa4442a8493934e3354e507a556ea5f670f68491" },
+  "nui.nvim": { "branch": "main", "commit": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae" },
+  "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
+  "nvim-dap": { "branch": "master", "commit": "c65c163daa47e0623dd85d2303fce0c22e52ad01" },
+  "nvim-dap-go": { "branch": "main", "commit": "5faf165f5062187320eaf9d177c3c1f647adc22e" },
+  "nvim-dap-ui": { "branch": "master", "commit": "334cf3038c4756e6ab999cbac67c847fb654c190" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
+  "nvim-lint": { "branch": "master", "commit": "e19842a05aae484957ad20710444757bc0a61d63" },
+  "nvim-lspconfig": { "branch": "master", "commit": "2c1877081b237a643e52ebdebaf36c84a2695639" },
+  "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
+  "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
+  "nvim-noirbuddy": { "branch": "master", "commit": "f3e35f42cf3f08b7351a69bf3a92b7e80a564f30" },
+  "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
+  "nvim-snippets": { "branch": "main", "commit": "b3fe9af9fe2bf735f7d3988ad87f4c2fceadcc2b" },
+  "nvim-spectre": { "branch": "master", "commit": "5690ea46baf08bbc1623980012e14b6239ce582e" },
+  "nvim-treesitter": { "branch": "master", "commit": "298a9dd4f8a0d95b347a7ebd301849d8b0e3917e" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "3557e41418b4a6c5b85d5d64abe94c9c50fa9b14" },
+  "nvim-ts-autotag": { "branch": "main", "commit": "8ae54b90e36ef1fc5267214b30c2cbff71525fe4" },
+  "nvim-web-devicons": { "branch": "master", "commit": "e37bb1feee9e7320c76050a55443fa843b4b6f83" },
+  "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
+  "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
+  "rustaceanvim": { "branch": "master", "commit": "45075f8a47406021870eeab3c953aee7438cb898" },
+  "telescope-frecency.nvim": { "branch": "master", "commit": "328452afcc29187732575842c19172f4d4ed749d" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "02a60a83961cf9c80e471599171982a31d1cc853" },
-  "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
-  "tokyonight.nvim": { "branch": "main", "commit": "67afeaf7fd6ebba000633e89f63c31694057edde" },
-  "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" },
-  "vim-illuminate": { "branch": "master", "commit": "e522e0dd742a83506db0a72e1ced68c9c130f185" },
-  "vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
+  "telescope.nvim": { "branch": "master", "commit": "5665d93988acfbb0747bdbf4f4cb583bcebc8930" },
+  "todo-comments.nvim": { "branch": "main", "commit": "e1549807066947818113a7d7ed48f637e49620d3" },
+  "tokyonight.nvim": { "branch": "main", "commit": "b9b494fa7f7bbf2fe0747b47fa290fb7a4eddcc7" },
+  "trouble.nvim": { "branch": "dev", "commit": "e2185bf6e63ef9bd75f1819f43846e2b0f10953b" },
+  "ts-comments.nvim": { "branch": "main", "commit": "8ea22850c40b4aef481a6ebdd74c928ed2b20427" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
-  "yanky.nvim": { "branch": "main", "commit": "7c5cbf0122ff2dfbb6a92f14885894f65949cc8b" }
+  "yanky.nvim": { "branch": "main", "commit": "8756d19923ad871eb95f543a8a98c026b4a8494f" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 1fc7c73..72fd4cb 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -35,7 +35,7 @@ require("lazy").setup({
 		version = false, -- always use the latest git commit
 		-- version = "*", -- try installing the latest stable version for plugins that support semver
 	},
-	-- install = { colorscheme = { "eyes" } },
+	install = { colorscheme = { "default" } },
 	checker = { enabled = false }, -- automatically check for plugin updates
 	performance = {
 		rtp = {
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 5545fc7..5a4776b 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -13,9 +13,9 @@ vim.o.autochdir = true
 vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
 vim.o.scrolloff = 7
 vim.o.splitkeep = "screen"
-vim.o.updatetime = 250
+vim.o.updatetime = 1500
 vim.o.timeout = true
-vim.o.timeoutlen = 150
+vim.o.timeoutlen = 15
 
 -- additional filetypes
 vim.filetype.add({
diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
index bbabbc5..46b8f6b 100644
--- a/.config/nvim/lua/plugins/coding.lua
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -12,9 +12,9 @@ return {
 			table.insert(opts.sources, { name = "emoji" })
 
 			opts.view = { docs = { auto_open = false }, entries = { follow_cursor = true } }
-			opts.completion = {
-				autocomplete = false,
-			}
+			-- opts.completion = {
+			-- 	autocomplete = false,
+			-- }
 
 			local winhighlight =
 				"Normal:NoiceCmdlinePopupTitle,FloatBorder:NoiceCmdlinePopupBorder,CursorLine:PMenuSel,Search:Search"
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 1b86901..85158a9 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,5 +1,6 @@
 return {
-	--[=====[
+	{ "echasnovski/mini.colors", version = false },
+
 	{
 		-- "p00f/alabaster.nvim",
 		-- url = "https://git.sr.ht/~p00f/alabaster.nvim",
@@ -8,6 +9,7 @@ return {
 		priority = 1000,
 	},
 
+	--[=====[
 	{
 		"LazyVim/LazyVim",
 		opts = {
@@ -15,29 +17,7 @@ return {
 		},
 	},
 
-
-	{ "echasnovski/mini.colors", version = false },
-
-	{
-		"shelmangroup/sumi-e",
-		dir = "/home/dln/src/git.shelman.io/shelmangroup/sumi-e.nvim",
-		lazy = false,
-		dependencies = {
-			{ "tjdevries/colorbuddy.nvim" },
-		},
-	},
-
-	{
-		"LazyVim/LazyVim",
-		opts = {
-			colorscheme = "sumi-e",
-		},
-	},
-
-  --]=====]
-	--
-	--
-	--
+	--]=====]
 
 	{
 		"jesseleite/nvim-noirbuddy",
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index cc5441a..93920d8 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -2,7 +2,10 @@ return {
 	{
 		"neovim/nvim-lspconfig",
 		opts = {
-			inlay_hints = { enabled = true },
+			inlay_hints = { enabled = false },
+			-- codelens = {
+			-- 	enabled = true,
+			-- },
 			servers = {
 				rust_analyzer = {
 					mason = false,
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index a52669a..3105269 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -158,4 +158,16 @@ return {
 		"nvim-lualine/lualine.nvim",
 		enabled = false,
 	},
+
+	{
+		"linrongbin16/fzfx.nvim",
+		dependencies = { "nvim-tree/nvim-web-devicons", "junegunn/fzf" },
+
+		-- specify version to avoid break changes
+		version = "v5.*",
+
+		config = function()
+			require("fzfx").setup()
+		end,
+	},
 }

From af200b99edf12894994690aaaf734c46cf4f5c40 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 23 May 2024 22:53:22 +0200
Subject: [PATCH 261/656] neovim: <esc> should exit telescope immediately

---
 .config/nvim/lua/plugins/editor.lua | 55 +++++++++++++++++------------
 1 file changed, 33 insertions(+), 22 deletions(-)

diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index f217eb6..c497c0c 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -5,29 +5,40 @@ return {
 	},
 	{
 		"telescope.nvim",
-		opts = {
-			defaults = {
-				layout_strategy = "horizontal",
-				layout_config = {
-					anchor = "top",
-					horizontal = {
-						prompt_position = "top",
-						mirror = false,
-						preview_width = 0.4,
-						-- preview_height = 0.5,
+		config = function()
+			local telescope = require("telescope")
+			local actions = require("telescope.actions")
+
+			telescope.setup({
+				defaults = {
+					layout_strategy = "horizontal",
+					layout_config = {
+						anchor = "top",
+						horizontal = {
+							prompt_position = "top",
+							mirror = false,
+							preview_width = 0.4,
+							-- preview_height = 0.5,
+						},
+						width = 0.9,
+						height = 0.9,
+						preview_cutoff = 10,
+					},
+					mappings = {
+						i = {
+							["<esc>"] = actions.close, -- <Esc> close popup
+							["<C-u>"] = false, -- <C-u> clear prompt
+						},
+					},
+					sorting_strategy = "ascending",
+					winblend = 0,
+					wrap_results = true,
+					previewer = false,
+					preview = {
+						hide_on_startup = true,
 					},
-					width = 0.9,
-					height = 0.9,
-					preview_cutoff = 10,
 				},
-				sorting_strategy = "ascending",
-				winblend = 0,
-				wrap_results = true,
-				previewer = false,
-				preview = {
-					hide_on_startup = true,
-				},
-			},
-		},
+			})
+		end,
 	},
 }

From 6b83e85aa2d92be73711fae30f92ed36f8508189 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 24 May 2024 16:15:55 +0200
Subject: [PATCH 262/656] fish: add broot for jumping directory

---
 .config/broot/conf.hjson                      | 260 ++++++++++++++++++
 .config/broot/launcher/bash/br                |   1 +
 .config/broot/launcher/installed-v4           |   4 +
 .config/broot/select.toml                     |   6 +
 .../broot/skins/catppuccin-macchiato.hjson    | 171 ++++++++++++
 .config/broot/skins/catppuccin-mocha.hjson    | 171 ++++++++++++
 .config/broot/skins/dark-blue.hjson           | 116 ++++++++
 .config/broot/skins/dark-gruvbox.hjson        |  88 ++++++
 .config/broot/skins/dark-orange.hjson         | 111 ++++++++
 .config/broot/skins/native-16.hjson           | 132 +++++++++
 .config/broot/skins/solarized-dark.hjson      |  66 +++++
 .config/broot/skins/solarized-light.hjson     | 118 ++++++++
 .config/broot/skins/white.hjson               |  84 ++++++
 .config/broot/verbs.hjson                     | 168 +++++++++++
 .config/fish/config.fish                      |   7 +-
 .config/nvim/lazy-lock.json                   |  15 +-
 .config/nvim/lua/plugins/editor.lua           |   1 +
 .tmux.conf                                    |   5 -
 18 files changed, 1511 insertions(+), 13 deletions(-)
 create mode 100644 .config/broot/conf.hjson
 create mode 120000 .config/broot/launcher/bash/br
 create mode 100644 .config/broot/launcher/installed-v4
 create mode 100644 .config/broot/select.toml
 create mode 100644 .config/broot/skins/catppuccin-macchiato.hjson
 create mode 100644 .config/broot/skins/catppuccin-mocha.hjson
 create mode 100644 .config/broot/skins/dark-blue.hjson
 create mode 100644 .config/broot/skins/dark-gruvbox.hjson
 create mode 100644 .config/broot/skins/dark-orange.hjson
 create mode 100644 .config/broot/skins/native-16.hjson
 create mode 100644 .config/broot/skins/solarized-dark.hjson
 create mode 100644 .config/broot/skins/solarized-light.hjson
 create mode 100644 .config/broot/skins/white.hjson
 create mode 100644 .config/broot/verbs.hjson

diff --git a/.config/broot/conf.hjson b/.config/broot/conf.hjson
new file mode 100644
index 0000000..9e91548
--- /dev/null
+++ b/.config/broot/conf.hjson
@@ -0,0 +1,260 @@
+###############################################################
+# This configuration file lets you
+# - define new commands
+# - change the shortcut or triggering keys of built-in verbs
+# - change the colors
+# - set default values for flags
+# - set special behaviors on specific paths
+# - and more...
+#
+# Configuration documentation is available at
+#     https://dystroy.org/broot
+#
+# This file's format is Hjson ( https://hjson.github.io/ ). Some
+# properties are commented out. To enable them, remove the `#`.
+#
+###############################################################
+
+###############################################################
+# Default flags
+# You can set up flags you want broot to start with by
+# default, for example `default_flags="-ihp"` if you usually want
+# to see hidden and gitignored files and the permissions (then
+# if you don't want the hidden files at a specific launch,
+# you can launch broot with `br -H`).
+# A popular flag is the `g` one which displays git related info.
+#
+# default_flags:
+
+###############################################################
+# Terminal's title
+# If you want the terminal's title to be updated when you change
+# directory, set a terminal_title pattern by uncommenting one of
+# the examples below and tuning it to your taste.
+#
+# terminal_title: "[broot] {git-name}"
+# terminal_title: "{file} 🐄"
+# terminal_title: "-= {file-name} =-"
+
+###############################################################
+# Date/Time format
+# If you want to change the format for date/time, uncomment the
+# following line and change it according to
+# https://docs.rs/chrono/0.4.11/chrono/format/strftime/index.html
+#
+# date_time_format: %Y/%m/%d %R
+
+###############################################################
+# uncomment to activate modal mode
+#
+# (you really should read https://dystroy.org/broot/modal/
+# before as it may not suit everybody even among vim users)
+#
+# You may start either in 'command' mode, or in 'input' mode
+#
+# modal: true
+# initial_mode: command
+
+###############################################################
+# Whether to mark the selected line with a triangle
+#
+show_selection_mark: true
+
+###############################################################
+# Column order
+# cols_order, if specified, must be a permutation of the following
+# array. You should keep the name column at the end as it has a
+# variable length.
+#
+# cols_order: [
+#     mark
+#     git
+#     size
+#     permission
+#     date
+#     count
+#     branch
+#     name
+# ]
+
+###############################################################
+# True Colors
+# If this parameter isn't set, broot tries to automatically
+# determine whether true colors (24 bits) are available.
+# As this process is unreliable, you may uncomment this setting
+# and set it to false or true if you notice the colors in
+# previewed images are too off.
+#
+# true_colors: false
+
+###############################################################
+# Icons
+# If you want to display icons in broot, uncomment this line
+# (see https://dystroy.org/broot/icons for installation and
+# troubleshooting)
+#
+# icon_theme: vscode
+icon_theme: nerdfont
+
+###############################################################
+# Special paths
+# If some paths must be handled specially, uncomment (and change
+# this section as per the examples)
+# Setting "list":"never" on a dir prevents broot from looking at its 
+#  children when searching, unless the dir is the selected root.
+# Setting "sum":"never" on a dir prevents broot from looking at its
+#  children when computing the total size and count of files.
+# Setting "show":"always" makes a file visible even if its name
+#  starts with a dot.
+# Setting "list":"always" may be useful on a link to a directory
+#  (they're otherwise not entered by broot unless selected)
+#
+special_paths: {
+    "/media" : {
+        list: "never"
+        sum: "never"
+    }
+    "~/.config": { "show": "always" }
+    "trav": {
+        show: always
+        list: "always",
+        sum: "never"
+    }
+    # "~/useless": { "show": "never" }
+    # "~/my-link-I-want-to-explore": { "list": "always" }
+}
+
+###############################################################
+# Quit on last cancel
+# You can usually cancel the last state change on escape.
+# If you want the escape key to quit broot when there's nothing
+# to cancel (for example when you just opened broot), uncomment
+# this parameter
+# 
+# quit_on_last_cancel: true
+
+quit_on_last_cancel: true
+
+###############################################################
+# Search modes
+#
+# broot allows many search modes.
+# A search mode is defined by
+# - the way to search: 'fuzzy', 'exact', 'regex', or 'tokens'.
+# - where to search: file 'name', 'path', or file 'content'
+# A search pattern may for example be "fuzzy path" (default),
+# "regex content" or "exact path".
+#
+# The search mode is selected from its prefix. For example, if
+# you type "abc", the default mode is "fuzzy path". If you type
+# "/abc", the mode is "regex path". If you type "rn/abc", the mode
+# is "regex name".
+#
+# This mapping may be modified. You may want to dedicate the
+# empty prefix (the one which doesn't need a '/') to the
+# search mode you use most often. The example below makes it
+# easy to search on name rather than on the subpath.
+#
+# More information on
+#  https://dystroy.org/broot/input/#the-filtering-pattern
+#
+# search_modes: {
+#     <empty>: fuzzy name
+#     /: regex name
+# }
+
+###############################################################
+# File Extension Colors
+#
+# uncomment and modify the next section if you want to color
+# file name depending on their extension
+#
+# ext_colors: {
+#     png: rgb(255, 128, 75)
+#     rs: yellow
+# }
+
+###############################################################
+# Max file size for content search
+#
+# Bigger files are ignored when searching their content. You
+# can specify this size either in ISO units (eg 5GB) or in
+# the old binary units (eg 44Kib)
+content_search_max_file_size: 10MB
+
+###############################################################
+# Max Panels Count
+#
+# Change this if you sometimes want to have more than 2 panels
+# open
+# max_panels_count: 2
+
+###############################################################
+# Update work dir
+#
+# By default, broot process' work dir is kept in sync with the
+# current's panel root. If you want to keep it unchanged,
+# uncomment this setting
+#
+# update_work_dir: false
+
+###############################################################
+# Kitty Keyboard extension
+#
+# If you want to use advanced keyboard shortcuts in Kitty
+# compatible terminals (Kitty, Wezterm), set this to true.
+# 
+# This makes it possible to use shortcuts like 'space-n', 
+# 'ctrl-alt-a-b', 'shift-space', etc.
+#
+enable_kitty_keyboard: true
+
+###############################################################
+# lines around matching line in filtered preview
+#
+# When searching the content of a file, you can have either
+# only the matching lines displayed, or some of the surrounding
+# ones too.
+#
+lines_before_match_in_preview: 1
+lines_after_match_in_preview: 1
+
+###############################################################
+# Imports
+#
+# While it's possible to have all configuration in one file,
+# it's more convenient to split it in several ones.
+# Importing also allows to set a condition on the terminal's
+# color, which makes it possible to have a different skin 
+# chosen when your terminal has a light background and when
+# it has a light one.
+imports: [
+
+    # Verbs are better configured in verbs.hjson. But you
+    # can also add another files for your personal verbs
+    verbs.hjson
+
+    # This file contains the skin to use when the terminal
+    # is dark (or when this couldn't be determined)
+    {
+        luma: [
+            dark
+            unknown
+        ]
+        # (un)comment to choose your preferred skin
+        file: skins/dark-blue.hjson
+        //file: skins/catppuccin-macchiato.hjson
+        //file: skins/catppuccin-mocha.hjson
+        //file: skins/dark-gruvbox.hjson
+        //file: skins/dark-orange.hjson
+        //file: skins/solarized-dark.hjson
+    }
+
+    # This skin is imported when your terminal is light
+    {
+        luma: light
+        # (un)comment to choose your preferred skin
+        //file: skins/solarized-light.hjson
+        file: skins/white.hjson
+    }
+]
diff --git a/.config/broot/launcher/bash/br b/.config/broot/launcher/bash/br
new file mode 120000
index 0000000..c577ca3
--- /dev/null
+++ b/.config/broot/launcher/bash/br
@@ -0,0 +1 @@
+/home/dln/.local/share/broot/launcher/bash/1
\ No newline at end of file
diff --git a/.config/broot/launcher/installed-v4 b/.config/broot/launcher/installed-v4
new file mode 100644
index 0000000..3f026af
--- /dev/null
+++ b/.config/broot/launcher/installed-v4
@@ -0,0 +1,4 @@
+
+This file tells broot the installation of the br function was done.
+If there's a problem and you want to install it again run
+    broot -- install
diff --git a/.config/broot/select.toml b/.config/broot/select.toml
new file mode 100644
index 0000000..2b2a477
--- /dev/null
+++ b/.config/broot/select.toml
@@ -0,0 +1,6 @@
+[[verbs]]
+invocation = "ok"
+key = "enter"
+leave_broot = true
+execution = ":print_path"
+apply_to = "directory"
diff --git a/.config/broot/skins/catppuccin-macchiato.hjson b/.config/broot/skins/catppuccin-macchiato.hjson
new file mode 100644
index 0000000..21a3bf1
--- /dev/null
+++ b/.config/broot/skins/catppuccin-macchiato.hjson
@@ -0,0 +1,171 @@
+###############################################################
+# A skin for a terminal with a dark background
+# This skin uses RGB values so won't work for some
+# terminals.
+#
+# Created by Majixed
+# Based on the catppuccin-mocha theme by A. Taha Baki <atahabaki@pm.me>
+#
+# Doc at https://dystroy.org/broot/skins/
+###############################################################
+
+skin: {
+    input: rgb(202, 211, 245) none
+    # fg:none bg:$surface2
+    selected_line: none rgb(91, 96, 120) 
+    # fg:$text bg:none
+    default: rgb(202, 211, 245) none
+    # fg:$overlay0 bg:none
+    tree: rgb(110, 115, 141) none
+    # fg:$sapphire bg:none
+    parent: rgb(125, 196, 228) none
+    file: none none
+#
+### PERMISSIONS
+#
+    perm__: rgb(184, 192, 224) none
+    # $peach
+    perm_r: rgb(245, 169, 127) none
+    # $maroon
+    perm_w: rgb(238, 153, 160) none
+    # $green
+    perm_x: rgb(166, 218, 149) none
+    # $teal
+    owner: rgb(139, 213, 202) none
+    # $sky
+    group: rgb(145, 215, 227) none
+#
+### DATE
+#
+    # $subtext1
+    dates: rgb(184, 192, 224) none
+#
+### DIRECTORY
+#
+    # $lavender
+    directory: rgb(183, 189, 248) none Bold
+    # $green
+    exe: rgb(166, 218, 149) none
+    # $yellow
+    link: rgb(238, 212, 159) none
+    # $subtext0
+    pruning: rgb(165, 173, 203) none Italic
+#
+### PREVIEW
+#
+    # fg:$text bg:$mantle
+    preview_title: rgb(202, 211, 245) rgb(30, 32, 48)
+    # fg:$text bg:$mantle
+    preview: rgb(202, 211, 245) rgb(30, 32, 48)
+    # fg:$overlay0
+    preview_line_number: rgb(110, 115, 141) none
+    # fg:$overlay0
+    preview_separator: rgb(110, 115, 141) none
+#
+### MATCH
+#
+    char_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
+    content_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
+    preview_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
+
+    # children count
+    # fg:$yellow bg:none
+    count: rgb(238, 212, 159) none
+    sparse: rgb(237, 135, 150) none
+    content_extract: rgb(237, 135, 150) none Italic
+#
+### GIT
+#
+    git_branch: rgb(245, 169, 127) none
+    git_insertions: rgb(245, 169, 127) none
+    git_deletions: rgb(245, 169, 127) none
+    git_status_current: rgb(245, 169, 127) none
+    git_status_modified: rgb(245, 169, 127) none
+    git_status_new: rgb(245, 169, 127) none Bold
+    git_status_ignored: rgb(245, 169, 127) none
+    git_status_conflicted: rgb(245, 169, 127) none
+    git_status_other: rgb(245, 169, 127) none
+    staging_area_title: rgb(245, 169, 127) none
+#
+### FLAG
+#
+    flag_label: rgb(237, 135, 150) none
+    flag_value: rgb(237, 135, 150) none Bold
+#
+### STATUS
+#
+    # fg:none #bg:$mantle
+    status_normal: none rgb(30, 32, 48)
+    # fg:$red bg:$mantle
+    status_italic: rgb(237, 135, 150) rgb(30, 32, 48) Italic
+    # fg:$maroon bg:$mantle
+    status_bold: rgb(238, 153, 160) rgb(30, 32, 48) Bold
+    # fg:$maroon bg:$mantle
+    status_ellipsis: rgb(238, 153, 160) rgb(30, 32, 48) Bold
+    # fg:$text bg:$red
+    status_error: rgb(202, 211, 245) rgb(237, 135, 150)
+    # fg:$maroon bg:$mantle
+    status_job: rgb(238, 153, 160) rgb(40, 38, 37)
+    # fg:$maroon bg:$mantle
+    status_code: rgb(238, 153, 160) rgb(30, 32, 48) Italic
+    # fg:$maroon bg:$mantle
+    mode_command_mark: rgb(238, 153, 160) rgb(30, 32, 48) Bold
+#
+### HELP
+#
+    # fg:$text
+    help_paragraph: rgb(202, 211, 245) none
+    # fg:$red
+    help_headers: rgb(237, 135, 150) none Bold
+    # fg:$peach
+    help_bold: rgb(245, 169, 127) none Bold
+    # fg:$yellow
+    help_italic: rgb(238, 212, 159) none Italic
+    # fg:green bg:$surface0
+    help_code: rgb(166, 218, 149) rgb(54, 58, 79)
+    # fg:$overlay0
+    help_table_border: rgb(110, 115, 141) none
+#
+### HEX
+#
+    # fg:$text
+    hex_null: rgb(202, 211, 245) none
+    # fg:$peach
+    hex_ascii_graphic: rgb(245, 169, 127) none
+    # fg:$green
+    hex_ascii_whitespace: rgb(166, 218, 149) none
+    # fg: teal
+    hex_ascii_other: rgb(139, 213, 202) none
+    # fg: red
+    hex_non_ascii: rgb(237, 135, 150) none
+
+    # fg:$text bg:$red
+    file_error: rgb(243, 60, 44) none
+#
+### PURPOSE
+#
+    purpose_normal: none none
+    purpose_italic: rgb(169, 90, 127) none Italic
+    purpose_bold: rgb(169, 90, 127) none Bold
+    purpose_ellipsis: none none
+#
+### SCROLLBAR
+#
+    # fg:$surface0
+    scrollbar_track: rgb(54, 58, 79) none
+    # fg:$surface1
+    scrollbar_thumb: rgb(91, 96, 120) none
+#
+### GOODTOBAD
+#
+    good_to_bad_0: rgb(166, 218, 149) none
+    good_to_bad_1: rgb(139, 213, 202) none
+    good_to_bad_2: rgb(145, 215, 227) none
+    good_to_bad_3: rgb(125, 196, 228) none
+    good_to_bad_4: rgb(138, 173, 244) none
+    good_to_bad_5: rgb(183, 189, 248) none
+    good_to_bad_6: rgb(198, 160, 246) none
+    good_to_bad_7: rgb(245, 169, 127) none
+    good_to_bad_8: rgb(238, 153, 160) none
+    good_to_bad_9: rgb(237, 135, 150) none
+}
diff --git a/.config/broot/skins/catppuccin-mocha.hjson b/.config/broot/skins/catppuccin-mocha.hjson
new file mode 100644
index 0000000..6ac1b92
--- /dev/null
+++ b/.config/broot/skins/catppuccin-mocha.hjson
@@ -0,0 +1,171 @@
+###############################################################
+# A skin for a terminal with a dark background
+# This skin uses RGB values so won't work for some
+# terminals.
+#
+# Created by A. Taha Baki <atahabaki@pm.me>
+# Based on the built-in gruvbox theme.
+#
+# Doc at https://dystroy.org/broot/skins/
+###############################################################
+
+skin: {
+    input: rgb(205, 214, 244) none
+    # fg:none bg:$surface2
+    selected_line: none rgb(88, 91, 112) 
+    # fg:$text bg:none
+    default: rgb(205, 214, 244) none
+    # fg:$overlay0 bg:none
+    tree: rgb(108, 112, 134) none
+    # fg:$sapphire bg:none
+    parent: rgb(116, 199, 236) none
+    file: none none
+#
+### PERMISSIONS
+#
+    perm__: rgb(186, 194, 222) none
+    # $peach
+    perm_r: rgb(250, 179, 135) none
+    # $maroon
+    perm_w: rgb(235, 160, 172) none
+    # $green
+    perm_x: rgb(166, 227, 161) none
+    # $teal
+    owner: rgb(148, 226, 213) none
+    # $sky
+    group: rgb(137, 220, 235) none
+#
+### DATE
+#
+    # $subtext1
+    dates: rgb(186, 194, 222) none
+#
+### DIRECTORY
+#
+    # $lavender
+    directory: rgb(180, 190, 254) none Bold
+    # $green
+    exe: rgb(166, 227, 161) none
+    # $yellow
+    link: rgb(249, 226, 175) none
+    # $subtext0
+    pruning: rgb(166, 173, 200) none Italic
+#
+### PREVIEW
+#
+    # fg:$text bg:$mantle
+    preview_title: rgb(205, 214, 244) rgb(24, 24, 37)
+    # fg:$text bg:$mantle
+    preview: rgb(205, 214, 244) rgb(24, 24, 37)
+    # fg:$overlay0
+    preview_line_number: rgb(108, 112, 134) none
+    # fg:$overlay0
+    preview_separator: rgb(108, 112, 134) none
+#
+### MATCH
+#
+    char_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
+    content_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
+    preview_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
+
+    # children count
+    # fg:$yellow bg:none
+    count: rgb(249, 226, 175) none
+    sparse: rgb(243, 139, 168) none
+    content_extract: rgb(243, 139, 168) none Italic
+#
+### GIT
+#
+    git_branch: rgb(250, 179, 135) none
+    git_insertions: rgb(250, 179, 135) none
+    git_deletions: rgb(250, 179, 135) none
+    git_status_current: rgb(250, 179, 135) none
+    git_status_modified: rgb(250, 179, 135) none
+    git_status_new: rgb(250, 179, 135) none Bold
+    git_status_ignored: rgb(250, 179, 135) none
+    git_status_conflicted: rgb(250, 179, 135) none
+    git_status_other: rgb(250, 179, 135) none
+    staging_area_title: rgb(250, 179, 135) none
+#
+### FLAG
+#
+    flag_label: rgb(243, 139, 168) none
+    flag_value: rgb(243, 139, 168) none Bold
+#
+### STATUS
+#
+    # fg:none #bg:$mantle
+    status_normal: none rgb(24, 24, 37)
+    # fg:$red bg:$mantle
+    status_italic: rgb(243, 139, 168) rgb(24, 24, 37) Italic
+    # fg:$maroon bg:$mantle
+    status_bold: rgb(235, 160, 172) rgb(24, 24, 37) Bold
+    # fg:$maroon bg:$mantle
+    status_ellipsis: rgb(235, 160, 172) rgb(24, 24, 37) Bold
+    # fg:$text bg:$red
+    status_error: rgb(205, 214, 244) rgb(243, 139, 168)
+    # fg:$maroon bg:$mantle
+    status_job: rgb(235, 160, 172) rgb(40, 38, 37)
+    # fg:$maroon bg:$mantle
+    status_code: rgb(235, 160, 172) rgb(24, 24, 37) Italic
+    # fg:$maroon bg:$mantle
+    mode_command_mark: rgb(235, 160, 172) rgb(24, 24, 37) Bold
+#
+### HELP
+#
+    # fg:$text
+    help_paragraph: rgb(205, 214, 244) none
+    # fg:$red
+    help_headers: rgb(243, 139, 168) none Bold
+    # fg:$peach
+    help_bold: rgb(250, 179, 135) none Bold
+    # fg:$yellow
+    help_italic: rgb(249, 226, 175) none Italic
+    # fg:green bg:$surface0
+    help_code: rgb(166, 227, 161) rgb(49, 50, 68)
+    # fg:$overlay0
+    help_table_border: rgb(108, 112, 134) none
+#
+### HEX
+#
+    # fg:$text
+    hex_null: rgb(205, 214, 244) none
+    # fg:$peach
+    hex_ascii_graphic: rgb(250, 179, 135) none
+    # fg:$green
+    hex_ascii_whitespace: rgb(166, 227, 161) none
+    # fg: teal
+    hex_ascii_other: rgb(148, 226, 213) none
+    # fg: red
+    hex_non_ascii: rgb(243, 139, 168) none
+
+    # fg:$text bg:$red
+    file_error: rgb(251, 73, 52) none
+#
+### PURPOSE
+#
+    purpose_normal: none none
+    purpose_italic: rgb(177, 98, 134) none Italic
+    purpose_bold: rgb(177, 98, 134) none Bold
+    purpose_ellipsis: none none
+#
+### SCROLLBAR
+#
+    # fg:$surface0
+    scrollbar_track: rgb(49, 50, 68) none
+    # fg:$surface1
+    scrollbar_thumb: rgb(88, 91, 112) none
+#
+### GOODTOBAD
+#
+    good_to_bad_0: rgb(166, 227, 161) none
+    good_to_bad_1: rgb(148, 226, 213) none
+    good_to_bad_2: rgb(137, 220, 235) none
+    good_to_bad_3: rgb(116, 199, 236) none
+    good_to_bad_4: rgb(137, 180, 250) none
+    good_to_bad_5: rgb(180, 190, 254) none
+    good_to_bad_6: rgb(203, 166, 247) none
+    good_to_bad_7: rgb(250, 179, 135) none
+    good_to_bad_8: rgb(235, 160, 172) none
+    good_to_bad_9: rgb(243, 139, 168) none
+}
diff --git a/.config/broot/skins/dark-blue.hjson b/.config/broot/skins/dark-blue.hjson
new file mode 100644
index 0000000..7dbc7f4
--- /dev/null
+++ b/.config/broot/skins/dark-blue.hjson
@@ -0,0 +1,116 @@
+###############################################################
+# A skin for a terminal with a dark background
+#
+# To create your own skin, copy this file, change the entries
+# and import your skin file from the main conf file (look
+# for "imports")
+#
+# Doc at https://dystroy.org/broot/skins/
+###############################################################
+
+###############################################################
+# Skin
+# If you want to change the colors of broot,
+# uncomment the following block and start messing
+# with the various values.
+# A skin entry value is made of two parts separated with a '/':
+# The first one is the skin for the active panel.
+# The second one, optional, is the skin for non active panels.
+# You may find explanations and other skins on
+#  https://dystroy.org/broot/skins
+###############################################################
+skin: {
+    default: gray(22) none  / gray(20) none 
+    tree: gray(8) None  / gray(4) None 
+    parent: gray(18) None  / gray(13) None 
+    file: gray(22) None  / gray(15) None 
+    directory: ansi(110) None bold / ansi(110) None 
+    exe: Cyan None 
+    link: Magenta None 
+    pruning: gray(12) None Italic
+    perm__: gray(5) None 
+    perm_r: ansi(94) None 
+    perm_w: ansi(132) None 
+    perm_x: ansi(65) None 
+    owner: ansi(138) None 
+    group: ansi(131) None 
+    count: ansi(138) gray(4) 
+    dates: ansi(66) None 
+    sparse: ansi(214) None 
+    content_extract: ansi(29) None 
+    content_match: ansi(34) None 
+    device_id_major: ansi(138) None 
+    device_id_sep: ansi(102) None 
+    device_id_minor: ansi(138) None 
+    git_branch: ansi(178) None 
+    git_insertions: ansi(28) None 
+    git_deletions: ansi(160) None 
+    git_status_current: gray(5) None 
+    git_status_modified: ansi(28) None 
+    git_status_new: ansi(94) None bold
+    git_status_ignored: gray(17) None 
+    git_status_conflicted: ansi(88) None 
+    git_status_other: ansi(88) None 
+    selected_line: None gray(6)  / None gray(4) 
+    char_match: Green None 
+    file_error: Red None 
+    flag_label: gray(15) gray(2) 
+    flag_value: ansi(178) gray(2) bold
+    input: White gray(2)  / gray(15) None 
+    status_error: gray(22) ansi(124) 
+    status_job: ansi(220) gray(5) 
+    status_normal: gray(20) gray(4)  / gray(2) gray(2) 
+    status_italic: ansi(178) gray(4)  / gray(2) gray(2) 
+    status_bold: ansi(178) gray(4) bold / gray(2) gray(2) 
+    status_code: ansi(229) gray(4)  / gray(2) gray(2) 
+    status_ellipsis: gray(19) gray(1)  / gray(2) gray(2) 
+    purpose_normal: gray(20) gray(2) 
+    purpose_italic: ansi(178) gray(2) 
+    purpose_bold: ansi(178) gray(2) bold
+    purpose_ellipsis: gray(20) gray(2) 
+    scrollbar_track: gray(7) None  / gray(4) None 
+    scrollbar_thumb: gray(22) None  / gray(14) None 
+    help_paragraph: gray(20) None 
+    help_bold: ansi(178) None bold
+    help_italic: ansi(229) None 
+    help_code: gray(21) gray(3) 
+    help_headers: ansi(178) None 
+    help_table_border: ansi(239) None 
+    preview: gray(20) gray(1)  / gray(18) gray(2) 
+    preview_title: gray(23) gray(2)  / gray(21) gray(2) 
+    preview_line_number: gray(12) gray(3) 
+    preview_separator: gray(5) None
+    preview_match: None ansi(29) 
+    hex_null: gray(8) None 
+    hex_ascii_graphic: gray(18) None 
+    hex_ascii_whitespace: ansi(143) None 
+    hex_ascii_other: ansi(215) None 
+    hex_non_ascii: ansi(167) None 
+    staging_area_title: gray(22) gray(2)  / gray(20) gray(3) 
+    mode_command_mark: gray(5) ansi(204) bold
+    good_to_bad_0: ansi(28)
+    good_to_bad_1: ansi(29)
+    good_to_bad_2: ansi(29)
+    good_to_bad_3: ansi(29)
+    good_to_bad_4: ansi(29)
+    good_to_bad_5: ansi(100)
+    good_to_bad_6: ansi(136)
+    good_to_bad_7: ansi(172)
+    good_to_bad_8: ansi(166)
+    good_to_bad_9: ansi(196)
+}
+
+###############################################################
+# Syntax Theme
+# 
+# If you want to choose the theme used for preview, uncomment
+# one of the following lines:
+# 
+# syntax_theme: GitHub
+# syntax_theme: SolarizedDark
+# syntax_theme: SolarizedLight
+syntax_theme: MochaDark
+# syntax_theme: MochaDark
+# syntax_theme: OceanDark
+# syntax_theme: OceanLight
+
diff --git a/.config/broot/skins/dark-gruvbox.hjson b/.config/broot/skins/dark-gruvbox.hjson
new file mode 100644
index 0000000..e62d583
--- /dev/null
+++ b/.config/broot/skins/dark-gruvbox.hjson
@@ -0,0 +1,88 @@
+###############################################################
+# A skin for a terminal with a dark background
+# This skin uses RGB values so won't work for some
+# terminals.
+#
+#
+# (initially contributed by @basbebe)
+#
+# Doc at https://dystroy.org/broot/skins/
+###############################################################
+
+skin: {
+    default: rgb(235, 219, 178) none / rgb(189, 174, 147) none
+    tree: rgb(70, 70, 80) None / rgb(60, 60, 60) None
+    parent: rgb(235, 219, 178) none / rgb(189, 174, 147) none Italic
+    file: None None / None  None Italic
+    directory: rgb(131, 165, 152) None Bold / rgb(131, 165, 152) None
+    exe: rgb(184, 187, 38) None
+    link: rgb(104, 157, 106) None
+    pruning: rgb(124, 111, 100) None Italic
+    perm__: None None
+    perm_r: rgb(215, 153, 33) None
+    perm_w: rgb(204, 36, 29) None
+    perm_x: rgb(152, 151, 26) None
+    owner: rgb(215, 153, 33) None Bold
+    group: rgb(215, 153, 33) None
+    count: rgb(69, 133, 136) rgb(50, 48, 47)
+    dates: rgb(168, 153, 132) None
+    sparse: rgb(250, 189,47) None
+    content_extract: ansi(29) None Italic
+    content_match: ansi(34) None Bold
+    git_branch: rgb(251, 241, 199) None
+    git_insertions: rgb(152, 151, 26) None
+    git_deletions: rgb(190, 15, 23) None
+    git_status_current: rgb(60, 56, 54) None
+    git_status_modified: rgb(152, 151, 26) None
+    git_status_new: rgb(104, 187, 38) None Bold
+    git_status_ignored: rgb(213, 196, 161) None
+    git_status_conflicted: rgb(204, 36, 29) None
+    git_status_other: rgb(204, 36, 29) None
+    selected_line: None rgb(60, 56, 54) / None rgb(50, 48, 47)
+    char_match: rgb(250, 189, 47) None
+    file_error: rgb(251, 73, 52) None
+    flag_label: rgb(189, 174, 147) None
+    flag_value: rgb(211, 134, 155) None Bold
+    input: rgb(251, 241, 199) None / rgb(189, 174, 147) None Italic
+    status_error: rgb(213, 196, 161) rgb(204, 36, 29)
+    status_job: rgb(250, 189, 47) rgb(60, 56, 54)
+    status_normal: None rgb(40, 38, 37) / None None
+    status_italic: rgb(211, 134, 155) rgb(40, 38, 37) Italic / None None
+    status_bold: rgb(211, 134, 155) rgb(40, 38, 37) Bold / None None
+    status_code: rgb(251, 241, 199) rgb(40, 38, 37) / None None
+    status_ellipsis: rgb(251, 241, 199) rgb(40, 38, 37)  Bold / None None
+    purpose_normal: None None
+    purpose_italic: rgb(177, 98, 134) None Italic
+    purpose_bold: rgb(177, 98, 134) None Bold
+    purpose_ellipsis: None None
+    scrollbar_track: rgb(80, 73, 69) None / rgb(50, 48, 47) None
+    scrollbar_thumb: rgb(213, 196, 161) None / rgb(102, 92, 84) None
+    help_paragraph: None None
+    help_bold: rgb(214, 93, 14) None Bold
+    help_italic: rgb(211, 134, 155) None Italic
+    help_code: rgb(142, 192, 124) rgb(50, 48, 47)
+    help_headers: rgb(254, 128, 25) None Bold
+    help_table_border: rgb(80, 73, 69) None
+    preview_title: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(189, 174, 147) rgb(40, 40, 40)
+    preview: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(235, 219, 178) rgb(40, 40, 40)
+    preview_line_number: rgb(124, 111, 100) None / rgb(124, 111, 100) rgb(40, 40, 40)
+    preview_separator: rgb(70, 70, 80) None / rgb(60, 60, 60) None
+    preview_match: None ansi(29) Bold
+    hex_null: rgb(189, 174, 147) None
+    hex_ascii_graphic: rgb(213, 196, 161) None
+    hex_ascii_whitespace: rgb(152, 151, 26) None
+    hex_ascii_other: rgb(254, 128, 25) None
+    hex_non_ascii: rgb(214, 93, 14) None
+    staging_area_title: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(189, 174, 147) rgb(40, 40, 40)
+    mode_command_mark: gray(5) ansi(204) Bold
+    good_to_bad_0: ansi(28)
+    good_to_bad_1: ansi(29)
+    good_to_bad_2: ansi(29)
+    good_to_bad_3: ansi(29)
+    good_to_bad_4: ansi(29)
+    good_to_bad_5: ansi(100)
+    good_to_bad_6: ansi(136)
+    good_to_bad_7: ansi(172)
+    good_to_bad_8: ansi(166)
+    good_to_bad_9: ansi(196)
+}
diff --git a/.config/broot/skins/dark-orange.hjson b/.config/broot/skins/dark-orange.hjson
new file mode 100644
index 0000000..8e2f845
--- /dev/null
+++ b/.config/broot/skins/dark-orange.hjson
@@ -0,0 +1,111 @@
+###############################################################
+# A skin for a terminal with a dark background
+#
+# To create your own skin, copy this file, change the entries
+# and import your skin file from the main conf file (look
+# for "imports")
+#
+# Doc at https://dystroy.org/broot/skins/
+###############################################################
+
+###############################################################
+# Skin
+# If you want to change the colors of broot,
+# uncomment the following bloc and start messing
+# with the various values.
+# A skin entry value is made of two parts separated with a '/':
+# The first one is the skin for the active panel.
+# The second one, optional, is the skin for non active panels.
+# You may find explanations and other skins on
+#  https://dystroy.org/broot/skins
+###############################################################
+skin: {
+    default: none none / gray(20) none
+    tree: ansi(94) None / gray(3) None
+    parent: gray(18) None / gray(13) None
+    file: gray(20) None / gray(15) None
+    directory: ansi(208) None Bold / ansi(172) None bold
+    exe: Cyan None
+    link: Magenta None
+    pruning: gray(12) None Italic
+    perm__: gray(5) None
+    perm_r: ansi(94) None
+    perm_w: ansi(132) None
+    perm_x: ansi(65) None
+    owner: ansi(138) None
+    group: ansi(131) None
+    count: ansi(136) gray(3)
+    dates: ansi(66) None
+    sparse: ansi(214) None
+    content_extract: ansi(29) None
+    content_match: ansi(34) None
+    git_branch: ansi(229) None
+    git_insertions: ansi(28) None
+    git_deletions: ansi(160) None
+    git_status_current: gray(5) None
+    git_status_modified: ansi(28) None
+    git_status_new: ansi(94) None Bold
+    git_status_ignored: gray(17) None
+    git_status_conflicted: ansi(88) None
+    git_status_other: ansi(88) None
+    selected_line: None gray(5) / None gray(4)
+    char_match: Yellow None
+    file_error: Red None
+    flag_label: gray(15) None
+    flag_value: ansi(208) None Bold
+    input: White None / gray(15) gray(2)
+    status_error: gray(22) ansi(124)
+    status_job: ansi(220) gray(5)
+    status_normal: gray(20) gray(3) / gray(2) gray(2)
+    status_italic: ansi(208) gray(3) / gray(2) gray(2)
+    status_bold: ansi(208) gray(3) Bold / gray(2) gray(2)
+    status_code: ansi(229) gray(3) / gray(2) gray(2)
+    status_ellipsis: gray(19) gray(1) / gray(2) gray(2)
+    purpose_normal: gray(20) gray(2)
+    purpose_italic: ansi(178) gray(2)
+    purpose_bold: ansi(178) gray(2) Bold
+    purpose_ellipsis: gray(20) gray(2)
+    scrollbar_track: gray(7) None / gray(4) None
+    scrollbar_thumb: gray(22) None / gray(14) None
+    help_paragraph: gray(20) None
+    help_bold: ansi(208) None Bold
+    help_italic: ansi(166) None
+    help_code: gray(21) gray(3)
+    help_headers: ansi(208) None
+    help_table_border: ansi(239) None
+    preview: gray(20) gray(1) / gray(18) gray(2)
+    preview_line_number: gray(12) gray(3)
+    preview_separator: ansi(94) None / gray(3) None
+    preview_match: None ansi(29)
+    hex_null: gray(11) None
+    hex_ascii_graphic: gray(18) None
+    hex_ascii_whitespace: ansi(143) None
+    hex_ascii_other: ansi(215) None
+    hex_non_ascii: ansi(167) None
+    good_to_bad_0: ansi(28)
+    good_to_bad_1: ansi(29)
+    good_to_bad_2: ansi(29)
+    good_to_bad_3: ansi(29)
+    good_to_bad_4: ansi(29)
+    good_to_bad_5: ansi(100)
+    good_to_bad_6: ansi(136)
+    good_to_bad_7: ansi(172)
+    good_to_bad_8: ansi(166)
+    good_to_bad_9: ansi(196)
+}
+
+
+###############################################################
+# Syntax Theme
+# 
+# If you want to choose the theme used for preview, uncomment
+# one of the following lines:
+# 
+# syntax_theme: GitHub
+# syntax_theme: SolarizedDark
+# syntax_theme: SolarizedLight
+syntax_theme: SolarizedDark
+# syntax_theme: MochaDark
+# syntax_theme: OceanDark
+# syntax_theme: OceanLight
+
diff --git a/.config/broot/skins/native-16.hjson b/.config/broot/skins/native-16.hjson
new file mode 100644
index 0000000..a220c10
--- /dev/null
+++ b/.config/broot/skins/native-16.hjson
@@ -0,0 +1,132 @@
+###############################################################
+# 16 ANSI color theme. Colors in this theme are restricted from
+# ANSI color 0 - 15. This will allow the theme to adapt to your
+# terminal emulator's theme. Note that, for now, the preview
+# mode does not yet support this theme because of syntect not
+# having a 16 ansi color theme.
+#
+# More info at https://jeffkreeftmeijer.com/vim-16-color/
+# Doc at https://dystroy.org/broot/skins/
+###############################################################
+
+skin: {
+    directory: ansi(12)
+    file: ansi(7)
+    pruning: ansi(8) none italic
+    selected_line: none ansi(0)
+    tree: ansi(8)
+
+    # Search
+    char_match: ansi(3) none underlined
+    parent: ansi(4) none bold
+
+    # File properties
+    exe: ansi(2)
+    link: ansi(13)
+    sparse: ansi(12)
+
+    # Prompt
+    input: ansi(6)
+
+    # Status bar
+    status_bold: ansi(7) ansi(8) bold
+    status_code: ansi(10) ansi(8)
+    status_ellipsis: ansi(7) ansi(8)
+    status_error: ansi(7) ansi(8)
+    status_italic: ansi(7) ansi(8) italic
+    status_job: ansi(7) ansi(8)
+    status_normal: ansi(7) ansi(8)
+
+    # Flag status
+    flag_label: ansi(6)
+    flag_value: ansi(14) none bold
+
+    # Background
+    default: none none
+
+    # Scrollbar
+    scrollbar_track: ansi(0)
+    scrollbar_thumb: ansi(3)
+
+    # Git
+    git_branch: ansi(13)
+    git_deletions: ansi(1)
+    git_insertions: ansi(2)
+    git_status_conflicted: ansi(1)
+    git_status_current: ansi(6)
+    git_status_ignored: ansi(8)
+    git_status_modified: ansi(3)
+    git_status_new: ansi(2) none bold
+    git_status_other: ansi(5)
+
+    # Staging area
+    staging_area_title: ansi(3)
+
+    # Documentation
+    help_bold: ansi(7) none bold
+    help_code: ansi(4)
+    help_headers: ansi(3)
+    help_italic: ansi(7) none italic
+    help_paragraph: ansi(7)
+    help_table_border: ansi(8)
+
+    # Device column
+    device_id_major: ansi(5)
+    device_id_minor: ansi(5)
+    device_id_sep: ansi(5)
+
+    # Counts column
+    count: ansi(13)
+
+    # Dates column
+    dates: ansi(6)
+
+    # Permissions column
+    group: ansi(3)
+    owner: ansi(3)
+    perm__: ansi(8)
+    perm_r: ansi(3)
+    perm_w: ansi(1)
+    perm_x: ansi(2)
+
+    # Hex preview
+    hex_null: ansi(8)
+    hex_ascii_graphic: ansi(2)
+    hex_ascii_whitespace: ansi(3)
+    hex_ascii_other: ansi(4)
+    hex_non_ascii: ansi(5)
+
+    # Preview
+    # preview: none
+    # preview_line_number: none
+    # preview_match: none
+    # preview_title: none
+
+    # Used for displaying errors
+    file_error: ansi(1)
+
+    # Content searches
+    content_extract: ansi(7)
+    content_match: ansi(3) none underlined
+
+    # Used in status line
+    purpose_bold: ansi(0) ansi(7) bold
+    purpose_ellipsis: ansi(0)
+    purpose_italic: ansi(0) ansi(7) italic
+    purpose_normal: ansi(0)
+
+    # Modal indicator
+    mode_command_mark: ansi(7) ansi(4)
+
+    # File system occupation
+    good_to_bad_0: ansi(2)
+    good_to_bad_1: ansi(2)
+    good_to_bad_2: ansi(2)
+    good_to_bad_3: ansi(2)
+    good_to_bad_4: ansi(2)
+    good_to_bad_5: ansi(1)
+    good_to_bad_6: ansi(1)
+    good_to_bad_7: ansi(1)
+    good_to_bad_8: ansi(1)
+    good_to_bad_9: ansi(1)
+}
diff --git a/.config/broot/skins/solarized-dark.hjson b/.config/broot/skins/solarized-dark.hjson
new file mode 100644
index 0000000..fdea579
--- /dev/null
+++ b/.config/broot/skins/solarized-dark.hjson
@@ -0,0 +1,66 @@
+// contributed by [@danieltrautmann](https://github.com/danieltrautmann)
+// 
+// 
+// The Solarized Dark skin uses RGB values, so it might not work well with some
+// terminals
+//
+// Doc at https://dystroy.org/broot/skins/
+
+skin: {
+	default: "rgb(131, 148, 150) rgb(0, 43, 54) / rgb(131, 148, 150) rgb(7, 54, 66)"  // base0 base03 / base01 base02
+	tree: "rgb(88, 110, 117) none"                                                    // base01 default
+	file: "none none"                                                                 // default default
+	directory: "rgb(38, 139, 210) none bold"                                          // blue default bold
+	exe: "rgb(211, 1, 2) none"                                                        // red default
+	link: "rgb(211, 54, 130) none"                                                    // magenta default
+	pruning: "rgb(88, 110, 117) none italic"                                          // base01 default italic
+	perm__: "rgb(88, 110, 117) none"                                                  // base01 default
+	perm_r: "none none"                                                               // default default
+	perm_w: "none none"                                                               // default default
+	perm_x: "none none"                                                               // default default
+	owner: "rgb(88, 110, 117) none"                                                   // base01 default
+	group: "rgb(88, 110, 117) none"                                                   // base01 default
+	sparse: "none none"                                                               // default default
+	git_branch: "rgb(147, 161, 161) none"                                             // base1 default
+	git_insertions: "rgb(133, 153, 0) none"                                           // green default
+	git_deletions: "rgb(211, 1, 2) none"                                              // red default
+	git_status_current: "none none"                                                   // default default
+	git_status_modified: "rgb(181, 137, 0) none"                                      // yellow default
+	git_status_new: "rgb(133, 153, 0) none"                                           // green default
+	git_status_ignored: "rgb(88, 110, 117) none"                                      // base01 default
+	git_status_conflicted: "rgb(211, 1, 2) none"                                      // red default
+	git_status_other: "rgb(211, 1, 2) none"                                           // red default
+	selected_line: "none rgb(7, 54, 66)"                                              // default base02
+	char_match: "rgb(133, 153, 0) none underlined"                                    // green default underlined
+	file_error: "rgb(203, 75, 22) none italic"                                        // orange default italic
+	flag_label: "none none"                                                           // default default
+	flag_value: "rgb(181, 137, 0) none bold"                                          // yellow default bold
+	input: "none none"                                                                // default default
+	status_error: "rgb(203, 75, 22) rgb(7, 54, 66)"                                   // orange base02
+	status_job: "rgb(108, 113, 196) rgb(7, 54, 66) bold"                              // violet base02 bold
+	status_normal: "none rgb(7, 54, 66)"                                              // default base02
+	status_italic: "rgb(181, 137, 0) rgb(7, 54, 66)"                                  // yellow base02
+	status_bold: "rgb(147, 161, 161) rgb(7, 54, 66) bold"                             // base1 base02 bold
+	status_code: "rgb(108, 113, 196) rgb(7, 54, 66)"                                  // violet base02
+	status_ellipsis: "none rgb(7, 54, 66)"                                            // default base02
+	scrollbar_track: "rgb(7, 54, 66) none"                                            // base02 default
+	scrollbar_thumb: "none none"                                                      // default default
+	help_paragraph: "none none"                                                       // default default
+	help_bold: "rgb(147, 161, 161) none bold"                                         // base1 default bold
+	help_italic: "rgb(147, 161, 161) none italic"                                     // base1 default italic
+	help_code: "rgb(147, 161, 161) rgb(7, 54, 66)"                                    // base1 base02
+	help_headers: "rgb(181, 137, 0) none"                                             // yellow default
+	help_table_border: "none none"                                                    // default default
+	preview_title: "gray(20) rgb(0, 43, 54)"
+	staging_area_title: "gray(22) rgb(0, 43, 54)"
+ 	good_to_bad_0: "ansi(28)"														  // green
+ 	good_to_bad_1: "ansi(29)"
+ 	good_to_bad_2: "ansi(29)"
+ 	good_to_bad_3: "ansi(29)"
+ 	good_to_bad_4: "ansi(29)"
+ 	good_to_bad_5: "ansi(100)"
+ 	good_to_bad_6: "ansi(136)"
+ 	good_to_bad_7: "ansi(172)"
+ 	good_to_bad_8: "ansi(166)"
+ 	good_to_bad_9: "ansi(196)"                                                        // red
+}
diff --git a/.config/broot/skins/solarized-light.hjson b/.config/broot/skins/solarized-light.hjson
new file mode 100644
index 0000000..6e19275
--- /dev/null
+++ b/.config/broot/skins/solarized-light.hjson
@@ -0,0 +1,118 @@
+// contributed by [@danieltrautmann](https://github.com/danieltrautmann)
+// 
+// 
+// The Solarized Light skin uses RGB values, so it might not work well with some
+// terminals
+//
+// If you prefer to keep the background the same as your terminal background, change
+// the "default" entry to
+//  default: "none none / rgb(147, 161, 161) none"
+//
+// Doc at https://dystroy.org/broot/skins/
+
+skin: {
+	// base00 default / base1 base2
+	default: "rgb(101, 123, 131) none / rgb(147, 161, 161) none"
+	// base1 default
+	tree: "rgb(147, 161, 161) none"
+	// default default
+	file: "none none"
+	// blue default bold
+	directory: "rgb(38, 139, 210) none bold"
+	// red default
+	exe: "rgb(211, 1, 2) none"
+	// magenta default
+	link: "rgb(211, 54, 130) none"
+	// base1 default italic
+	pruning: "rgb(147, 161, 161) none italic"
+	// base1 default
+	perm__: "rgb(147, 161, 161) none"
+	// default default
+	perm_r: "none none"
+	// default default
+	perm_w: "none none"
+	// default default
+	perm_x: "none none"
+	// base1 default
+	owner: "rgb(147, 161, 161) none"
+	// base1 default
+	group: "rgb(147, 161, 161) none"
+	// default default
+	sparse: "none none"
+	// base01 default
+	git_branch: "rgb(88, 110, 117) none"
+	// green default
+	git_insertions: "rgb(133, 153, 0) none"
+	// red default
+	git_deletions: "rgb(211, 1, 2) none"
+	// default default
+	git_status_current: "none none"
+	// yellow default
+	git_status_modified: "rgb(181, 137, 0) none"
+	// green default
+	git_status_new: "rgb(133, 153, 0) none"
+	// base1 default
+	git_status_ignored: "rgb(147, 161, 161) none"
+	// red default
+	git_status_conflicted: "rgb(211, 1, 2) none"
+	// red default
+	git_status_other: "rgb(211, 1, 2) none"
+	// default base2
+	selected_line: "none rgb(238, 232, 213)"
+	// green default underlined
+	char_match: "rgb(133, 153, 0) none underlined"
+	// orange default italic
+	file_error: "rgb(203, 75, 22) none italic"
+	// default default
+	flag_label: "none none"
+	// yellow default bold
+	flag_value: "rgb(181, 137, 0) none bold"
+	// default default
+	input: "none none"
+	// orange base2
+	status_error: "rgb(203, 75, 22) rgb(238, 232, 213)"
+	// violet base2 bold
+	status_job: "rgb(108, 113, 196) rgb(238, 232, 213) bold"
+	// default base2
+	status_normal: "none rgb(238, 232, 213)"
+	// yellow base2
+	status_italic: "rgb(181, 137, 0) rgb(238, 232, 213)"
+	// base01 base2 bold
+	status_bold: "rgb(88, 110, 117) rgb(238, 232, 213) bold"
+	// violet base2
+	status_code: "rgb(108, 113, 196) rgb(238, 232, 213)"
+	// default base2
+	status_ellipsis: "none rgb(238, 232, 213)"
+	// base2 default
+	scrollbar_track: "rgb(238, 232, 213) none"
+	// default default
+	scrollbar_thumb: "none none"
+	// default default
+	help_paragraph: "none none"
+	// base01 default bold
+	help_bold: "rgb(88, 110, 117) none bold"
+	// base01 default italic
+	help_italic: "rgb(88, 110, 117) none italic"
+	// base01 base2
+	help_code: "rgb(88, 110, 117) rgb(238, 232, 213)"
+	// yellow default
+	help_headers: "rgb(181, 137, 0) none"
+	// default default
+	help_table_border: "none none"
+	preview_title: "rgb(147, 161, 161) rgb(238, 232, 213)"
+	preview: "rgb(101, 123, 131) rgb(253, 246, 227) / rgb(147, 161, 161) rgb(238, 232, 213)"
+	preview_line_number: "rgb(147, 161, 161) rgb(238, 232, 213)"
+	preview_separator: "rgb(147, 161, 161) rgb(238, 232, 213)"
+	preview_match: "None ansi(29)"
+	staging_area_title: "gray(22) rgb(253, 246, 227)"
+	good_to_bad_0: ansi(28)
+	good_to_bad_1: ansi(29)
+	good_to_bad_2: ansi(29)
+	good_to_bad_3: ansi(29)
+	good_to_bad_4: ansi(29)
+	good_to_bad_5: ansi(100)
+	good_to_bad_6: ansi(136)
+	good_to_bad_7: ansi(172)
+	good_to_bad_8: ansi(166)
+	good_to_bad_9: ansi(196)
+}
diff --git a/.config/broot/skins/white.hjson b/.config/broot/skins/white.hjson
new file mode 100644
index 0000000..908e648
--- /dev/null
+++ b/.config/broot/skins/white.hjson
@@ -0,0 +1,84 @@
+###############################################################
+# A skin for a terminal with a white background
+#
+# To create your own skin, copy this file, change the entries
+# and import your skin file from the main conf file (look
+# for "imports")
+#
+# Doc at https://dystroy.org/broot/skins/
+###############################################################
+syntax_theme: base16-ocean.light
+
+skin: {
+	default: gray(1) None
+	tree: gray(7) None / gray(18) None
+	file: gray(3) None / gray(8) None
+	directory: ansi(25) None Bold / ansi(25) None
+	exe: ansi(130) None
+	link: Magenta None
+	pruning: gray(12) None Italic
+	perm__: gray(5) None
+	perm_r: ansi(94) None
+	perm_w: ansi(132) None
+	perm_x: ansi(65) None
+	owner: ansi(138) None
+	group: ansi(131) None
+	dates: ansi(66) None
+	sparse: ansi(214) None
+	git_branch: ansi(229) None
+	git_insertions: ansi(28) None
+	git_deletions: ansi(160) None
+	git_status_current: gray(5) None
+	git_status_modified: ansi(28) None
+	git_status_new: ansi(94) None Bold
+	git_status_ignored: gray(17) None
+	git_status_conflicted: ansi(88) None
+	git_status_other: ansi(88) None
+	selected_line: None gray(19) / None gray(21)
+	char_match: ansi(22) None
+	file_error: Red None
+	flag_label: gray(9) None
+	flag_value: ansi(166) None Bold
+	input: gray(1) None / gray(4) gray(20)
+	status_error: gray(22) ansi(124)
+	status_normal: gray(2) gray(20)
+	status_job: ansi(220) gray(5)
+	status_italic: ansi(166) gray(20)
+	status_bold: ansi(166) gray(20)
+	status_code: ansi(17) gray(20)
+	status_ellipsis: gray(19) gray(15)
+	purpose_normal: gray(20) gray(2)
+	purpose_italic: ansi(178) gray(2)
+	purpose_bold: ansi(178) gray(2) Bold
+	purpose_ellipsis: gray(20) gray(2)
+	scrollbar_track: gray(20) none
+	scrollbar_thumb: ansi(238) none
+	help_paragraph: gray(2) none
+	help_bold: ansi(202) none bold
+	help_italic: ansi(202) none italic
+	help_code: gray(5) gray(22)
+	help_headers: ansi(202) none
+	help_table_border: ansi(239) None
+	preview_title: gray(3) None / gray(5) None
+	preview: gray(5) gray(23) / gray(7) gray(23)
+	preview_line_number: gray(6) gray(20)
+	preview_separator: gray(7) None / gray(18) None
+	preview_match: None ansi(29) Underlined
+	hex_null: gray(15) None
+	hex_ascii_graphic: gray(2) None
+	hex_ascii_whitespace: ansi(143) None
+	hex_ascii_other: ansi(215) None
+	hex_non_ascii: ansi(167) None
+	staging_area_title: gray(8) None / gray(13) None
+	mode_command_mark: gray(15) ansi(204) Bold
+	good_to_bad_0: ansi(28)
+	good_to_bad_1: ansi(29)
+	good_to_bad_2: ansi(29)
+	good_to_bad_3: ansi(29)
+	good_to_bad_4: ansi(29)
+	good_to_bad_5: ansi(100)
+	good_to_bad_6: ansi(136)
+	good_to_bad_7: ansi(172)
+	good_to_bad_8: ansi(166)
+	good_to_bad_9: ansi(196)
+}
diff --git a/.config/broot/verbs.hjson b/.config/broot/verbs.hjson
new file mode 100644
index 0000000..2dc8097
--- /dev/null
+++ b/.config/broot/verbs.hjson
@@ -0,0 +1,168 @@
+###############################################################
+# This file contains the verb definitions for broot
+#
+# Some verbs here are examples and not enabled by default: you
+#  need to uncomment them if you want to use them.
+#
+# Documentation at https://dystroy.org/broot/verbs/
+###############################################################
+
+verbs: [
+    {
+        invocation: nvim
+        key: enter
+        apply_to: text_file
+        execution: "tmux-edit-helper {file}"
+        leave_broot: true
+    }
+
+    # You should customize this standard opening of text files.
+    # If you edit text files in your terminal (vi, emacs, helix, eg.), then
+    #  you'll find it convenient to change the 'key' from 'ctrl-e' to 'enter'.
+    #
+    # If $EDITOR isn't set on your computer, you should either set it using
+    #  something similar to
+    #    export EDITOR=/usr/local/bin/nvim
+    #  or just replace it with your editor of choice in the 'execution'
+    #  pattern.
+    # If your editor is able to open a file on a specific line, use {line}
+    #  so that you may jump directly at the right line from a preview or
+    #  a content search.
+    # Examples depending on your favourite editor:
+    #    execution: "nvim +{line} {file}"
+    #    execution: "helix {file}:{line}"
+    {
+        invocation: edit
+        shortcut: e
+        key: ctrl-e
+        apply_to: text_file
+        execution: "$EDITOR {file}"
+        leave_broot: false
+    }
+
+    # Example 1: launching `tail -n` on the selected file (leaving broot)
+    # {
+    #     name: tail_lines
+    #     invocation: tl {lines_count}
+    #     execution: "tail -f -n {lines_count} {file}"
+    # }
+
+    # Example 2: creating a new file without leaving broot
+    # {
+    #     name: touch
+    #     invocation: touch {new_file}
+    #     execution: "touch {directory}/{new_file}"
+    #     leave_broot: false
+    # }
+
+    # A convenient shortcut to create new text files in
+    #  the current directory or below
+    {
+        invocation: create {subpath}
+        execution: "$EDITOR {directory}/{subpath}"
+        leave_broot: false
+    }
+
+    {
+        invocation: git_diff
+        shortcut: gd
+        leave_broot: false
+        execution: "git difftool -y {file}"
+    }
+
+    # On ctrl-b, propose the creation of a copy of the selection.
+    # While this might occasionally be useful, this verb is mostly here
+    # as an example to demonstrate rare standard groups like {file-stem}
+    # and {file-dot-extension} and the auto_exec verb property which
+    # allows verbs to stay unexecuted until you hit enter
+    {
+        invocation: "backup {version}"
+        key: ctrl-b
+        leave_broot: false
+        auto_exec: false
+        execution: "cp -r {file} {parent}/{file-stem}-{version}{file-dot-extension}"
+    }
+
+    # By default, `rm` does the system rm, and completely removes
+    # the file. If you prefer to have the file moved to the system
+    # trash, you may use the ':trash' internal with the verb below:
+    # {
+    #     invocation: "rm"
+    #     internal: "trash"
+    #     leave_broot: false
+    # }
+
+    # This verb lets you launch a terminal on ctrl-T
+    # (on exit you'll be back in broot)
+    {
+        invocation: terminal
+        key: ctrl-t
+        execution: "$SHELL"
+        set_working_dir: true
+        leave_broot: false
+    }
+
+    # Here's an example of a verb needing the shell capabilities.
+    # It copies all children of the currently selected directory
+    #  to a destination you type.
+    # It uses a star, which needs the shell for expansion. That's
+    #  why such verb must have the `from_shell: true` parameter.
+    # {
+    #     invocation: "cpa {dest}"
+    #     external: "cp -r {directory}/* {dest}"
+    #     from_shell: true
+    # }
+
+    # Here's an example of a shortcut bringing you to your home directory
+    # {
+    #     invocation: home
+    #     key: ctrl-home
+    #     execution: ":focus ~"
+    # }
+
+    # Here's going to the work-dir root of the current git repository
+    # {
+    #     invocation: gtr
+    #     execution: ":focus {git-root}"
+    # }
+
+    # A popular set of shortcuts for going up and down:
+    #
+    # {
+    #     key: ctrl-k
+    #     execution: ":line_up"
+    # }
+    # {
+    #     key: ctrl-j
+    #     execution: ":line_down"
+    # }
+    # {
+    #     key: ctrl-u
+    #     execution: ":page_up"
+    # }
+    # {
+    #     key: ctrl-d
+    #     execution: ":page_down"
+    # }
+
+    # If you develop using git, you might like to often switch
+    # to the git status filter:
+    # {
+    #     key: alt-g
+    #     execution: ":toggle_git_status"
+    # }
+
+    # You can reproduce the bindings of Norton Commander
+    # on copying or moving to the other panel:
+    # {
+    #     key: F5
+    #     external: "cp -r {file} {other-panel-directory}"
+    #     leave_broot: false
+    # }
+    # {
+    #     key: F6
+    #     external: "mv {file} {other-panel-directory}"
+    #     leave_broot: false
+    # }
+]
+
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 1f21ad2..e42a7b0 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -46,12 +46,17 @@ if status is-interactive
     end
 
     function jump
-        set _dir $(fre --sorted | fzf-tmux --no-sort -p 90%,40% -y 0 -- --color=fg:248,bg+:16,fg+:49,pointer:49,border:49 --layout=reverse)
+        set _dir $(fre --sorted | fzf --no-sort --color=fg:248,bg+:16,fg+:49,pointer:49,border:49 --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.toml $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
         [ -n "$_dir" ] && pushd $_dir >>/dev/null
         commandline -f repaint
     end
     bind \cg jump
 
+    bind \c_ 'do something'
+    bind \ee 'br $(git rev-parse --show-toplevel 2>/dev/null || pwd)'
+    bind \eg gitui
+
+
     ## Kubernetes
     fish_add_path $HOME/.krew/bin
     # function kubectl --wraps kubectl
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 913a3bc..91beb33 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -2,6 +2,7 @@
   "LazyVim": { "branch": "main", "commit": "0f6ff53ce336082869314db11e9dfa487cf83292" },
   "SchemaStore.nvim": { "branch": "main", "commit": "9a5992a881583d886bfbb46631a09f736f0fae50" },
   "alabaster.nvim": { "branch": "main", "commit": "5bb485d630d50796d4c8c7edc0f0fb9001fccde3" },
+  "broot.nvim": { "branch": "main", "commit": "c4365d34e5751832206fd6fd0a4f325b742dea0a" },
   "catppuccin": { "branch": "main", "commit": "d97387aea8264f484bb5d5e74f2182a06c83e0d8" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
@@ -34,8 +35,8 @@
   "neocodeium": { "branch": "main", "commit": "666d4f57e8bf0789c58957a9483dd671bc038123" },
   "neoconf.nvim": { "branch": "main", "commit": "9092129e9a42ae26375001bd2e6118f8d57c7f2a" },
   "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
-  "noice.nvim": { "branch": "main", "commit": "883cd5b638aef23d087c334940112d39ebff0aaa" },
-  "none-ls.nvim": { "branch": "main", "commit": "aa4442a8493934e3354e507a556ea5f670f68491" },
+  "noice.nvim": { "branch": "main", "commit": "f119045f38792ad5311e5f9be7a879e4c1a95fe0" },
+  "none-ls.nvim": { "branch": "main", "commit": "60f5f80686f5a272ed3281a7d4962cb54dc5348e" },
   "nui.nvim": { "branch": "main", "commit": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae" },
   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
   "nvim-dap": { "branch": "master", "commit": "c65c163daa47e0623dd85d2303fce0c22e52ad01" },
@@ -43,21 +44,21 @@
   "nvim-dap-ui": { "branch": "master", "commit": "334cf3038c4756e6ab999cbac67c847fb654c190" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
   "nvim-lint": { "branch": "master", "commit": "e19842a05aae484957ad20710444757bc0a61d63" },
-  "nvim-lspconfig": { "branch": "master", "commit": "2c1877081b237a643e52ebdebaf36c84a2695639" },
+  "nvim-lspconfig": { "branch": "master", "commit": "b972e7154bc94ab4ecdbb38c8edbccac36f83996" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
   "nvim-noirbuddy": { "branch": "master", "commit": "f3e35f42cf3f08b7351a69bf3a92b7e80a564f30" },
   "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
-  "nvim-snippets": { "branch": "main", "commit": "b3fe9af9fe2bf735f7d3988ad87f4c2fceadcc2b" },
+  "nvim-snippets": { "branch": "main", "commit": "5669b8d4eb6bbc5ebadf522f0e30a4cfb5a308f6" },
   "nvim-spectre": { "branch": "master", "commit": "5690ea46baf08bbc1623980012e14b6239ce582e" },
-  "nvim-treesitter": { "branch": "master", "commit": "298a9dd4f8a0d95b347a7ebd301849d8b0e3917e" },
+  "nvim-treesitter": { "branch": "master", "commit": "6d56c5f404d3b116bab167bc03993cfb0a83f8aa" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "3557e41418b4a6c5b85d5d64abe94c9c50fa9b14" },
   "nvim-ts-autotag": { "branch": "main", "commit": "8ae54b90e36ef1fc5267214b30c2cbff71525fe4" },
   "nvim-web-devicons": { "branch": "master", "commit": "e37bb1feee9e7320c76050a55443fa843b4b6f83" },
   "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
   "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
-  "rustaceanvim": { "branch": "master", "commit": "45075f8a47406021870eeab3c953aee7438cb898" },
-  "telescope-frecency.nvim": { "branch": "master", "commit": "328452afcc29187732575842c19172f4d4ed749d" },
+  "rustaceanvim": { "branch": "master", "commit": "e306c742bd7f7183e371cd91268b72d9db1bbae0" },
+  "telescope-frecency.nvim": { "branch": "master", "commit": "1a05e580147f7a06d24ae88ee3787b3fc0676fbe" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope.nvim": { "branch": "master", "commit": "5665d93988acfbb0747bdbf4f4cb583bcebc8930" },
   "todo-comments.nvim": { "branch": "main", "commit": "e1549807066947818113a7d7ed48f637e49620d3" },
diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index c497c0c..330deec 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -3,6 +3,7 @@ return {
 		"folke/flash.nvim",
 		enabled = false,
 	},
+	{ "aohoyd/broot.nvim", opts = {} },
 	{
 		"telescope.nvim",
 		config = function()
diff --git a/.tmux.conf b/.tmux.conf
index 6779453..3ef1c7d 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -65,11 +65,6 @@ bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-d
 bind-key / copy-mode \; send-key ?
 bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
 bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
-bind -n M-g display-popup -h '95%' -w '95%' -b rounded -d '#{pane_current_path}' -E "gitui"
-bind -n M-e display-popup -h '95%' -w '95%' -y 0 -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{pane_current_path}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
-bind -n M-h display-popup -h '95%' -w '95%' -y 0 -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{pane_current_path}' -e FZF=fzf -E "~/bin/tmux-edit-history"
-bind -n M-m display-popup -h '95%' -w '95%' -b rounded -S "fg=#77fecc" -s "fg=#99ccbb" -d '#{pane_current_path}' -E "~/bin/tmux-build-helper"
-
 
 setw -g window-status-format ""
 setw -g window-status-current-format ""

From 64cb98db3c012a2a75b8d7b15a0355d52055b666 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 16 May 2024 13:08:27 +0200
Subject: [PATCH 263/656] wezterm: colors

---
 .config/wezterm/colors/shelman-light.toml |  5 ++--
 .config/wezterm/wezterm.lua               | 29 +++++++++++++++++++++--
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/.config/wezterm/colors/shelman-light.toml b/.config/wezterm/colors/shelman-light.toml
index 04b0e87..744360f 100644
--- a/.config/wezterm/colors/shelman-light.toml
+++ b/.config/wezterm/colors/shelman-light.toml
@@ -11,7 +11,7 @@ ansi = [
   "#00669e",
   "#7d009e",
   "#008a9e",
-  "#f0f0f0",
+  "#f7f7f7",
 ]
 
 brights = [
@@ -26,7 +26,8 @@ brights = [
 ]
 
 background = "#fefeff"
-foreground = "#2c363c"
+# foreground = "#2c363c"
+foreground = "#000000"
 cursor_bg = "#aa0000"
 cursor_fg = "#ffffff"
 cursor_border = "#ffffff"
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index d6565b0..3a53a9d 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -33,6 +33,7 @@ end
 return {
 	color_scheme = scheme_for_appearance(wezterm.gui.get_appearance()),
 	font = font_for_appearance(wezterm.gui.get_appearance()),
+
 	font_rules = {
 		{
 			italic = true,
@@ -40,7 +41,30 @@ return {
 			reverse = false,
 			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
 			-- font = wezterm.font("Iosevka Term Curly Slab", { weight = "Thin", italic = true }),
+
+			-- font = wezterm.font({ -- Normal text
+			-- 	-- family = "Monaspace Radon",
+			-- 	family = "Monaspace Argon",
+			-- 	harfbuzz_features = {
+			-- 		"calt",
+			-- 		"liga",
+			-- 		"dlig",
+			-- 		"ss01",
+			-- 		"ss02",
+			-- 		"ss03",
+			-- 		"ss04",
+			-- 		"ss05",
+			-- 		"ss06",
+			-- 		"ss07",
+			-- 		"ss08",
+			-- 	},
+			-- 	weight = "Regular",
+			-- 	-- weight = "ExtraLight",
+			-- 	stretch = "Normal",
+			-- 	style = "Normal",
+			-- }),
 		},
+
 		{
 			italic = true,
 			intensity = "Normal",
@@ -48,8 +72,9 @@ return {
 			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "Light", italic = true }),
 		},
 	},
-	front_end = "WebGpu",
-	webgpu_power_preference = "HighPerformance",
+	-- front_end = "WebGpu",
+	-- webgpu_power_preference = "HighPerformance",
+	front_end = "OpenGL",
 	warn_about_missing_glyphs = false,
 	bold_brightens_ansi_colors = false,
 	-- allow_square_glyphs_to_overflow_width = "Never",

From b9779d4df45ec7a9a9e37cb5c61b9766473f511b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 26 May 2024 22:24:57 +0200
Subject: [PATCH 264/656] Fresh take on using wezterm without tmux for remote
 dev

---
 .config/fish/conf.d/aliases.fish              |   3 +-
 .config/wezterm/wezterm.lua                   | 324 +++++++++++-------
 .../wezterm-dev-secondary.desktop             |  10 +
 .local/share/applications/wezterm-dev.desktop |  10 +
 .../wezterm-dln-dev-secondary.desktop         |  10 -
 .../applications/wezterm-dln-dev.desktop      |  10 -
 .ssh/config                                   |   1 +
 bin/wezterm-edit-helper                       |  50 +++
 8 files changed, 280 insertions(+), 138 deletions(-)
 create mode 100644 .local/share/applications/wezterm-dev-secondary.desktop
 create mode 100644 .local/share/applications/wezterm-dev.desktop
 delete mode 100644 .local/share/applications/wezterm-dln-dev-secondary.desktop
 delete mode 100644 .local/share/applications/wezterm-dln-dev.desktop
 create mode 100755 bin/wezterm-edit-helper

diff --git a/.config/fish/conf.d/aliases.fish b/.config/fish/conf.d/aliases.fish
index 3349f69..d2d3ddb 100644
--- a/.config/fish/conf.d/aliases.fish
+++ b/.config/fish/conf.d/aliases.fish
@@ -1,5 +1,4 @@
-alias e='tmux-edit-helper'
-alias eh='tmux-edit-history'
+alias e='wezterm-edit-helper'
 alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
 alias git='git-branchless wrap --'
 alias l='bat --wrap=never --pager="less -S"'
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 3a53a9d..1c76512 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -2,10 +2,89 @@ local wezterm = require("wezterm")
 local mux = wezterm.mux
 local act = wezterm.action
 
-local dev_host = "dln-dev"
-local spawn_dev_nvim = { "ssh", dev_host, "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
+local config = {}
 
-wezterm.add_to_config_reload_watch_list(os.getenv("HOME") .. "/.config/shelman-theme/current/wezterm")
+-- ------------------------------------------------------------------------------------
+-- Workspace behavior
+
+-- local nvim_args = { "nvim", "--listen", "$XDG_RUNTIME_DIR" .. "/nvim-persistent.sock" }
+local nvim_args = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
+
+config.exec_domains = {
+	wezterm.exec_domain("dev", function(cmd)
+		local wrapped = { "/usr/bin/ssh", "-t", "dev" }
+		for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
+			table.insert(wrapped, arg)
+		end
+		cmd.args = wrapped
+		return cmd
+	end),
+}
+
+local function activate_nvim(window, pane)
+	wezterm.log_info("nvim")
+	for _, t in ipairs(window:mux_window():tabs_with_info()) do
+		for _, p in ipairs(t.tab:panes()) do
+			if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
+				window:perform_action(
+					act.Multiple({
+						act.ActivateTab(t.index),
+						act.MoveTab(0),
+					}),
+					pane
+				)
+				return
+			end
+		end
+	end
+
+	local nvim_tab, nvim_pane, _ = window:mux_window():spawn_tab({ args = nvim_args })
+	window:perform_action(act.MoveTab(0), nvim_pane)
+	nvim_tab:set_title("nvim")
+end
+
+local function activate_tab(title, index)
+	return function(window, pane)
+		wezterm.log_info(title)
+		for _, t in ipairs(window:mux_window():tabs_with_info()) do
+			if t.tab:get_title() == title then
+				window:perform_action(
+					act.Multiple({
+						act.ActivateTab(t.index),
+						act.MoveTab(index),
+					}),
+					pane
+				)
+				return
+			end
+		end
+		local tab, _, _ = window:mux_window():spawn_tab({
+			cwd = "~",
+		})
+		tab:set_title(title)
+		window:perform_action(act.MoveTab(index), pane)
+	end
+end
+
+wezterm.on("activate-nvim", activate_nvim)
+wezterm.on("tab-2", activate_tab("t2", 1))
+wezterm.on("tab-3", activate_tab("t3", 2))
+wezterm.on("tab-4", activate_tab("t4", 3))
+wezterm.on("tab-5", activate_tab("t5", 4))
+wezterm.on("tab-6", activate_tab("t6", 5))
+wezterm.on("tab-7", activate_tab("t7", 6))
+wezterm.on("tab-8", activate_tab("t8", 7))
+wezterm.on("tab-9", activate_tab("t9", 8))
+wezterm.on("tab-10", activate_tab("t10", 9))
+
+wezterm.on("user-var-changed", function(window, pane, name, _)
+	if name == "nvim_activate" then
+		activate_nvim(window, pane)
+	end
+end)
+
+-- ------------------------------------------------------------------------------------
+-- Appearance
 
 local function scheme_for_appearance(appearance)
 	if appearance:find("Dark") then
@@ -24,124 +103,137 @@ local function font_for_appearance(appearance)
 	else
 		return wezterm.font({
 			family = "IosevkaShelman Nerd Font",
-			--	weight = "Regular",
 			--weight = "Regular",
 		})
 	end
 end
+config.color_scheme = scheme_for_appearance(wezterm.gui.get_appearance())
 
-return {
-	color_scheme = scheme_for_appearance(wezterm.gui.get_appearance()),
-	font = font_for_appearance(wezterm.gui.get_appearance()),
-
-	font_rules = {
-		{
-			italic = true,
-			intensity = "Bold",
-			reverse = false,
-			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
-			-- font = wezterm.font("Iosevka Term Curly Slab", { weight = "Thin", italic = true }),
-
-			-- font = wezterm.font({ -- Normal text
-			-- 	-- family = "Monaspace Radon",
-			-- 	family = "Monaspace Argon",
-			-- 	harfbuzz_features = {
-			-- 		"calt",
-			-- 		"liga",
-			-- 		"dlig",
-			-- 		"ss01",
-			-- 		"ss02",
-			-- 		"ss03",
-			-- 		"ss04",
-			-- 		"ss05",
-			-- 		"ss06",
-			-- 		"ss07",
-			-- 		"ss08",
-			-- 	},
-			-- 	weight = "Regular",
-			-- 	-- weight = "ExtraLight",
-			-- 	stretch = "Normal",
-			-- 	style = "Normal",
-			-- }),
-		},
-
-		{
-			italic = true,
-			intensity = "Normal",
-			reverse = false,
-			font = wezterm.font("IosevkaShelman Nerd Font", { weight = "Light", italic = true }),
-		},
+-- ------------------------------------------------------------------------------------
+-- Fonts
+config.font = font_for_appearance(wezterm.gui.get_appearance())
+config.font_rules = {
+	{
+		italic = true,
+		intensity = "Bold",
+		reverse = false,
+		font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
+		-- font = wezterm.font("Iosevka Term Curly Slab", { weight = "Thin", italic = true }),
 	},
-	-- front_end = "WebGpu",
-	-- webgpu_power_preference = "HighPerformance",
-	front_end = "OpenGL",
-	warn_about_missing_glyphs = false,
-	bold_brightens_ansi_colors = false,
-	-- allow_square_glyphs_to_overflow_width = "Never",
-	font_size = 16,
-	command_palette_font_size = 13.5,
-	line_height = 1.0,
-	initial_cols = 132,
-	initial_rows = 45,
-	use_resize_increments = true,
-	adjust_window_size_when_changing_font_size = false,
-	window_decorations = "RESIZE",
-	window_padding = {
-		left = 6,
-		right = 6,
-		top = 0,
-		bottom = 0,
-	},
-	unicode_version = 14,
-	default_cursor_style = "SteadyBlock",
-	cursor_thickness = "6px",
-	cursor_blink_rate = 700,
-	hide_mouse_cursor_when_typing = false,
-	underline_position = -9,
-	underline_thickness = 1,
-	enable_wayland = true,
-	enable_tab_bar = false,
-	tab_bar_at_bottom = true,
-	use_fancy_tab_bar = false,
-	show_tab_index_in_tab_bar = true,
-	enable_scroll_bar = false,
-	scrollback_lines = 5000,
-	alternate_buffer_wheel_scroll_speed = 1,
-	check_for_updates = false,
-	status_update_interval = 100,
-	audible_bell = "Disabled",
-	term = "wezterm",
-	disable_default_key_bindings = true,
-	keys = {
-		{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
-		{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
-		{ key = "0", mods = "CTRL", action = "ResetFontSize" },
-		{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
-		{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
-		{ key = "Enter", mods = "ALT", action = "ToggleFullScreen" },
-		{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
-		{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
-		{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },
-		{ key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(0.5) },
-	},
-	mouse_bindings = {
-		{
-			event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-			mods = "SHIFT",
-			action = act.ScrollByLine(-1),
-		},
-		{
-			event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-			mods = "SHIFT",
-			action = act.ScrollByLine(1),
-		},
-		{
-			event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-			action = act.ScrollByPage(-0.25),
-		},
-		{
-			event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-			action = act.ScrollByPage(0.25),
-		},
+
+	{
+		italic = true,
+		intensity = "Normal",
+		reverse = false,
+		font = wezterm.font("IosevkaShelman Nerd Font", { weight = "Light", italic = true }),
 	},
 }
+-- config.dpi = 192
+config.font_size = 15
+config.line_height = 1.0
+config.warn_about_missing_glyphs = false
+config.bold_brightens_ansi_colors = false
+config.unicode_version = 14
+
+-- Config
+config.enable_wayland = true
+config.front_end = "WebGpu"
+config.webgpu_power_preference = "HighPerformance"
+config.term = "wezterm"
+config.check_for_updates = false
+
+-- UI
+config.command_palette_font_size = 13.5
+config.initial_cols = 132
+config.initial_rows = 45
+config.status_update_interval = 100
+config.audible_bell = "Disabled"
+config.use_resize_increments = true
+config.adjust_window_size_when_changing_font_size = false
+config.window_decorations = "RESIZE"
+config.window_frame = {
+	border_left_width = "4px",
+	border_right_width = "4px",
+	border_bottom_height = "4px",
+	border_top_height = "4px",
+	border_left_color = "#000000",
+	border_right_color = "#000000",
+	border_bottom_color = "#000000",
+	border_top_color = "#000000",
+}
+config.window_padding = {
+	left = 0,
+	right = 0,
+	top = 0,
+	bottom = 0,
+}
+
+-- Tabs
+config.enable_tab_bar = false
+config.tab_bar_at_bottom = true
+config.use_fancy_tab_bar = false
+config.show_tab_index_in_tab_bar = true
+
+-- Cursor
+config.default_cursor_style = "SteadyBlock"
+config.cursor_thickness = "6px"
+config.cursor_blink_rate = 700
+config.hide_mouse_cursor_when_typing = false
+config.underline_position = -9
+config.underline_thickness = 1
+
+-- Scrolling
+config.enable_scroll_bar = false
+config.scrollback_lines = 5000
+config.alternate_buffer_wheel_scroll_speed = 1
+
+-- Keys
+config.disable_default_key_bindings = true
+config.keys = {
+	{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
+	{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
+	{ key = "0", mods = "CTRL", action = "ResetFontSize" },
+	{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
+	{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
+	{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
+	{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
+	{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },
+	{ key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(0.5) },
+	{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
+	{ key = "o", mods = "ALT", action = act.ActivateCommandPalette },
+	{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
+	{ key = "1", mods = "ALT", action = act.EmitEvent("activate-nvim") },
+	{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },
+	{ key = "3", mods = "ALT", action = act.EmitEvent("tab-3") },
+	{ key = "4", mods = "ALT", action = act.EmitEvent("tab-4") },
+	{ key = "5", mods = "ALT", action = act.EmitEvent("tab-5") },
+	{ key = "6", mods = "ALT", action = act.EmitEvent("tab-6") },
+	{ key = "7", mods = "ALT", action = act.EmitEvent("tab-7") },
+	{ key = "8", mods = "ALT", action = act.EmitEvent("tab-8") },
+	{ key = "9", mods = "ALT", action = act.EmitEvent("tab-9") },
+	{ key = "0", mods = "ALT", action = act.EmitEvent("tab-10") },
+}
+
+-- Mouse
+config.mouse_bindings = {
+	{
+		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
+		mods = "SHIFT",
+		action = act.ScrollByLine(-1),
+	},
+	{
+		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
+		mods = "SHIFT",
+		action = act.ScrollByLine(1),
+	},
+	{
+		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
+		action = act.ScrollByPage(-0.25),
+	},
+	{
+		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
+		action = act.ScrollByPage(0.25),
+	},
+}
+
+return config
diff --git a/.local/share/applications/wezterm-dev-secondary.desktop b/.local/share/applications/wezterm-dev-secondary.desktop
new file mode 100644
index 0000000..9c1905b
--- /dev/null
+++ b/.local/share/applications/wezterm-dev-secondary.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=wezterm-dev-secondary
+GenericName=wezterm-dev-secondary
+StartupWMClass=org.wezfurlong.wezterm-dev-secondary
+Type=Application
+TryExec=/usr/bin/wezterm
+Icon=org.wezfurlong.wezterm
+Terminal=false
+Categories=System;TerminalEmulator;
+Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-dev-secondary --domain=dev
diff --git a/.local/share/applications/wezterm-dev.desktop b/.local/share/applications/wezterm-dev.desktop
new file mode 100644
index 0000000..9cff6ce
--- /dev/null
+++ b/.local/share/applications/wezterm-dev.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=wezterm-dev
+GenericName=wezterm-dev
+StartupWMClass=org.wezfurlong.wezterm-dev
+Type=Application
+TryExec=/usr/bin/wezterm
+Icon=org.wezfurlong.wezterm
+Terminal=false
+Categories=System;TerminalEmulator;
+Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-dev --domain=dev
diff --git a/.local/share/applications/wezterm-dln-dev-secondary.desktop b/.local/share/applications/wezterm-dln-dev-secondary.desktop
deleted file mode 100644
index 862fa5a..0000000
--- a/.local/share/applications/wezterm-dln-dev-secondary.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=wezterm-dln-dev-secondary
-GenericName=wezterm-dln-dev-secondary
-StartupWMClass=org.wezfurlong.wezterm-secondary
-Type=Application
-TryExec=/usr/bin/wezterm
-Icon=org.wezfurlong.wezterm
-Terminal=false
-Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-tq", "dln-dev", "--", "tmux", "-u", "new", "-As1", "-t0"}' start --class=org.wezfurlong.wezterm-secondary
diff --git a/.local/share/applications/wezterm-dln-dev.desktop b/.local/share/applications/wezterm-dln-dev.desktop
deleted file mode 100644
index 277cb3a..0000000
--- a/.local/share/applications/wezterm-dln-dev.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=wezterm-dln-dev
-GenericName=wezterm-dln-dev
-StartupWMClass=org.wezfurlong.wezterm
-Type=Application
-TryExec=/usr/bin/wezterm
-Icon=org.wezfurlong.wezterm
-Terminal=false
-Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-tq", "dln-dev", "--", "tmux", "-u", "new", "-As0", "-t0"}' start --class=wezterm-dln-dev
diff --git a/.ssh/config b/.ssh/config
index be346ee..8914ace 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -12,6 +12,7 @@ Include ~/.ssh/private_config
 
 Host 10.1.100.16
 Host dln-dev
+Host dev
 Hostname 10.1.100.16
  #Hostname aarn.shelman.io
  #Port 2022
diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper
new file mode 100755
index 0000000..c0a9421
--- /dev/null
+++ b/bin/wezterm-edit-helper
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+set -fe -o pipefail
+
+eval "$(direnv export bash 2>/dev/null)"
+
+PATH="$HOME/bin:$PATH"
+
+if [ -n "$1" ]; then
+	_file=$(readlink -f "$@")
+else
+	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0 --layout=reverse"}
+	_root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
+	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
+	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
+	_file="${_root}/${_file}"
+	fre --store_name "$_store" --add "$_file"
+fi
+
+fre --store_name "edit-history" --add "$_file"
+
+_nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
+
+nvim --server "$_nvim_socket" --remote "$_file"
+
+function _nvim_setenv() {
+	nvim --server "$_nvim_socket" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")" 2>&1 >/dev/null
+}
+
+_nvim_setenv AR "$AR"
+_nvim_setenv AS "$AS"
+_nvim_setenv BUILD_COMMAND "$BUILD_COMMAND"
+_nvim_setenv CC "$CC"
+_nvim_setenv CXX "$CXX"
+_nvim_setenv GOFLAGS "$GOFLAGS"
+_nvim_setenv GOPACKAGESDRIVER "$GOPACKAGESDRIVER"
+_nvim_setenv LC_ALL "$LC_ALL"
+_nvim_setenv LD "$LD"
+_nvim_setenv NM "$NM"
+_nvim_setenv NM "$NM"
+_nvim_setenv OBJCOPY "$OBJCOPY"
+_nvim_setenv OBJDUMP "$OBJDUMP"
+_nvim_setenv PATH "$PATH"
+_nvim_setenv RANLIB "$RANLIB"
+_nvim_setenv READELF "$READELF"
+_nvim_setenv RUST_SRC_PATH "$RUST_SRC_PATH"
+_nvim_setenv SIZE "$SIZE"
+_nvim_setenv STRIP "$STRIP"
+
+# Wezterm: switch tab to nvim
+printf "\033]1337;SetUserVar=%s=%s\007" nvim_activate $(date +%s | base64)

From 57a007be9d006c7be468839addd2a0ffcff8d96b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 27 May 2024 19:31:41 +0200
Subject: [PATCH 265/656] wezterm: hyperlink rust error codes

---
 .config/wezterm/wezterm.lua | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 1c76512..4f8d0e8 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -168,6 +168,14 @@ config.window_padding = {
 	bottom = 0,
 }
 
+-- Hyperlinks
+config.hyperlink_rules = wezterm.default_hyperlink_rules()
+
+table.insert(config.hyperlink_rules, {
+	regex = [[`rustc --explain E(\d+)`]],
+	format = "https://doc.rust-lang.org/error_codes/E$1.html",
+})
+
 -- Tabs
 config.enable_tab_bar = false
 config.tab_bar_at_bottom = true

From f1e44b26eee19a55e9c9d91d02f57dce0199fcd6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 25 May 2024 11:27:18 +0200
Subject: [PATCH 266/656] nvim: use smart-open as file finder

---
 .config/nvim/lua/plugins/editor.lua | 82 ++++++++++++++++++-----------
 1 file changed, 51 insertions(+), 31 deletions(-)

diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index 330deec..a2e2368 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -3,43 +3,63 @@ return {
 		"folke/flash.nvim",
 		enabled = false,
 	},
-	{ "aohoyd/broot.nvim", opts = {} },
+
+	{
+		"danielfalk/smart-open.nvim",
+		branch = "0.2.x",
+		dependencies = {
+			"kkharji/sqlite.lua",
+			{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
+			{ "nvim-telescope/telescope-fzy-native.nvim" },
+		},
+		keys = {
+			{
+				"<leader><leader>",
+				":lua require('telescope').extensions.smart_open.smart_open {filename_first = false }<cr>",
+				desc = "Telescope smart open",
+			},
+		},
+		config = function()
+			local util = require("lazyvim.util")
+			util.on_load("telescope.nvim", function()
+				local telescope = require("telescope")
+				telescope.load_extension("smart_open")
+			end)
+		end,
+	},
+
 	{
 		"telescope.nvim",
-		config = function()
-			local telescope = require("telescope")
+		opts = function(_, opts)
 			local actions = require("telescope.actions")
-
-			telescope.setup({
-				defaults = {
-					layout_strategy = "horizontal",
-					layout_config = {
-						anchor = "top",
-						horizontal = {
-							prompt_position = "top",
-							mirror = false,
-							preview_width = 0.4,
-							-- preview_height = 0.5,
-						},
-						width = 0.9,
-						height = 0.9,
-						preview_cutoff = 10,
+			opts.defaults = {
+				layout_strategy = "horizontal",
+				layout_config = {
+					anchor = "top",
+					horizontal = {
+						prompt_position = "top",
+						mirror = false,
+						preview_width = 0.4,
+						-- preview_height = 0.5,
 					},
-					mappings = {
-						i = {
-							["<esc>"] = actions.close, -- <Esc> close popup
-							["<C-u>"] = false, -- <C-u> clear prompt
-						},
-					},
-					sorting_strategy = "ascending",
-					winblend = 0,
-					wrap_results = true,
-					previewer = false,
-					preview = {
-						hide_on_startup = true,
+					width = 0.9,
+					height = 0.9,
+					preview_cutoff = 10,
+				},
+				mappings = {
+					i = {
+						["<esc>"] = actions.close, -- <Esc> close popup
+						["<C-u>"] = false, -- <C-u> clear prompt
 					},
 				},
-			})
+				sorting_strategy = "ascending",
+				winblend = 0,
+				wrap_results = true,
+				previewer = false,
+				preview = {
+					hide_on_startup = true,
+				},
+			}
 		end,
 	},
 }

From 92cf0fe62a41b20447d85edf11c08154992cad9d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 25 May 2024 19:08:46 +0200
Subject: [PATCH 267/656] nvim: remap zz to top instead of center

---
 .config/nvim/lua/config/keymaps.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
index 944e633..3a627cb 100644
--- a/.config/nvim/lua/config/keymaps.lua
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -7,5 +7,5 @@ vim.api.nvim_del_keymap("n", "<c-_>")
 vim.api.nvim_set_keymap("n", "<c-_>", "gcc", {})
 vim.api.nvim_set_keymap("v", "<c-_>", "gc", {})
 vim.api.nvim_set_keymap("n", "<Leader><c-_>", "gcgc", {})
-
 vim.api.nvim_set_keymap("n", "<Tab>", "<Space>,", {})
+vim.api.nvim_set_keymap("n", "zz", "zt", {})

From d70cf31829407f06f38fba15132621db9d567be3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 25 May 2024 20:08:07 +0200
Subject: [PATCH 268/656] broot goodness

---
 .config/broot/select.hjson | 17 +++++++++++++++++
 .config/broot/select.toml  |  6 ------
 .config/broot/verbs.hjson  |  7 +++++++
 .config/fish/config.fish   | 20 +++++++++++++++++---
 4 files changed, 41 insertions(+), 9 deletions(-)
 create mode 100644 .config/broot/select.hjson
 delete mode 100644 .config/broot/select.toml

diff --git a/.config/broot/select.hjson b/.config/broot/select.hjson
new file mode 100644
index 0000000..20ec81d
--- /dev/null
+++ b/.config/broot/select.hjson
@@ -0,0 +1,17 @@
+verbs: [
+  {
+    invocation: "ok"
+      key: "enter"
+      leave_broot: true
+      execution: ":print_path"
+      apply_to: "directory"
+  }
+
+  {
+    invocation: "broot_home"
+      keys: ["ctrl-7", "ctrl-g"]
+      execution: "broot -f --conf ~/.config/broot/select.hjson $HOME"
+      leave_broot: true
+  }
+]
+
diff --git a/.config/broot/select.toml b/.config/broot/select.toml
deleted file mode 100644
index 2b2a477..0000000
--- a/.config/broot/select.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[[verbs]]
-invocation = "ok"
-key = "enter"
-leave_broot = true
-execution = ":print_path"
-apply_to = "directory"
diff --git a/.config/broot/verbs.hjson b/.config/broot/verbs.hjson
index 2dc8097..6279ee5 100644
--- a/.config/broot/verbs.hjson
+++ b/.config/broot/verbs.hjson
@@ -16,6 +16,13 @@ verbs: [
         leave_broot: true
     }
 
+    {
+        invocation: broot_home
+        key: ctrl-7
+        execution: broot $HOME
+        leave_broot: true
+    }
+
     # You should customize this standard opening of text files.
     # If you edit text files in your terminal (vi, emacs, helix, eg.), then
     #  you'll find it convenient to change the 'key' from 'ctrl-e' to 'enter'.
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index e42a7b0..856ce9f 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -46,14 +46,28 @@ if status is-interactive
     end
 
     function jump
-        set _dir $(fre --sorted | fzf --no-sort --color=fg:248,bg+:16,fg+:49,pointer:49,border:49 --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.toml $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
+        set _dir $(fre --sorted | fzf --no-sort --color=fg:248,bg+:16,fg+:49,pointer:49,border:49 --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.hjson $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
         [ -n "$_dir" ] && pushd $_dir >>/dev/null
         commandline -f repaint
     end
     bind \cg jump
 
-    bind \c_ 'do something'
-    bind \ee 'br $(git rev-parse --show-toplevel 2>/dev/null || pwd)'
+    function git_jump
+        set _dir $(git rev-parse --show-toplevel 2>/dev/null || pwd)
+        if [ "$_dir" = "$PWD" ]
+            set _dir $(br -f --conf ~/.config/broot/select.hjson)
+        end
+        [ -n "$_dir" ] && pushd $_dir >>/dev/null
+        commandline -f repaint
+    end
+    bind \c_ git_jump
+
+    function git_broot
+        br $(git rev-parse --show-toplevel 2>/dev/null || pwd)
+        commandline -f repaint
+    end
+
+    bind \ee git_broot
     bind \eg gitui
 
 

From 8a8176ba2c05a09cb1fbc869a6b9679eb44efc3a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 27 May 2024 19:42:59 +0200
Subject: [PATCH 269/656] onward

---
 .config/broot/verbs.hjson           |  2 +-
 .config/nvim/lazy-lock.json         | 37 +++++++++++++++--------------
 .config/nvim/lua/config/keymaps.lua |  8 +++----
 .config/nvim/lua/config/options.lua |  4 ++--
 .config/nvim/lua/plugins/editor.lua | 26 ++++++++++++--------
 .config/nvim/lua/plugins/extras.lua |  7 ------
 6 files changed, 42 insertions(+), 42 deletions(-)

diff --git a/.config/broot/verbs.hjson b/.config/broot/verbs.hjson
index 6279ee5..abf186a 100644
--- a/.config/broot/verbs.hjson
+++ b/.config/broot/verbs.hjson
@@ -12,7 +12,7 @@ verbs: [
         invocation: nvim
         key: enter
         apply_to: text_file
-        execution: "tmux-edit-helper {file}"
+        execution: "wezterm-edit-helper {file}"
         leave_broot: true
     }
 
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 91beb33..dbdecf7 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,9 +1,8 @@
 {
-  "LazyVim": { "branch": "main", "commit": "0f6ff53ce336082869314db11e9dfa487cf83292" },
+  "LazyVim": { "branch": "main", "commit": "59204df1cb4a1d0176005dd7dc901ddbae9d23bd" },
   "SchemaStore.nvim": { "branch": "main", "commit": "9a5992a881583d886bfbb46631a09f736f0fae50" },
   "alabaster.nvim": { "branch": "main", "commit": "5bb485d630d50796d4c8c7edc0f0fb9001fccde3" },
-  "broot.nvim": { "branch": "main", "commit": "c4365d34e5751832206fd6fd0a4f325b742dea0a" },
-  "catppuccin": { "branch": "main", "commit": "d97387aea8264f484bb5d5e74f2182a06c83e0d8" },
+  "catppuccin": { "branch": "main", "commit": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
@@ -16,30 +15,30 @@
   "dressing.nvim": { "branch": "master", "commit": "3c38ac861e1b8d4077ff46a779cde17330b29f3a" },
   "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
   "friendly-snippets": { "branch": "main", "commit": "dd2fd1281d4b22e7b4a5bfafa3e142d958e251f2" },
-  "fzf": { "branch": "master", "commit": "daa602422dc272cbec6b99bc7520262672ad7230" },
+  "fzf": { "branch": "master", "commit": "99bd6de5415dccec4b1b21121224116bbfbc462f" },
   "fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
   "gitsigns.nvim": { "branch": "main", "commit": "cdfcd9d39d23c46ae9a040de2c6a8b8bf868746e" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "incline.nvim": { "branch": "main", "commit": "16fc9c073e3ea4175b66ad94375df6d73fc114c0" },
   "indent-blankline.nvim": { "branch": "master", "commit": "d98f537c3492e87b6dc6c2e3f66ac517528f406f" },
-  "lazy.nvim": { "branch": "main", "commit": "8f19915175395680808de529e4220da8dafc0759" },
+  "lazy.nvim": { "branch": "main", "commit": "24fa2a97085ca8a7220b5b078916f81e316036fd" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "a4caa0d083aab56f6cd5acf2d42331b74614a585" },
   "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "49ff59aded1047a773670651cfa40e76e63c6377" },
-  "mini.ai": { "branch": "main", "commit": "a0262e61f79dfc7bb940d1719c00b0ede042ddd7" },
-  "mini.colors": { "branch": "main", "commit": "be18d56eeaae810e34334c0e9230608f59f71c28" },
-  "mini.indentscope": { "branch": "main", "commit": "a8274b6ea2d868198d27bd91a31ed5ea3a6a5744" },
+  "mini.ai": { "branch": "main", "commit": "7859b6344f5cee567a94f173859d25e20ba1a77e" },
+  "mini.colors": { "branch": "main", "commit": "11b3b7056343d324abb69910e3cdec53bbf2a7c9" },
+  "mini.indentscope": { "branch": "main", "commit": "f0d7faa064c892b96997810afcddfadc3f2a15b3" },
   "modes.nvim": { "branch": "main", "commit": "4035a46aaabe43faf1b54740575af9dd5bb03809" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
-  "neocodeium": { "branch": "main", "commit": "666d4f57e8bf0789c58957a9483dd671bc038123" },
-  "neoconf.nvim": { "branch": "main", "commit": "9092129e9a42ae26375001bd2e6118f8d57c7f2a" },
+  "neocodeium": { "branch": "main", "commit": "4a46f6438bcdb21c562f83036bce75c719834072" },
+  "neoconf.nvim": { "branch": "main", "commit": "4e204e0d423e70293b81ba1655ed17e1f3c97986" },
   "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
   "noice.nvim": { "branch": "main", "commit": "f119045f38792ad5311e5f9be7a879e4c1a95fe0" },
   "none-ls.nvim": { "branch": "main", "commit": "60f5f80686f5a272ed3281a7d4962cb54dc5348e" },
   "nui.nvim": { "branch": "main", "commit": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae" },
   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
-  "nvim-dap": { "branch": "master", "commit": "c65c163daa47e0623dd85d2303fce0c22e52ad01" },
+  "nvim-dap": { "branch": "master", "commit": "922ebc75c2fa9305e36402fbd8c984c8638770a0" },
   "nvim-dap-go": { "branch": "main", "commit": "5faf165f5062187320eaf9d177c3c1f647adc22e" },
   "nvim-dap-ui": { "branch": "master", "commit": "334cf3038c4756e6ab999cbac67c847fb654c190" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
@@ -49,22 +48,24 @@
   "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
   "nvim-noirbuddy": { "branch": "master", "commit": "f3e35f42cf3f08b7351a69bf3a92b7e80a564f30" },
   "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
-  "nvim-snippets": { "branch": "main", "commit": "5669b8d4eb6bbc5ebadf522f0e30a4cfb5a308f6" },
+  "nvim-snippets": { "branch": "main", "commit": "67f44a552f03b5de23af1900d01af3256a3da2bc" },
   "nvim-spectre": { "branch": "master", "commit": "5690ea46baf08bbc1623980012e14b6239ce582e" },
-  "nvim-treesitter": { "branch": "master", "commit": "6d56c5f404d3b116bab167bc03993cfb0a83f8aa" },
+  "nvim-treesitter": { "branch": "master", "commit": "245da4eb2e52d14b034bbbedec9671e997ede764" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "3557e41418b4a6c5b85d5d64abe94c9c50fa9b14" },
   "nvim-ts-autotag": { "branch": "main", "commit": "8ae54b90e36ef1fc5267214b30c2cbff71525fe4" },
-  "nvim-web-devicons": { "branch": "master", "commit": "e37bb1feee9e7320c76050a55443fa843b4b6f83" },
+  "nvim-web-devicons": { "branch": "master", "commit": "b77921fdc44833c994fdb389d658ccbce5490c16" },
   "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
   "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
   "rustaceanvim": { "branch": "master", "commit": "e306c742bd7f7183e371cd91268b72d9db1bbae0" },
-  "telescope-frecency.nvim": { "branch": "master", "commit": "1a05e580147f7a06d24ae88ee3787b3fc0676fbe" },
+  "smart-open.nvim": { "branch": "0.2.x", "commit": "87626ee8748b9bba22093adec7bb58c63e7214f0" },
+  "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope.nvim": { "branch": "master", "commit": "5665d93988acfbb0747bdbf4f4cb583bcebc8930" },
+  "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
+  "telescope.nvim": { "branch": "master", "commit": "349660c0d35da06459ee8589af77de2086b652ce" },
   "todo-comments.nvim": { "branch": "main", "commit": "e1549807066947818113a7d7ed48f637e49620d3" },
-  "tokyonight.nvim": { "branch": "main", "commit": "b9b494fa7f7bbf2fe0747b47fa290fb7a4eddcc7" },
+  "tokyonight.nvim": { "branch": "main", "commit": "0fae425aaab04a5f97666bd431b96f2f19c36935" },
   "trouble.nvim": { "branch": "dev", "commit": "e2185bf6e63ef9bd75f1819f43846e2b0f10953b" },
-  "ts-comments.nvim": { "branch": "main", "commit": "8ea22850c40b4aef481a6ebdd74c928ed2b20427" },
+  "ts-comments.nvim": { "branch": "main", "commit": "f7ded340b4c6b317593b867838bf7ace354a67d4" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
   "yanky.nvim": { "branch": "main", "commit": "8756d19923ad871eb95f543a8a98c026b4a8494f" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
index 3a627cb..cc87217 100644
--- a/.config/nvim/lua/config/keymaps.lua
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -3,9 +3,9 @@
 -- Add any additional keymaps here
 
 -- C-/ should be comment instead of lazyterm
-vim.api.nvim_del_keymap("n", "<c-_>")
-vim.api.nvim_set_keymap("n", "<c-_>", "gcc", {})
-vim.api.nvim_set_keymap("v", "<c-_>", "gc", {})
-vim.api.nvim_set_keymap("n", "<Leader><c-_>", "gcgc", {})
+vim.api.nvim_del_keymap("n", "<c-/>")
+vim.api.nvim_set_keymap("n", "<c-/>", "gcc", {})
+vim.api.nvim_set_keymap("v", "<c-/>", "gc", {})
+vim.api.nvim_set_keymap("n", "<Leader><c-/>", "gcgc", {})
 vim.api.nvim_set_keymap("n", "<Tab>", "<Space>,", {})
 vim.api.nvim_set_keymap("n", "zz", "zt", {})
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 5a4776b..6914364 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -13,9 +13,9 @@ vim.o.autochdir = true
 vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
 vim.o.scrolloff = 7
 vim.o.splitkeep = "screen"
-vim.o.updatetime = 1500
+vim.o.updatetime = 2500
 vim.o.timeout = true
-vim.o.timeoutlen = 15
+vim.o.timeoutlen = 0
 
 -- additional filetypes
 vim.filetype.add({
diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index a2e2368..691d9a1 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -12,13 +12,6 @@ return {
 			{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
 			{ "nvim-telescope/telescope-fzy-native.nvim" },
 		},
-		keys = {
-			{
-				"<leader><leader>",
-				":lua require('telescope').extensions.smart_open.smart_open {filename_first = false }<cr>",
-				desc = "Telescope smart open",
-			},
-		},
 		config = function()
 			local util = require("lazyvim.util")
 			util.on_load("telescope.nvim", function()
@@ -30,6 +23,17 @@ return {
 
 	{
 		"telescope.nvim",
+		keys = {
+			{
+				"<leader><leader>",
+				function()
+					require("telescope").extensions.smart_open.smart_open({
+						filename_first = false,
+					})
+				end,
+				desc = "Telescope smart open",
+			},
+		},
 		opts = function(_, opts)
 			local actions = require("telescope.actions")
 			opts.defaults = {
@@ -50,15 +54,17 @@ return {
 					i = {
 						["<esc>"] = actions.close, -- <Esc> close popup
 						["<C-u>"] = false, -- <C-u> clear prompt
+						["<C-w>"] = false, -- <C-u> clear prompt
 					},
 				},
-				sorting_strategy = "ascending",
-				winblend = 0,
-				wrap_results = true,
+				path_display = { "filename_first" },
 				previewer = false,
 				preview = {
 					hide_on_startup = true,
 				},
+				sorting_strategy = "ascending",
+				winblend = 0,
+				wrap_results = true,
 			}
 		end,
 	},
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 6c54725..89fc6aa 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -1,11 +1,4 @@
 return {
-	{
-		"nvim-telescope/telescope-frecency.nvim",
-		config = function()
-			require("telescope").load_extension("frecency")
-		end,
-	},
-
 	{
 		"nvimtools/none-ls.nvim",
 		opts = function(_, opts)

From 4607390b2df694d827753cd3c6436352399e842e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 29 May 2024 19:46:03 +0200
Subject: [PATCH 270/656] nvim: add direnv.vim

---
 .config/nvim/lazy-lock.json         | 17 +++++++++--------
 .config/nvim/lua/plugins/extras.lua |  6 ++++++
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index dbdecf7..46648ce 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,6 +1,6 @@
 {
-  "LazyVim": { "branch": "main", "commit": "59204df1cb4a1d0176005dd7dc901ddbae9d23bd" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "9a5992a881583d886bfbb46631a09f736f0fae50" },
+  "LazyVim": { "branch": "main", "commit": "505ce3851c600a8c1fc0c57f1c4ea790891c6023" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "931f9f3b7b60ec976159cb01b4a40da3829ac2fd" },
   "alabaster.nvim": { "branch": "main", "commit": "5bb485d630d50796d4c8c7edc0f0fb9001fccde3" },
   "catppuccin": { "branch": "main", "commit": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
@@ -12,6 +12,7 @@
   "conform.nvim": { "branch": "master", "commit": "f3b930db4964d60e255c8f9e37b7f2218dfc08cb" },
   "crates.nvim": { "branch": "main", "commit": "d556c00d60c9421c913ee54ff690df2a34f6264e" },
   "dashboard-nvim": { "branch": "master", "commit": "5182c09ac8085dc73b78ad0ea9f5479c9a866fc4" },
+  "direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" },
   "dressing.nvim": { "branch": "master", "commit": "3c38ac861e1b8d4077ff46a779cde17330b29f3a" },
   "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
   "friendly-snippets": { "branch": "main", "commit": "dd2fd1281d4b22e7b4a5bfafa3e142d958e251f2" },
@@ -39,18 +40,18 @@
   "nui.nvim": { "branch": "main", "commit": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae" },
   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
   "nvim-dap": { "branch": "master", "commit": "922ebc75c2fa9305e36402fbd8c984c8638770a0" },
-  "nvim-dap-go": { "branch": "main", "commit": "5faf165f5062187320eaf9d177c3c1f647adc22e" },
+  "nvim-dap-go": { "branch": "main", "commit": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1" },
   "nvim-dap-ui": { "branch": "master", "commit": "334cf3038c4756e6ab999cbac67c847fb654c190" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
   "nvim-lint": { "branch": "master", "commit": "e19842a05aae484957ad20710444757bc0a61d63" },
-  "nvim-lspconfig": { "branch": "master", "commit": "b972e7154bc94ab4ecdbb38c8edbccac36f83996" },
+  "nvim-lspconfig": { "branch": "master", "commit": "d70633830acf605ec03d9728698d9e7232442eb4" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
   "nvim-noirbuddy": { "branch": "master", "commit": "f3e35f42cf3f08b7351a69bf3a92b7e80a564f30" },
   "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
   "nvim-snippets": { "branch": "main", "commit": "67f44a552f03b5de23af1900d01af3256a3da2bc" },
-  "nvim-spectre": { "branch": "master", "commit": "5690ea46baf08bbc1623980012e14b6239ce582e" },
-  "nvim-treesitter": { "branch": "master", "commit": "245da4eb2e52d14b034bbbedec9671e997ede764" },
+  "nvim-spectre": { "branch": "master", "commit": "366f46fdd4a1593cc237aea13d5ef113739a472c" },
+  "nvim-treesitter": { "branch": "master", "commit": "aa02427dfeaead86fae038024ae7b29299f08b8c" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "3557e41418b4a6c5b85d5d64abe94c9c50fa9b14" },
   "nvim-ts-autotag": { "branch": "main", "commit": "8ae54b90e36ef1fc5267214b30c2cbff71525fe4" },
   "nvim-web-devicons": { "branch": "master", "commit": "b77921fdc44833c994fdb389d658ccbce5490c16" },
@@ -61,11 +62,11 @@
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
-  "telescope.nvim": { "branch": "master", "commit": "349660c0d35da06459ee8589af77de2086b652ce" },
+  "telescope.nvim": { "branch": "master", "commit": "4c96370cf93e2ba287548da12d673442d0ffecc3" },
   "todo-comments.nvim": { "branch": "main", "commit": "e1549807066947818113a7d7ed48f637e49620d3" },
   "tokyonight.nvim": { "branch": "main", "commit": "0fae425aaab04a5f97666bd431b96f2f19c36935" },
   "trouble.nvim": { "branch": "dev", "commit": "e2185bf6e63ef9bd75f1819f43846e2b0f10953b" },
   "ts-comments.nvim": { "branch": "main", "commit": "f7ded340b4c6b317593b867838bf7ace354a67d4" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
-  "yanky.nvim": { "branch": "main", "commit": "8756d19923ad871eb95f543a8a98c026b4a8494f" }
+  "yanky.nvim": { "branch": "main", "commit": "32882f6d3e7bbc8687a71540a695853036511b2c" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 89fc6aa..8fb417d 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -1,4 +1,10 @@
 return {
+	{
+		"direnv/direnv.vim",
+		lazy = false,
+		priority = 900,
+	},
+
 	{
 		"nvimtools/none-ls.nvim",
 		opts = function(_, opts)

From 22880f43ab0d0c0e3ed4c92748f82ed0ac80c3a6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 29 May 2024 20:51:30 +0200
Subject: [PATCH 271/656] wezterm-edit-helper: no more need to hack the env
 vars, thanks to direnv.vim

---
 bin/wezterm-edit-helper | 28 +---------------------------
 1 file changed, 1 insertion(+), 27 deletions(-)

diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper
index c0a9421..ecd968d 100755
--- a/bin/wezterm-edit-helper
+++ b/bin/wezterm-edit-helper
@@ -18,33 +18,7 @@ fi
 
 fre --store_name "edit-history" --add "$_file"
 
-_nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
-
-nvim --server "$_nvim_socket" --remote "$_file"
-
-function _nvim_setenv() {
-	nvim --server "$_nvim_socket" --remote-expr "execute(\"let \$${1} = \\\"${2}\\\"\")" 2>&1 >/dev/null
-}
-
-_nvim_setenv AR "$AR"
-_nvim_setenv AS "$AS"
-_nvim_setenv BUILD_COMMAND "$BUILD_COMMAND"
-_nvim_setenv CC "$CC"
-_nvim_setenv CXX "$CXX"
-_nvim_setenv GOFLAGS "$GOFLAGS"
-_nvim_setenv GOPACKAGESDRIVER "$GOPACKAGESDRIVER"
-_nvim_setenv LC_ALL "$LC_ALL"
-_nvim_setenv LD "$LD"
-_nvim_setenv NM "$NM"
-_nvim_setenv NM "$NM"
-_nvim_setenv OBJCOPY "$OBJCOPY"
-_nvim_setenv OBJDUMP "$OBJDUMP"
-_nvim_setenv PATH "$PATH"
-_nvim_setenv RANLIB "$RANLIB"
-_nvim_setenv READELF "$READELF"
-_nvim_setenv RUST_SRC_PATH "$RUST_SRC_PATH"
-_nvim_setenv SIZE "$SIZE"
-_nvim_setenv STRIP "$STRIP"
+nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote "$_file"
 
 # Wezterm: switch tab to nvim
 printf "\033]1337;SetUserVar=%s=%s\007" nvim_activate $(date +%s | base64)

From b18bec4cb4a2113ccc8482dc7f5458d7b291727c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 30 May 2024 19:06:20 +0200
Subject: [PATCH 272/656] wezterm: use default gpu settings

---
 .config/wezterm/wezterm.lua | 2 --
 1 file changed, 2 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 4f8d0e8..fd558d7 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -137,8 +137,6 @@ config.unicode_version = 14
 
 -- Config
 config.enable_wayland = true
-config.front_end = "WebGpu"
-config.webgpu_power_preference = "HighPerformance"
 config.term = "wezterm"
 config.check_for_updates = false
 

From 8f7e8cc83c979126ebc39882c77fb44c6de795dc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Thu, 30 May 2024 19:54:42 +0200
Subject: [PATCH 273/656] nvim: add overseer

---
 .config/nvim/lazy-lock.json           | 41 ++++++------
 .config/nvim/lua/config/lazy.lua      |  8 +++
 .config/nvim/lua/plugins/coding.lua   |  1 +
 .config/nvim/lua/plugins/extras.lua   |  1 +
 .config/nvim/lua/plugins/overseer.lua | 90 +++++++++++++++++++++++++++
 5 files changed, 123 insertions(+), 18 deletions(-)
 create mode 100644 .config/nvim/lua/plugins/overseer.lua

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 46648ce..8367fe2 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,5 +1,5 @@
 {
-  "LazyVim": { "branch": "main", "commit": "505ce3851c600a8c1fc0c57f1c4ea790891c6023" },
+  "LazyVim": { "branch": "main", "commit": "80143069ff192beaed893ebc4e252adf33936e72" },
   "SchemaStore.nvim": { "branch": "main", "commit": "931f9f3b7b60ec976159cb01b4a40da3829ac2fd" },
   "alabaster.nvim": { "branch": "main", "commit": "5bb485d630d50796d4c8c7edc0f0fb9001fccde3" },
   "catppuccin": { "branch": "main", "commit": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe" },
@@ -15,10 +15,10 @@
   "direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" },
   "dressing.nvim": { "branch": "master", "commit": "3c38ac861e1b8d4077ff46a779cde17330b29f3a" },
   "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
-  "friendly-snippets": { "branch": "main", "commit": "dd2fd1281d4b22e7b4a5bfafa3e142d958e251f2" },
-  "fzf": { "branch": "master", "commit": "99bd6de5415dccec4b1b21121224116bbfbc462f" },
+  "friendly-snippets": { "branch": "main", "commit": "d0610077b6129cf9f7f78afbe3a1425d60f6e2f1" },
+  "fzf": { "branch": "master", "commit": "124cd70710cb7c94ef2282773494bb0d727598d8" },
   "fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
-  "gitsigns.nvim": { "branch": "main", "commit": "cdfcd9d39d23c46ae9a040de2c6a8b8bf868746e" },
+  "gitsigns.nvim": { "branch": "main", "commit": "75dc649106827183547d3bedd4602442340d2f7f" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "incline.nvim": { "branch": "main", "commit": "16fc9c073e3ea4175b66ad94375df6d73fc114c0" },
   "indent-blankline.nvim": { "branch": "master", "commit": "d98f537c3492e87b6dc6c2e3f66ac517528f406f" },
@@ -30,31 +30,36 @@
   "mini.ai": { "branch": "main", "commit": "7859b6344f5cee567a94f173859d25e20ba1a77e" },
   "mini.colors": { "branch": "main", "commit": "11b3b7056343d324abb69910e3cdec53bbf2a7c9" },
   "mini.indentscope": { "branch": "main", "commit": "f0d7faa064c892b96997810afcddfadc3f2a15b3" },
-  "modes.nvim": { "branch": "main", "commit": "4035a46aaabe43faf1b54740575af9dd5bb03809" },
+  "modes.nvim": { "branch": "main", "commit": "0a279a526859c750d8f494da3ea0322776cd94f4" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
   "neocodeium": { "branch": "main", "commit": "4a46f6438bcdb21c562f83036bce75c719834072" },
-  "neoconf.nvim": { "branch": "main", "commit": "4e204e0d423e70293b81ba1655ed17e1f3c97986" },
+  "neoconf.nvim": { "branch": "main", "commit": "f1fd38d61d11f3b1b3e7dc75dc667f79cf2fa58b" },
   "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
-  "noice.nvim": { "branch": "main", "commit": "f119045f38792ad5311e5f9be7a879e4c1a95fe0" },
-  "none-ls.nvim": { "branch": "main", "commit": "60f5f80686f5a272ed3281a7d4962cb54dc5348e" },
+  "neotest": { "branch": "master", "commit": "6f35d797882c6ce0ab7c87dc86561512dc3d7aba" },
+  "neotest-go": { "branch": "main", "commit": "92950ad7be2ca02a41abca5c6600ff6ffaf5b5d6" },
+  "neotest-rust": { "branch": "main", "commit": "0418811e1e3499b2501593f2e131d02f5e6823d4" },
+  "noice.nvim": { "branch": "main", "commit": "69c6ad5c1f1c0777125d0275f9871d8609cb0521" },
+  "none-ls.nvim": { "branch": "main", "commit": "f5b960a73418249aebcdae3455de320360509253" },
   "nui.nvim": { "branch": "main", "commit": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae" },
   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
-  "nvim-dap": { "branch": "master", "commit": "922ebc75c2fa9305e36402fbd8c984c8638770a0" },
+  "nvim-dap": { "branch": "master", "commit": "abb238f631609ea4be496ba7946f4f3aaec86c6a" },
   "nvim-dap-go": { "branch": "main", "commit": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1" },
-  "nvim-dap-ui": { "branch": "master", "commit": "334cf3038c4756e6ab999cbac67c847fb654c190" },
+  "nvim-dap-ui": { "branch": "master", "commit": "b7267003ba4dd860350be86f75b9d9ea287cedca" },
   "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
   "nvim-lint": { "branch": "master", "commit": "e19842a05aae484957ad20710444757bc0a61d63" },
-  "nvim-lspconfig": { "branch": "master", "commit": "d70633830acf605ec03d9728698d9e7232442eb4" },
+  "nvim-lspconfig": { "branch": "master", "commit": "38de86f82efd9ba0881203767d6a8e1815abca28" },
   "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
   "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
   "nvim-noirbuddy": { "branch": "master", "commit": "f3e35f42cf3f08b7351a69bf3a92b7e80a564f30" },
   "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
-  "nvim-snippets": { "branch": "main", "commit": "67f44a552f03b5de23af1900d01af3256a3da2bc" },
+  "nvim-snippets": { "branch": "main", "commit": "0b86938397512dad4c0790b4ea4a835ad65dc0f6" },
   "nvim-spectre": { "branch": "master", "commit": "366f46fdd4a1593cc237aea13d5ef113739a472c" },
-  "nvim-treesitter": { "branch": "master", "commit": "aa02427dfeaead86fae038024ae7b29299f08b8c" },
+  "nvim-treesitter": { "branch": "master", "commit": "5c924407cf110e9da4f3ba02ffed127b4198ad89" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "3557e41418b4a6c5b85d5d64abe94c9c50fa9b14" },
-  "nvim-ts-autotag": { "branch": "main", "commit": "8ae54b90e36ef1fc5267214b30c2cbff71525fe4" },
+  "nvim-ts-autotag": { "branch": "main", "commit": "bcf3146864262ef2d3c877beba3e222b5c73780d" },
+  "nvim-vtsls": { "branch": "main", "commit": "719fabc328c48fa03b1f3373205fcd1f60d21dc2" },
   "nvim-web-devicons": { "branch": "master", "commit": "b77921fdc44833c994fdb389d658ccbce5490c16" },
+  "overseer.nvim": { "branch": "master", "commit": "31f309692c9dd9162d3f63b5456a7932799c347c" },
   "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
   "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
   "rustaceanvim": { "branch": "master", "commit": "e306c742bd7f7183e371cd91268b72d9db1bbae0" },
@@ -62,11 +67,11 @@
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
-  "telescope.nvim": { "branch": "master", "commit": "4c96370cf93e2ba287548da12d673442d0ffecc3" },
+  "telescope.nvim": { "branch": "master", "commit": "dfa230be84a044e7f546a6c2b0a403c739732b86" },
   "todo-comments.nvim": { "branch": "main", "commit": "e1549807066947818113a7d7ed48f637e49620d3" },
   "tokyonight.nvim": { "branch": "main", "commit": "0fae425aaab04a5f97666bd431b96f2f19c36935" },
-  "trouble.nvim": { "branch": "dev", "commit": "e2185bf6e63ef9bd75f1819f43846e2b0f10953b" },
-  "ts-comments.nvim": { "branch": "main", "commit": "f7ded340b4c6b317593b867838bf7ace354a67d4" },
+  "trouble.nvim": { "branch": "dev", "commit": "3d95dbdae6e633d153e5c2fd4ae77cdf9294c0e8" },
+  "ts-comments.nvim": { "branch": "main", "commit": "503864726e7d83034969e6d2c78aa6f1158fd03e" },
   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
-  "yanky.nvim": { "branch": "main", "commit": "32882f6d3e7bbc8687a71540a695853036511b2c" }
+  "yanky.nvim": { "branch": "main", "commit": "79338563e85a868e59cda02c51b54d90a5514a12" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 72fd4cb..007ffff 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -35,6 +35,14 @@ require("lazy").setup({
 		version = false, -- always use the latest git commit
 		-- version = "*", -- try installing the latest stable version for plugins that support semver
 	},
+	icons = {
+		overseer = {
+			Canceled = " ",
+			Failure = " ",
+			Success = " ",
+			Running = " ",
+		},
+	},
 	install = { colorscheme = { "default" } },
 	checker = { enabled = false }, -- automatically check for plugin updates
 	performance = {
diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
index 46b8f6b..aee499e 100644
--- a/.config/nvim/lua/plugins/coding.lua
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -1,4 +1,5 @@
 return {
+
 	{
 		"echasnovski/mini.pairs",
 		enabled = false,
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 8fb417d..2999a10 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -46,6 +46,7 @@ return {
 		"simrat39/rust-tools.nvim",
 		enabled = false,
 	},
+
 	{
 		"mrcjkb/rustaceanvim",
 		version = "^4", -- Recommended
diff --git a/.config/nvim/lua/plugins/overseer.lua b/.config/nvim/lua/plugins/overseer.lua
new file mode 100644
index 0000000..fb545a8
--- /dev/null
+++ b/.config/nvim/lua/plugins/overseer.lua
@@ -0,0 +1,90 @@
+return {
+	{
+		"folke/which-key.nvim",
+		opts = function(_, opts)
+			if LazyVim.has("noice.nvim") then
+				opts.defaults["<leader>o"] = { name = "+overseer" }
+			end
+		end,
+	},
+
+	{
+		"folke/edgy.nvim",
+		optional = true,
+		opts = function(_, opts)
+			opts.right = opts.right or {}
+			table.insert(opts.right, {
+				title = "Overseer",
+				ft = "OverseerList",
+				open = function()
+					require("overseer").open()
+				end,
+			})
+		end,
+	},
+
+	{
+		"nvim-neotest/neotest",
+		dependencies = "stevearc/overseer.nvim",
+		opts = function(_, opts)
+			local consumers = opts.consumers or {}
+			consumers.overseer = require("neotest.consumers.overseer")
+		end,
+	},
+
+	{
+		"stevearc/overseer.nvim",
+		cmd = {
+			"OverseerOpen",
+			"OverseerClose",
+			"OverseerToggle",
+			"OverseerSaveBundle",
+			"OverseerLoadBundle",
+			"OverseerDeleteBundle",
+			"OverseerRunCmd",
+			"OverseerRun",
+			"OverseerInfo",
+			"OverseerBuild",
+			"OverseerQuickAction",
+			"OverseerTaskAction",
+			"OverseerClearCache",
+		},
+		dependencies = "nvim-telescope/telescope.nvim",
+		opts = {
+			dap = false,
+			task_list = {
+				bindings = {
+					["<C-h>"] = false,
+					["<C-j>"] = false,
+					["<C-k>"] = false,
+					["<C-l>"] = false,
+				},
+			},
+			form = {
+				win_opts = {
+					winblend = 0,
+				},
+			},
+			confirm = {
+				win_opts = {
+					winblend = 0,
+				},
+			},
+			task_win = {
+				win_opts = {
+					winblend = 0,
+				},
+			},
+		},
+    -- stylua: ignore
+    keys = {
+      { "<leader>ow", "<cmd>OverseerToggle<cr>",      desc = "Task list" },
+      { "<leader>oo", "<cmd>OverseerRun<cr>",         desc = "Run task" },
+      { "<leader>oq", "<cmd>OverseerQuickAction<cr>", desc = "Action recent task" },
+      { "<leader>oi", "<cmd>OverseerInfo<cr>",        desc = "Overseer Info" },
+      { "<leader>ob", "<cmd>OverseerBuild<cr>",       desc = "Task builder" },
+      { "<leader>ot", "<cmd>OverseerTaskAction<cr>",  desc = "Task action" },
+      { "<leader>oc", "<cmd>OverseerClearCache<cr>",  desc = "Clear cache" },
+    },
+	},
+}

From c23152556a177f75a6ffb5865ea6301bdafffcc3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jun 2024 11:19:07 +0200
Subject: [PATCH 274/656] fish: use typography instead of colors in theme

---
 .config/fish/fish_variables | 61 +++++++++++++++++++------------------
 1 file changed, 31 insertions(+), 30 deletions(-)

diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
index 68e6461..df4d543 100644
--- a/.config/fish/fish_variables
+++ b/.config/fish/fish_variables
@@ -1,45 +1,46 @@
 # This file contains fish universal variable definitions.
 # VERSION: 3.0
 SETUVAR __fish_initialized:3400
-SETUVAR fish_color_autosuggestion:6c7086
-SETUVAR fish_color_cancel:f38ba8
-SETUVAR fish_color_command:89b4fa
-SETUVAR fish_color_comment:7f849c\x1e\x2d\x2ditalics\x1e\x2d\x2ddim
-SETUVAR fish_color_cwd:f9e2af
-SETUVAR fish_color_cwd_root:red
-SETUVAR fish_color_end:fab387
-SETUVAR fish_color_error:f38ba8
-SETUVAR fish_color_escape:eba0ac
+SETUVAR fish_color_autosuggestion:\x2d\x2ditalics\x1e\x2d\x2dbold\x1e\x2d\x2ddim
+SETUVAR fish_color_cancel:\x1d
+SETUVAR fish_color_command:\x2d\x2dbold
+SETUVAR fish_color_comment:\x2d\x2ditalic\x1e\x2d\x2ddim
+SETUVAR fish_color_cwd:normal
+SETUVAR fish_color_cwd_root:normal
+SETUVAR fish_color_end:\x1d
+SETUVAR fish_color_error:\x1d
+SETUVAR fish_color_escape:\x1d
 SETUVAR fish_color_gray:6c7086
-SETUVAR fish_color_history_current:\x2d\x2dbold
-SETUVAR fish_color_host:89b4fa
-SETUVAR fish_color_host_remote:a6e3a1
-SETUVAR fish_color_keyword:f38ba8
-SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
-SETUVAR fish_color_normal:cdd6f4
-SETUVAR fish_color_operator:f5c2e7
-SETUVAR fish_color_option:a6e3a1
-SETUVAR fish_color_param:f2cdcd
-SETUVAR fish_color_quote:a6e3a1
-SETUVAR fish_color_redirection:f5c2e7
-SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d313244
-SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244
-SETUVAR fish_color_status:f38ba8
-SETUVAR fish_color_user:94e2d5
-SETUVAR fish_color_valid_path:\x2d\x2dunderline
+SETUVAR fish_color_history_current:\x1d
+SETUVAR fish_color_host:normal
+SETUVAR fish_color_host_remote:yellow
+SETUVAR fish_color_keyword:\x1d
+SETUVAR fish_color_match:\x1d
+SETUVAR fish_color_normal:normal
+SETUVAR fish_color_operator:\x1d
+SETUVAR fish_color_option:\x1d
+SETUVAR fish_color_param:normal
+SETUVAR fish_color_quote:\x2d\x2ditalics
+SETUVAR fish_color_redirection:\x1d
+SETUVAR fish_color_search_match:\x2dr
+SETUVAR fish_color_selection:\x2dr
+SETUVAR fish_color_status:normal
+SETUVAR fish_color_string:\x2d\x2ditalics
+SETUVAR fish_color_user:normal
+SETUVAR fish_color_valid_path:\x1d
 SETUVAR fish_cursor_default:line
 SETUVAR fish_cursor_normal:line
 SETUVAR fish_key_bindings:fish_default_key_bindings
 SETUVAR fish_pager_color_background:\x1d
-SETUVAR fish_pager_color_completion:cdd6f4
-SETUVAR fish_pager_color_description:6c7086
-SETUVAR fish_pager_color_prefix:f5c2e7
-SETUVAR fish_pager_color_progress:6c7086
+SETUVAR fish_pager_color_completion:normal
+SETUVAR fish_pager_color_description:brblack
+SETUVAR fish_pager_color_prefix:\x2d\x2dunderline
+SETUVAR fish_pager_color_progress:brblack
 SETUVAR fish_pager_color_secondary_background:\x1d
 SETUVAR fish_pager_color_secondary_completion:\x1d
 SETUVAR fish_pager_color_secondary_description:\x1d
 SETUVAR fish_pager_color_secondary_prefix:\x1d
-SETUVAR fish_pager_color_selected_background:\x1d
+SETUVAR fish_pager_color_selected_background:\x2dr
 SETUVAR fish_pager_color_selected_completion:\x1d
 SETUVAR fish_pager_color_selected_description:\x1d
 SETUVAR fish_pager_color_selected_prefix:\x1d

From 4b9f5f3dc4ba707bb9cf141e8bd18419c08f3769 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jun 2024 12:50:32 +0200
Subject: [PATCH 275/656] starship: adjust to work nicely in both dark and
 light mode

---
 .config/fish/conf.d/semantic-prompt.fish | 57 ------------------------
 .config/starship.toml                    | 39 ++++++++--------
 2 files changed, 19 insertions(+), 77 deletions(-)
 delete mode 100644 .config/fish/conf.d/semantic-prompt.fish

diff --git a/.config/fish/conf.d/semantic-prompt.fish b/.config/fish/conf.d/semantic-prompt.fish
deleted file mode 100644
index 296a561..0000000
--- a/.config/fish/conf.d/semantic-prompt.fish
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/fish
-# SPDX-License-Identifier: CC0-1.0
-if status --is-interactive
-    set _fishprompt_aid "fish"$fish_pid
-    set _fishprompt_started 0
-    # empty if running; or a numeric exit code; or CANCEL
-    set _fishprompt_postexec ""
-
-    functions -c fish_prompt _fishprompt_saved_prompt
-    set _fishprompt_prompt_count 0
-    set _fishprompt_disp_count 0
-    function _fishprompt_start --on-event fish_prompt
-        set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1)
-        # don't use post-exec, because it is called *before* omitted-newline output
-        if [ -n "$_fishprompt_postexec" ]
-            printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid
-        end
-        printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid
-    end
-
-    function fish_prompt
-        set _fishprompt_disp_count (math $_fishprompt_disp_count + 1)
-        printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt))
-        set _fishprompt_started 1
-        set _fishprompt_postexec ""
-    end
-
-    function _fishprompt_preexec --on-event fish_preexec
-        if [ "$_fishprompt_started" = 1 ]
-            printf "\033]133;C;\007"
-        end
-        set _fishprompt_started 0
-    end
-
-    function _fishprompt_postexec --on-event fish_postexec
-        set _fishprompt_postexec $status
-        _fishprompt_start
-    end
-
-    function __fishprompt_cancel --on-event fish_cancel
-        set _fishprompt_postexec CANCEL
-        _fishprompt_start
-    end
-
-    function _fishprompt_exit --on-process %self
-        if [ "$_fishprompt_started" = 1 ]
-            printf "\033]133;Z;aid=%s\007" $_fishprompt_aid
-        end
-    end
-
-    if functions -q fish_right_prompt
-        functions -c fish_right_prompt _fishprompt_saved_right_prompt
-        function fish_right_prompt
-            printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt))
-        end
-    end
-end
diff --git a/.config/starship.toml b/.config/starship.toml
index 03ad822..f983e5f 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -3,9 +3,10 @@
 add_newline = true
 
 format = """\
-${custom.pwd}\
 $fill\
+${custom.pwd}\
 $line_break\
+$hostname\
 $directory\
 ($character)\
 """
@@ -13,43 +14,41 @@ $directory\
 right_format = """\
 $cmd_duration\
 $git_branch$git_commit$git_status$git_state\
-$hostname\
 """
 
 [hostname]
 ssh_only = false
-format = " [](fg:#222222)[ $hostname ](italic dimmed bg:#222222 fg:#999999)"
+format = "[$hostname](italic bold)"
 disabled = false
 
 [time]
 disabled = false
-format = ' [$time]($style)'
-style = "italic dimmed fg:#666666"
+format = '[ $time](italic dimmed inverted)'
 time_format = '%R'
 
 [custom.pwd]
-command = "pwd"
+command = "prompt_pwd -D 100"
 when = true
-format = "[($output)]($style) "
-style = "italic dimmed fg:#777777"
+format = "[ $output]($style)"
+style = "italic dimmed"
 
 [directory]
 fish_style_pwd_dir_length = 1
 truncation_length = 1
 truncate_to_repo = false
 truncation_symbol = "…"
-style = "italic fg:#88aabb"
+style = "italic"
 
 [line_break]
 disabled = false
 
 [fill]
-symbol = '⎯'
-style = 'fg:#333333'
+symbol = '┄'
+style = 'dimmed fg:#888888'
 
 [character]
-success_symbol = "[%](bold fg:#66cc99)"
-error_symbol = "[%](bold red)"
+success_symbol = "[%](bold)"
+error_symbol = "[✖](bold red)"
 
 [cmd_duration]
 min_time = 500
@@ -57,22 +56,22 @@ format = '[󱦟 $duration ](yellow)'
 
 [git_branch]
 format = "[$symbol$branch]($style)"
-style = "italic bold fg:#00ac73"
+style = "italic bold green"
 symbol = " "
 truncation_length = 16
 truncation_symbol = ""
 
 [git_commit]
 format = "[ $hash$tag]($style) "
-style = "fg:#00d992"
+style = "cyan"
 
 [git_state]
 style = ""
 
 [git_status]
-format = '([$all_status$ahead_behind]($style)) '
+format = '([$all_status$ahead_behind]($style))'
 style = "fg:#00ac73"
-modified = "[ 󰦒](fg:#d1c000)"
-deleted = "[ ✘](fg:#b93400)"
-untracked = "[ ?](fg:#9c49aa)"
-staged = "[ 󰐖](fg:#71a4aa)"
+modified = "[ 󰦒](yellow)"
+deleted = "[ ✘](red)"
+untracked = "[ ?](purple)"
+staged = "[ 󰐖](cyan)"

From b62392917086d54448e4f434a24ced91a84f7fe0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jun 2024 16:00:01 +0200
Subject: [PATCH 276/656] git: a more ergonomic log

---
 .gitconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index 31e32f6..fa0f689 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -25,8 +25,8 @@ copr = "!f() { \
   ;};f"
 
 g = graph -S -m simple -s round
-ll = "log --first-parent --topo-order --pretty='format:%Creset%x1B[1;3;38:2:127:114:88m%h %G? ┼%x1B[0;38:2:154:234:255m%d%Creset %x1B[3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁᠁᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
-lla = "log --graph --all --topo-order --pretty='format:%x1B[38:2:233:218:190m%h%x1B[38:2:154:234:255m%d%Creset %x1B[1;3;38:2:194:203:226m%s %x1B[38:2:93:112:164m᠁ %x1B[38:2:74:119:163m%al %x1B[2;38:2:93:112:164m%ah'"
+ll = "log --pretty='format:%x1B[0;3;36m%as %G? %x1B[0;95;3m%<(12,trunc)%al %x1B[3;32m• %h%x1B[0;1;92m%(decorate:prefix= [,suffix=]%n)%>|(35)%Creset %s'"
+lla = "log --graph --all --topo-order --pretty='format:\t%x1B[0;3;36m%as %x1B[0;95;3m%<(12)%al %x1B[3;32m• %h%x1B[0;1;92m%d%x1B[0m %s'"
 
 guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"
 serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/

From 9f9262ccbedb002e6982e190199a461632ce5436 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 1 Jun 2024 17:32:28 +0200
Subject: [PATCH 277/656] wezterm: disable freetype hinting explicitly

---
 .config/wezterm/wezterm.lua | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index fd558d7..07cde68 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -103,7 +103,7 @@ local function font_for_appearance(appearance)
 	else
 		return wezterm.font({
 			family = "IosevkaShelman Nerd Font",
-			--weight = "Regular",
+			-- weight = "Regular",
 		})
 	end
 end
@@ -129,11 +129,14 @@ config.font_rules = {
 	},
 }
 -- config.dpi = 192
-config.font_size = 15
+config.dpi = 144
+config.font_size = 14
 config.line_height = 1.0
 config.warn_about_missing_glyphs = false
 config.bold_brightens_ansi_colors = false
 config.unicode_version = 14
+config.freetype_load_flags = "NO_HINTING"
+config.freetype_load_target = "HorizontalLcd"
 
 -- Config
 config.enable_wayland = true

From 3dd6fa855b91cf848db2ce8c433050b2b4ce6abe Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 1 Jun 2024 23:58:47 +0200
Subject: [PATCH 278/656] nvim: silence direnv

---
 .config/nvim/lua/plugins/extras.lua | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 2999a10..f894c32 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -3,6 +3,9 @@ return {
 		"direnv/direnv.vim",
 		lazy = false,
 		priority = 900,
+		config = function()
+			vim.g.direnv_silent_load = 1
+		end,
 	},
 
 	{

From ce87785b520ad7c52759c41fba722ce2fb7c5aee Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 3 Jun 2024 11:34:21 +0200
Subject: [PATCH 279/656] wezterm: berkeley mono goodness

---
 .config/wezterm/colors/shelman-dark.toml |  6 ++-
 .config/wezterm/wezterm.lua              | 58 +++++++++---------------
 2 files changed, 25 insertions(+), 39 deletions(-)

diff --git a/.config/wezterm/colors/shelman-dark.toml b/.config/wezterm/colors/shelman-dark.toml
index 5679fbb..430d587 100644
--- a/.config/wezterm/colors/shelman-dark.toml
+++ b/.config/wezterm/colors/shelman-dark.toml
@@ -25,14 +25,16 @@ brights = [
   "#ffffff",
 ]
 
-# background = "#000000"
+#background = "#000000"
 background = "#0d1117"
+
 # background = "#11171d"
 #background = "#171e26"
 # background = "#161923"
 # foreground = "#e3e0cd"
 # foreground = "#d3d0bd"
-foreground = "#cccccc"
+#foreground = "#cccccc"
+foreground = "#b2b2b2"
 cursor_bg = "#00d992"
 cursor_fg = "#000000"
 cursor_border = "#000000"
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 07cde68..75e7a56 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -94,49 +94,31 @@ local function scheme_for_appearance(appearance)
 	end
 end
 
-local function font_for_appearance(appearance)
-	if appearance:find("Dark") then
-		return wezterm.font({
-			family = "IosevkaShelman Nerd Font",
-			weight = "Light",
-		})
-	else
-		return wezterm.font({
-			family = "IosevkaShelman Nerd Font",
-			-- weight = "Regular",
-		})
-	end
-end
 config.color_scheme = scheme_for_appearance(wezterm.gui.get_appearance())
 
 -- ------------------------------------------------------------------------------------
 -- Fonts
-config.font = font_for_appearance(wezterm.gui.get_appearance())
-config.font_rules = {
-	{
-		italic = true,
-		intensity = "Bold",
-		reverse = false,
-		font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
-		-- font = wezterm.font("Iosevka Term Curly Slab", { weight = "Thin", italic = true }),
-	},
-
-	{
-		italic = true,
-		intensity = "Normal",
-		reverse = false,
-		font = wezterm.font("IosevkaShelman Nerd Font", { weight = "Light", italic = true }),
-	},
-}
--- config.dpi = 192
-config.dpi = 144
+config.font = wezterm.font({ family = "Berkeley Mono Variable", weight = "Regular", stretch = "ExtraCondensed" })
+-- config.font = wezterm.font({ family = "Berkeley Mono" })
+-- config.font_rules = {
+-- 	{
+-- 		italic = true,
+-- 		intensity = "Bold",
+-- 		reverse = false,
+-- 		-- font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
+-- 		-- font = wezterm.font("Iosevka Term Curly Slab", { weight = "Light", italic = true }),
+-- 		font = wezterm.font("Monaspace Krypton", { weight = "ExtraLight", italic = true }),
+-- 	},
+-- }
 config.font_size = 14
-config.line_height = 1.0
+config.font_size = 18
+-- config.line_height = 1.15
 config.warn_about_missing_glyphs = false
 config.bold_brightens_ansi_colors = false
 config.unicode_version = 14
 config.freetype_load_flags = "NO_HINTING"
 config.freetype_load_target = "HorizontalLcd"
+config.custom_block_glyphs = false
 
 -- Config
 config.enable_wayland = true
@@ -153,10 +135,10 @@ config.use_resize_increments = true
 config.adjust_window_size_when_changing_font_size = false
 config.window_decorations = "RESIZE"
 config.window_frame = {
-	border_left_width = "4px",
-	border_right_width = "4px",
-	border_bottom_height = "4px",
-	border_top_height = "4px",
+	border_left_width = "3px",
+	border_right_width = "3px",
+	border_bottom_height = "3px",
+	border_top_height = "3px",
 	border_left_color = "#000000",
 	border_right_color = "#000000",
 	border_bottom_color = "#000000",
@@ -210,6 +192,8 @@ config.keys = {
 	{ key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(0.5) },
 	{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
 	{ key = "o", mods = "ALT", action = act.ActivateCommandPalette },
+	{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
+	{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
 	{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
 	{ key = "1", mods = "ALT", action = act.EmitEvent("activate-nvim") },
 	{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },

From 0d9644beb6e173e6e6a03235402e2252befbb280 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 2 Jun 2024 15:02:18 +0200
Subject: [PATCH 280/656] wezterm-edit-helper: hide output from remote nvim
 call

---
 bin/wezterm-edit-helper | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper
index ecd968d..ca4274a 100755
--- a/bin/wezterm-edit-helper
+++ b/bin/wezterm-edit-helper
@@ -18,7 +18,7 @@ fi
 
 fre --store_name "edit-history" --add "$_file"
 
-nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote "$_file"
+nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote "$_file" &>/dev/null
 
 # Wezterm: switch tab to nvim
 printf "\033]1337;SetUserVar=%s=%s\007" nvim_activate $(date +%s | base64)

From 7d8ca69c710c4189cdf1b4856e72593bdce7fdf0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 3 Jun 2024 13:27:37 +0200
Subject: [PATCH 281/656] nvim: replace ibl, mini.indentscope with indentmini

---
 .config/nvim/lua/plugins/ui.lua | 72 +++++----------------------------
 1 file changed, 9 insertions(+), 63 deletions(-)

diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index 3105269..b6c08af 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -1,25 +1,3 @@
-local hooks = require("ibl.hooks")
--- create the highlight groups in the highlight setup hook, so they are reset
--- every time the colorscheme changes
-hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
-	local colorbuddy = require("colorbuddy")
-	local Color = colorbuddy.Color
-	local colors = colorbuddy.colors
-	local Group = colorbuddy.Group
-	local groups = colorbuddy.groups
-	local styles = colorbuddy.styles
-	Color.new("IndentBlanklineIndent", "#1e2835", styles.nocombine)
-	Group.new("IndentBlanklineIndent1", colors.IndentBlanklineIndent:light(0.1))
-	Group.new("IndentBlanklineIndent2", colors.IndentBlanklineIndent:light(0.15))
-	Group.new("IndentBlanklineIndent3", colors.IndentBlanklineIndent:light(0.2))
-	Group.new("IndentBlanklineIndent4", colors.IndentBlanklineIndent:light(0.25))
-	Group.new("IndentBlanklineIndent5", colors.IndentBlanklineIndent:light(0.3))
-	Group.new("IndentBlanklineIndent6", colors.IndentBlanklineIndent:light(0.35))
-
-	Color.new("IndentBlanklineContextChar", "#f0a972", styles.nocombine)
-	Group.new("IndentBlanklineContextChar", colors.IndentBlanklineContextChar)
-end)
-
 local logo = [[
 ███████ ██   ██ ███████ ██      ███    ███  █████  ███    ██      ██████  ██████   ██████  ██    ██ ██████ 
 ██      ██   ██ ██      ██      ████  ████ ██   ██ ████   ██     ██       ██   ██ ██    ██ ██    ██ ██   ██
@@ -44,55 +22,23 @@ return {
 		},
 	},
 
-	{
-		"echasnovski/mini.indentscope",
-		opts = {
-			draw = {
-				delay = 50, -- ms
-			},
-		},
-	},
-
 	{
 		"akinsho/bufferline.nvim",
 		enabled = false,
 	},
 
 	{
-		"lukas-reineke/indent-blankline.nvim",
-		dependencies = {
-			{ "tjdevries/colorbuddy.nvim" },
-		},
-		main = "ibl",
-		opts = {
-			indent = {
-				char = "┊",
-				tab_char = "┊",
-				highlight = {
-					"IndentBlanklineIndent1",
-					"IndentBlanklineIndent2",
-					"IndentBlanklineIndent3",
-					"IndentBlanklineIndent4",
-					"IndentBlanklineIndent5",
-					"IndentBlanklineIndent6",
-				},
-			},
-			scope = {
-				enabled = false,
-				show_start = false,
-				char = "│",
-				highlight = {
-					"IndentBlanklineIndent1",
-					"IndentBlanklineIndent2",
-					"IndentBlanklineIndent3",
-					"IndentBlanklineIndent4",
-					"IndentBlanklineIndent5",
-					"IndentBlanklineIndent6",
-				},
-			},
-		},
+		"echasnovski/mini.indentscope",
+		enabled = false,
 	},
 
+	{
+		"lukas-reineke/indent-blankline.nvim",
+		enabled = false,
+	},
+
+	{ "nvimdev/indentmini.nvim", opts = { char = "⸽" } },
+
 	{
 		"mvllow/modes.nvim",
 		opts = {

From 2339c4d2b9e2c0ffbc31266481adbc0ac83e8c86 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 5 Jun 2024 08:11:17 +0200
Subject: [PATCH 282/656] wezterm: renderfight

---
 .config/nvim/lazy-lock.json              | 56 +++++++++++-------------
 .config/nvim/lua/plugins/colorscheme.lua |  5 +--
 .config/wezterm/wezterm.lua              | 28 +++++++-----
 3 files changed, 45 insertions(+), 44 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 8367fe2..e69fa0b 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,5 +1,5 @@
 {
-  "LazyVim": { "branch": "main", "commit": "80143069ff192beaed893ebc4e252adf33936e72" },
+  "LazyVim": { "branch": "main", "commit": "b289fea1636eda08d82344dc32a114bca550e375" },
   "SchemaStore.nvim": { "branch": "main", "commit": "931f9f3b7b60ec976159cb01b4a40da3829ac2fd" },
   "alabaster.nvim": { "branch": "main", "commit": "5bb485d630d50796d4c8c7edc0f0fb9001fccde3" },
   "catppuccin": { "branch": "main", "commit": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe" },
@@ -9,69 +9,63 @@
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "codeium.nvim": { "branch": "main", "commit": "d3b88eb3aa1de6da33d325c196b8a41da2bcc825" },
   "colorbuddy.nvim": { "branch": "master", "commit": "8b968581e5c19d22a861d5f3fe5dbd83394fa681" },
-  "conform.nvim": { "branch": "master", "commit": "f3b930db4964d60e255c8f9e37b7f2218dfc08cb" },
+  "conform.nvim": { "branch": "master", "commit": "63e0a32c85a39484813957dc480f171907aa90b9" },
   "crates.nvim": { "branch": "main", "commit": "d556c00d60c9421c913ee54ff690df2a34f6264e" },
-  "dashboard-nvim": { "branch": "master", "commit": "5182c09ac8085dc73b78ad0ea9f5479c9a866fc4" },
+  "dashboard-nvim": { "branch": "master", "commit": "7596101deb41192a4f7939d2c4f1a531a984b801" },
   "direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" },
-  "dressing.nvim": { "branch": "master", "commit": "3c38ac861e1b8d4077ff46a779cde17330b29f3a" },
+  "dressing.nvim": { "branch": "master", "commit": "e3714c8049b2243e792492c4149e4cc395c68eb9" },
   "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
   "friendly-snippets": { "branch": "main", "commit": "d0610077b6129cf9f7f78afbe3a1425d60f6e2f1" },
-  "fzf": { "branch": "master", "commit": "124cd70710cb7c94ef2282773494bb0d727598d8" },
+  "fzf": { "branch": "master", "commit": "3ee1fc203406debab432dbf3cb67f37ea7cb3d30" },
   "fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
   "gitsigns.nvim": { "branch": "main", "commit": "75dc649106827183547d3bedd4602442340d2f7f" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "incline.nvim": { "branch": "main", "commit": "16fc9c073e3ea4175b66ad94375df6d73fc114c0" },
   "indent-blankline.nvim": { "branch": "master", "commit": "d98f537c3492e87b6dc6c2e3f66ac517528f406f" },
-  "lazy.nvim": { "branch": "main", "commit": "24fa2a97085ca8a7220b5b078916f81e316036fd" },
+  "lazy.nvim": { "branch": "main", "commit": "b0ba3f9399bf48c86abaa4db1a40bd0b681d5018" },
+  "lazydev.nvim": { "branch": "main", "commit": "f3b3795c6daf11da989220d859c0468b82d766ae" },
+  "luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "a4caa0d083aab56f6cd5acf2d42331b74614a585" },
-  "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
-  "mason.nvim": { "branch": "main", "commit": "49ff59aded1047a773670651cfa40e76e63c6377" },
+  "mason.nvim": { "branch": "main", "commit": "0950b15060067f752fde13a779a994f59516ce3d" },
   "mini.ai": { "branch": "main", "commit": "7859b6344f5cee567a94f173859d25e20ba1a77e" },
-  "mini.colors": { "branch": "main", "commit": "11b3b7056343d324abb69910e3cdec53bbf2a7c9" },
+  "mini.comment": { "branch": "main", "commit": "c8406379987c321ecdef9f53e1ca741a55002104" },
   "mini.indentscope": { "branch": "main", "commit": "f0d7faa064c892b96997810afcddfadc3f2a15b3" },
   "modes.nvim": { "branch": "main", "commit": "0a279a526859c750d8f494da3ea0322776cd94f4" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
   "neocodeium": { "branch": "main", "commit": "4a46f6438bcdb21c562f83036bce75c719834072" },
-  "neoconf.nvim": { "branch": "main", "commit": "f1fd38d61d11f3b1b3e7dc75dc667f79cf2fa58b" },
-  "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
   "neotest": { "branch": "master", "commit": "6f35d797882c6ce0ab7c87dc86561512dc3d7aba" },
   "neotest-go": { "branch": "main", "commit": "92950ad7be2ca02a41abca5c6600ff6ffaf5b5d6" },
-  "neotest-rust": { "branch": "main", "commit": "0418811e1e3499b2501593f2e131d02f5e6823d4" },
   "noice.nvim": { "branch": "main", "commit": "69c6ad5c1f1c0777125d0275f9871d8609cb0521" },
   "none-ls.nvim": { "branch": "main", "commit": "f5b960a73418249aebcdae3455de320360509253" },
   "nui.nvim": { "branch": "main", "commit": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae" },
   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
-  "nvim-dap": { "branch": "master", "commit": "abb238f631609ea4be496ba7946f4f3aaec86c6a" },
-  "nvim-dap-go": { "branch": "main", "commit": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1" },
-  "nvim-dap-ui": { "branch": "master", "commit": "b7267003ba4dd860350be86f75b9d9ea287cedca" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
-  "nvim-lint": { "branch": "master", "commit": "e19842a05aae484957ad20710444757bc0a61d63" },
-  "nvim-lspconfig": { "branch": "master", "commit": "38de86f82efd9ba0881203767d6a8e1815abca28" },
-  "nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
+  "nvim-lint": { "branch": "master", "commit": "1a3a8d047bc01f1760ae4a0f5e80f111ea222e67" },
+  "nvim-lspconfig": { "branch": "master", "commit": "74e14808cdb15e625449027019406e1ff6dda020" },
   "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
-  "nvim-noirbuddy": { "branch": "master", "commit": "f3e35f42cf3f08b7351a69bf3a92b7e80a564f30" },
   "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
-  "nvim-snippets": { "branch": "main", "commit": "0b86938397512dad4c0790b4ea4a835ad65dc0f6" },
+  "nvim-snippets": { "branch": "main", "commit": "3f711035277accc53966fe202104c2d7ca1c5717" },
   "nvim-spectre": { "branch": "master", "commit": "366f46fdd4a1593cc237aea13d5ef113739a472c" },
-  "nvim-treesitter": { "branch": "master", "commit": "5c924407cf110e9da4f3ba02ffed127b4198ad89" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "3557e41418b4a6c5b85d5d64abe94c9c50fa9b14" },
-  "nvim-ts-autotag": { "branch": "main", "commit": "bcf3146864262ef2d3c877beba3e222b5c73780d" },
+  "nvim-treesitter": { "branch": "master", "commit": "a80fe081b4c5890980561e0de2458f64aaffbfc7" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "fd41b7ccc5490a3a99c734d1ee418b68d06c48a9" },
+  "nvim-ts-autotag": { "branch": "main", "commit": "6eb4120a1aadef07ac312f1c4bc6456712220007" },
+  "nvim-ts-context-commentstring": { "branch": "main", "commit": "cb064386e667def1d241317deed9fd1b38f0dc2e" },
   "nvim-vtsls": { "branch": "main", "commit": "719fabc328c48fa03b1f3373205fcd1f60d21dc2" },
   "nvim-web-devicons": { "branch": "master", "commit": "b77921fdc44833c994fdb389d658ccbce5490c16" },
-  "overseer.nvim": { "branch": "master", "commit": "31f309692c9dd9162d3f63b5456a7932799c347c" },
+  "overseer.nvim": { "branch": "master", "commit": "9579e06f23e7d7777418939a4ffe8f3b2fffea7f" },
   "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
   "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
-  "rustaceanvim": { "branch": "master", "commit": "e306c742bd7f7183e371cd91268b72d9db1bbae0" },
+  "rasmus.nvim": { "branch": "main", "commit": "86d608bd1d12a53b39d9b4b2847cd7c3ea81d473" },
+  "rustaceanvim": { "branch": "master", "commit": "2fa45427c01ded4d3ecca72e357f8a60fd8e46d4" },
   "smart-open.nvim": { "branch": "0.2.x", "commit": "87626ee8748b9bba22093adec7bb58c63e7214f0" },
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
   "telescope.nvim": { "branch": "master", "commit": "dfa230be84a044e7f546a6c2b0a403c739732b86" },
-  "todo-comments.nvim": { "branch": "main", "commit": "e1549807066947818113a7d7ed48f637e49620d3" },
-  "tokyonight.nvim": { "branch": "main", "commit": "0fae425aaab04a5f97666bd431b96f2f19c36935" },
-  "trouble.nvim": { "branch": "dev", "commit": "3d95dbdae6e633d153e5c2fd4ae77cdf9294c0e8" },
-  "ts-comments.nvim": { "branch": "main", "commit": "503864726e7d83034969e6d2c78aa6f1158fd03e" },
-  "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" },
+  "todo-comments.nvim": { "branch": "main", "commit": "70a93ce66083699571adc361166504b03cc39c2b" },
+  "tokyonight.nvim": { "branch": "main", "commit": "7e5ef71a103e7de5fe6c05f5d6ab97d1640f08cf" },
+  "trouble.nvim": { "branch": "main", "commit": "e2969409cf3f38f69913cc8fd9aa13137aabe760" },
+  "ts-comments.nvim": { "branch": "main", "commit": "e339090c076871069c00e488b11def49aaf4e413" },
+  "which-key.nvim": { "branch": "main", "commit": "4b7167f8fb2dba3d01980735e3509e172c024c29" },
   "yanky.nvim": { "branch": "main", "commit": "79338563e85a868e59cda02c51b54d90a5514a12" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 85158a9..e161de8 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,9 +1,6 @@
 return {
-	{ "echasnovski/mini.colors", version = false },
 
 	{
-		-- "p00f/alabaster.nvim",
-		-- url = "https://git.sr.ht/~p00f/alabaster.nvim",
 		"lsjostro/alabaster.nvim",
 		lazy = false,
 		priority = 1000,
@@ -19,6 +16,7 @@ return {
 
 	--]=====]
 
+	--[=====[
 	{
 		"jesseleite/nvim-noirbuddy",
 		lazy = false,
@@ -250,4 +248,5 @@ return {
 			end,
 		},
 	},
+	--]=====]
 }
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 75e7a56..ad75b0f 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -98,7 +98,7 @@ config.color_scheme = scheme_for_appearance(wezterm.gui.get_appearance())
 
 -- ------------------------------------------------------------------------------------
 -- Fonts
-config.font = wezterm.font({ family = "Berkeley Mono Variable", weight = "Regular", stretch = "ExtraCondensed" })
+config.font = wezterm.font({ family = "Berkeley Mono", weight = "Regular" })
 -- config.font = wezterm.font({ family = "Berkeley Mono" })
 -- config.font_rules = {
 -- 	{
@@ -111,14 +111,20 @@ config.font = wezterm.font({ family = "Berkeley Mono Variable", weight = "Regula
 -- 	},
 -- }
 config.font_size = 14
-config.font_size = 18
--- config.line_height = 1.15
+-- config.font_size = 18
 config.warn_about_missing_glyphs = false
 config.bold_brightens_ansi_colors = false
 config.unicode_version = 14
+-- config.freetype_load_flags = "DEFAULT"
+--
+config.front_end = "OpenGL"
 config.freetype_load_flags = "NO_HINTING"
-config.freetype_load_target = "HorizontalLcd"
+config.freetype_load_target = "Light"
+config.freetype_render_target = "HorizontalLcd"
+
 config.custom_block_glyphs = false
+config.allow_square_glyphs_to_overflow_width = "Always"
+-- config.use_cap_height_to_scale_fallback_fonts = true
 
 -- Config
 config.enable_wayland = true
@@ -127,18 +133,20 @@ config.check_for_updates = false
 
 -- UI
 config.command_palette_font_size = 13.5
-config.initial_cols = 132
-config.initial_rows = 45
+config.initial_cols = 116
+config.initial_rows = 36
 config.status_update_interval = 100
+config.max_fps = 90
 config.audible_bell = "Disabled"
 config.use_resize_increments = true
 config.adjust_window_size_when_changing_font_size = false
+config.use_resize_increments = true
 config.window_decorations = "RESIZE"
 config.window_frame = {
-	border_left_width = "3px",
-	border_right_width = "3px",
-	border_bottom_height = "3px",
-	border_top_height = "3px",
+	border_left_width = "4px",
+	border_right_width = "4px",
+	border_bottom_height = "4px",
+	border_top_height = "4px",
 	border_left_color = "#000000",
 	border_right_color = "#000000",
 	border_bottom_color = "#000000",

From f6c264a7d207b7d857449440ec9f6700cbe8a1b0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 3 Jun 2024 21:47:20 +0200
Subject: [PATCH 283/656] nvim: hide whitespaces

---
 .config/nvim/lua/config/options.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 6914364..eaa296d 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -11,6 +11,7 @@ vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
 
 vim.o.autochdir = true
 vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
+vim.o.list = false
 vim.o.scrolloff = 7
 vim.o.splitkeep = "screen"
 vim.o.updatetime = 2500

From 259e391d493a388c5f7baf200c029b5580467c0d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 3 Jun 2024 21:48:14 +0200
Subject: [PATCH 284/656] nvim: use sumi-e colorscheme

---
 .config/nvim/lazy-lock.json              |  69 +++----
 .config/nvim/lua/config/lazy.lua         |   1 -
 .config/nvim/lua/plugins/colorscheme.lua | 249 ++++++++++++++++++++++-
 3 files changed, 276 insertions(+), 43 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index e69fa0b..ffd0a14 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,71 +1,68 @@
 {
-  "LazyVim": { "branch": "main", "commit": "b289fea1636eda08d82344dc32a114bca550e375" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "931f9f3b7b60ec976159cb01b4a40da3829ac2fd" },
-  "alabaster.nvim": { "branch": "main", "commit": "5bb485d630d50796d4c8c7edc0f0fb9001fccde3" },
+  "LazyVim": { "branch": "main", "commit": "ad092e96f9100f0471905316dc412620945cf1e5" },
+  "SchemaStore.nvim": { "branch": "main", "commit": "d9fd6651b47b68bfc1b952f81a0fdded3cb205b2" },
   "catppuccin": { "branch": "main", "commit": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe" },
   "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
   "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
   "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
   "codeium.nvim": { "branch": "main", "commit": "d3b88eb3aa1de6da33d325c196b8a41da2bcc825" },
-  "colorbuddy.nvim": { "branch": "master", "commit": "8b968581e5c19d22a861d5f3fe5dbd83394fa681" },
-  "conform.nvim": { "branch": "master", "commit": "63e0a32c85a39484813957dc480f171907aa90b9" },
-  "crates.nvim": { "branch": "main", "commit": "d556c00d60c9421c913ee54ff690df2a34f6264e" },
-  "dashboard-nvim": { "branch": "master", "commit": "7596101deb41192a4f7939d2c4f1a531a984b801" },
+  "conform.nvim": { "branch": "master", "commit": "069e971295a34a810484b7b2ef54b3c735214181" },
+  "crates.nvim": { "branch": "main", "commit": "0c8436cb10e9ac62354baa5874a4a3413f2432c1" },
+  "dashboard-nvim": { "branch": "master", "commit": "5346d023afc4bfc7ff63d05c70bcdb0784bb657a" },
   "direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" },
   "dressing.nvim": { "branch": "master", "commit": "e3714c8049b2243e792492c4149e4cc395c68eb9" },
   "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
-  "friendly-snippets": { "branch": "main", "commit": "d0610077b6129cf9f7f78afbe3a1425d60f6e2f1" },
-  "fzf": { "branch": "master", "commit": "3ee1fc203406debab432dbf3cb67f37ea7cb3d30" },
+  "friendly-snippets": { "branch": "main", "commit": "e11b09bf10706bb74e16e4c3d11b2274d62e687f" },
+  "fzf": { "branch": "master", "commit": "590060a16b85270c19c605e8758cda16c4517086" },
   "fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
-  "gitsigns.nvim": { "branch": "main", "commit": "75dc649106827183547d3bedd4602442340d2f7f" },
+  "gitsigns.nvim": { "branch": "main", "commit": "4a143f13e122ab91abdc88f89eefbe70a4858a56" },
   "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
   "incline.nvim": { "branch": "main", "commit": "16fc9c073e3ea4175b66ad94375df6d73fc114c0" },
-  "indent-blankline.nvim": { "branch": "master", "commit": "d98f537c3492e87b6dc6c2e3f66ac517528f406f" },
-  "lazy.nvim": { "branch": "main", "commit": "b0ba3f9399bf48c86abaa4db1a40bd0b681d5018" },
-  "lazydev.nvim": { "branch": "main", "commit": "f3b3795c6daf11da989220d859c0468b82d766ae" },
+  "indentmini.nvim": { "branch": "main", "commit": "916d0c5804e46314a966f73af5695de10d11c943" },
+  "lazy.nvim": { "branch": "main", "commit": "fafe1f7c640aed75e70a10e6649612cd96f39149" },
+  "lazydev.nvim": { "branch": "main", "commit": "107231114623e2c4f90c626ec83b3120816b554e" },
   "luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "a4caa0d083aab56f6cd5acf2d42331b74614a585" },
+  "mason-lspconfig.nvim": { "branch": "main", "commit": "8db12610bcb7ce67013cfdfaba4dd47a23c6e851" },
+  "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "0950b15060067f752fde13a779a994f59516ce3d" },
   "mini.ai": { "branch": "main", "commit": "7859b6344f5cee567a94f173859d25e20ba1a77e" },
-  "mini.comment": { "branch": "main", "commit": "c8406379987c321ecdef9f53e1ca741a55002104" },
-  "mini.indentscope": { "branch": "main", "commit": "f0d7faa064c892b96997810afcddfadc3f2a15b3" },
-  "modes.nvim": { "branch": "main", "commit": "0a279a526859c750d8f494da3ea0322776cd94f4" },
+  "modes.nvim": { "branch": "main", "commit": "326cff3282419b3bcc745061978c1e592cae055d" },
   "neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
   "neocodeium": { "branch": "main", "commit": "4a46f6438bcdb21c562f83036bce75c719834072" },
   "neotest": { "branch": "master", "commit": "6f35d797882c6ce0ab7c87dc86561512dc3d7aba" },
   "neotest-go": { "branch": "main", "commit": "92950ad7be2ca02a41abca5c6600ff6ffaf5b5d6" },
-  "noice.nvim": { "branch": "main", "commit": "69c6ad5c1f1c0777125d0275f9871d8609cb0521" },
-  "none-ls.nvim": { "branch": "main", "commit": "f5b960a73418249aebcdae3455de320360509253" },
-  "nui.nvim": { "branch": "main", "commit": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae" },
+  "noice.nvim": { "branch": "main", "commit": "e5cb20c6e14305d24025ecb77d7d4dd9d61f1a64" },
+  "none-ls.nvim": { "branch": "main", "commit": "8691504118b252d64fc5023a104aedd100ab754a" },
+  "nui.nvim": { "branch": "main", "commit": "322978c734866996274467de084a95e4f9b5e0b1" },
   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
-  "nvim-lint": { "branch": "master", "commit": "1a3a8d047bc01f1760ae4a0f5e80f111ea222e67" },
-  "nvim-lspconfig": { "branch": "master", "commit": "74e14808cdb15e625449027019406e1ff6dda020" },
+  "nvim-dap": { "branch": "master", "commit": "6f79b822997f2e8a789c6034e147d42bc6706770" },
+  "nvim-dap-go": { "branch": "main", "commit": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1" },
+  "nvim-dap-ui": { "branch": "master", "commit": "b7267003ba4dd860350be86f75b9d9ea287cedca" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
+  "nvim-lint": { "branch": "master", "commit": "cf6ffafe158441b8c5e2051ab0fe5b1983527ba7" },
+  "nvim-lspconfig": { "branch": "master", "commit": "92166b89ab4b3d60f24e58170cac53b7141fd032" },
   "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
   "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
-  "nvim-snippets": { "branch": "main", "commit": "3f711035277accc53966fe202104c2d7ca1c5717" },
-  "nvim-spectre": { "branch": "master", "commit": "366f46fdd4a1593cc237aea13d5ef113739a472c" },
-  "nvim-treesitter": { "branch": "master", "commit": "a80fe081b4c5890980561e0de2458f64aaffbfc7" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "fd41b7ccc5490a3a99c734d1ee418b68d06c48a9" },
+  "nvim-snippets": { "branch": "main", "commit": "cff37a199a92f3c3cd52bb1593a7d01669b35d23" },
+  "nvim-spectre": { "branch": "master", "commit": "4d22fe03554056de4325762add3e546c77e3a275" },
+  "nvim-treesitter": { "branch": "master", "commit": "c5cbd3ec74f6f5ddbac939e6f24b99fe78262b4c" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "5efba33af0f39942e426340da7bc15d7dec16474" },
+  "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" },
   "nvim-ts-autotag": { "branch": "main", "commit": "6eb4120a1aadef07ac312f1c4bc6456712220007" },
-  "nvim-ts-context-commentstring": { "branch": "main", "commit": "cb064386e667def1d241317deed9fd1b38f0dc2e" },
-  "nvim-vtsls": { "branch": "main", "commit": "719fabc328c48fa03b1f3373205fcd1f60d21dc2" },
-  "nvim-web-devicons": { "branch": "master", "commit": "b77921fdc44833c994fdb389d658ccbce5490c16" },
-  "overseer.nvim": { "branch": "master", "commit": "9579e06f23e7d7777418939a4ffe8f3b2fffea7f" },
+  "nvim-web-devicons": { "branch": "master", "commit": "b4b302d6ae229f67df7a87ef69fa79473fe788a9" },
+  "overseer.nvim": { "branch": "master", "commit": "bd9cc6d2cc2317b6b70b3bfb956c88d4e00c7837" },
   "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
   "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
-  "rasmus.nvim": { "branch": "main", "commit": "86d608bd1d12a53b39d9b4b2847cd7c3ea81d473" },
-  "rustaceanvim": { "branch": "master", "commit": "2fa45427c01ded4d3ecca72e357f8a60fd8e46d4" },
   "smart-open.nvim": { "branch": "0.2.x", "commit": "87626ee8748b9bba22093adec7bb58c63e7214f0" },
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
   "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
   "telescope.nvim": { "branch": "master", "commit": "dfa230be84a044e7f546a6c2b0a403c739732b86" },
   "todo-comments.nvim": { "branch": "main", "commit": "70a93ce66083699571adc361166504b03cc39c2b" },
-  "tokyonight.nvim": { "branch": "main", "commit": "7e5ef71a103e7de5fe6c05f5d6ab97d1640f08cf" },
-  "trouble.nvim": { "branch": "main", "commit": "e2969409cf3f38f69913cc8fd9aa13137aabe760" },
+  "tokyonight.nvim": { "branch": "main", "commit": "02e9028fe3560f38363c2d38f1c87e45eb04fdb3" },
+  "trouble.nvim": { "branch": "main", "commit": "c11dc2777d52da2c8da25836817e43608ec951a5" },
   "ts-comments.nvim": { "branch": "main", "commit": "e339090c076871069c00e488b11def49aaf4e413" },
-  "which-key.nvim": { "branch": "main", "commit": "4b7167f8fb2dba3d01980735e3509e172c024c29" },
-  "yanky.nvim": { "branch": "main", "commit": "79338563e85a868e59cda02c51b54d90a5514a12" }
+  "which-key.nvim": { "branch": "main", "commit": "0099511294f16b81c696004fa6a403b0ae61f7a0" }
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 007ffff..8fbe1ba 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -43,7 +43,6 @@ require("lazy").setup({
 			Running = " ",
 		},
 	},
-	install = { colorscheme = { "default" } },
 	checker = { enabled = false }, -- automatically check for plugin updates
 	performance = {
 		rtp = {
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index e161de8..0ca5ff3 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,21 +1,19 @@
 return {
-
 	{
-		"lsjostro/alabaster.nvim",
+		"shelmangroup/sumi-e.nvim",
+		dir = "/home/dln/src/git.shelman.io/shelmangroup/sumi-e.nvim",
+		version = false,
 		lazy = false,
 		priority = 1000,
 	},
 
-	--[=====[
 	{
 		"LazyVim/LazyVim",
 		opts = {
-			colorscheme = "alabaster",
+			colorscheme = "sumi-e",
 		},
 	},
 
-	--]=====]
-
 	--[=====[
 	{
 		"jesseleite/nvim-noirbuddy",
@@ -246,6 +244,245 @@ return {
 				Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
 				Group.new("IncSearch", colors.search_fg, colors.search_bg)
 			end,
+||||||| parent of 1c239cb (nvim: use sumi-e colorscheme)
+			colorscheme = "alabaster",
+		},
+	},
+
+	--]=====]
+
+	{
+		"jesseleite/nvim-noirbuddy",
+		lazy = false,
+		dependencies = {
+			{ "tjdevries/colorbuddy.nvim" },
+		},
+	},
+
+	{
+		"LazyVim/LazyVim",
+		opts = {
+			colorscheme = function()
+				require("noirbuddy").setup({
+					preset = "slate",
+					styles = {
+						italic = true,
+						bold = true,
+						underline = true,
+						undercurl = true,
+					},
+					colors = {
+						background = "#11171d",
+						primary = "#FFECD3",
+						secondary = "#B0BEC5",
+						--
+						diagnostic_info = "#00d992",
+						diagnostic_hint = "#00d992",
+					},
+				})
+				--
+				local colorbuddy = require("colorbuddy")
+				local Color = colorbuddy.Color
+				local colors = colorbuddy.colors
+				local Group = colorbuddy.Group
+				local groups = colorbuddy.groups
+				local styles = colorbuddy.styles
+
+				Color.new("ColorColumn", "#171e26")
+				Group.new("ColorColumn", nil, colors.ColorColumn)
+
+				Color.new("normal", "#e3e0cd")
+				Group.new("Normal", colors.normal, nil)
+
+				Color.new("Visual", "#440066")
+				Group.new("ModesVisualVisual", nil, colors.Visual)
+				Group.new("Visual", nil, colors.Visual)
+				Group.new("VisualNOS", nil, colors.Visual)
+				Group.new("MatchParen", nil, colors.Visual)
+
+				Color.new("NeoCodeiumLabelBg", "#eda92d")
+				Color.new("NeoCodeiumLabelFg", "#000000")
+				Group.new("NeoCodeiumLabel", colors.NeoCodeiumLabelFg, colors.NeoCodeiumLabelBg)
+
+				Color.new("NeoCodeiumSuggestion", "#996611")
+				Group.new("NeoCodeiumSuggestion", colors.NeoCodeiumSuggestion, nil, styles.italic)
+
+				Color.new("NoiceCmdLineBg", "#112233")
+				Color.new("NoiceCmdLineFg", "#99ccff")
+				Group.new("NoiceCmdLine", colors.NoiceCmdLineFg, colors.NoiceCmdLineBg)
+
+				Color.new("NoiceFormatProgressTodo", "#223344")
+				Group.new("NoiceFormatProgressTodo", nil, colors.NoiceFormatProgressTodo)
+				Color.new("NoiceFormatProgressDone", "#446699")
+				Group.new("NoiceFormatProgressDone", nil, colors.NoiceFormatProgressDone)
+
+				Color.new("WinSeparator", "#223344")
+				Group.new("WinSeparator", colors.WinSeparator, nil)
+
+				Color.new("string", "#D7CCC8")
+				Color.new("symbol", "#ECEFF1")
+
+				Color.new("comment", "#E57373", nil, styles.italic)
+				Color.new("hlargs", "#FFF8E1")
+
+				Color.new("illuminate_bg", "#112210")
+				Color.new("illuminate_fg", "#00d992")
+
+				Color.new("search_bg", "#223311")
+				Color.new("search_fg", "#CCFF33")
+
+				Color.new("MiniIndentscopeSymbol", "#00d992")
+				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
+
+				Color.new("CursorFg", "#000000", styles.nocombine)
+				Color.new("CursorBg", "#23fdb6", styles.nocombine)
+				Group.new("Cursor", colors.CursorFg, colors.CursorBg)
+				Color.new("CursorLine", "#141b23")
+				Group.new("CursorLine", nil, colors.CursorLine)
+
+				-- Color.new("TroubleBg", "#171e26")
+				Color.new("TroubleFg", "#e1d4c1")
+				Color.new("TroubleBg", "#10161d")
+				-- Color.new("TroubleBg", "#1d140f")
+				Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
+
+				Color.new("NavicTextFg", "#5fbf9f")
+				Color.new("NavicTextBg", "#333333")
+				Color.new("NavicIcon", "#5fbf9f")
+
+				Group.new("NavicText", colors.NavicTextFg, colors.NavicTextBg)
+				Group.new("NavicIcon", colors.NavicIcon, colors.NavicTextBg)
+				Group.link("NavicIconsFile", groups.NavicIcon)
+				Group.link("NavicIconsModule", groups.NavicIcon)
+				Group.link("NavicIconsNamespace", groups.NavicIcon)
+				Group.link("NavicIconsPackage", groups.NavicIcon)
+				Group.link("NavicIconsClass", groups.NavicIcon)
+				Group.link("NavicIconsMethod", groups.NavicIcon)
+				Group.link("NavicIconsProperty", groups.NavicIcon)
+				Group.link("NavicIconsField", groups.NavicIcon)
+				Group.link("NavicIconsConstructor", groups.NavicIcon)
+				Group.link("NavicIconsEnum", groups.NavicIcon)
+				Group.link("NavicIconsInterface", groups.NavicIcon)
+				Group.link("NavicIconsFunction", groups.NavicIcon)
+				Group.link("NavicIconsVariable", groups.NavicIcon)
+				Group.link("NavicIconsConstant", groups.NavicIcon)
+				Group.link("NavicIconsString", groups.NavicIcon)
+				Group.link("NavicIconsNumber", groups.NavicIcon)
+				Group.link("NavicIconsBoolean", groups.NavicIcon)
+				Group.link("NavicIconsArray", groups.NavicIcon)
+				Group.link("NavicIconsObject", groups.NavicIcon)
+				Group.link("NavicIconsKey", groups.NavicIcon)
+				Group.link("NavicIconsNull", groups.NavicIcon)
+				Group.link("NavicIconsEnumMember", groups.NavicIcon)
+				Group.link("NavicIconsStruct", groups.NavicIcon)
+				Group.link("NavicIconsEvent", groups.NavicIcon)
+				Group.link("NavicIconsOperator", groups.NavicIcon)
+				Group.link("NavicIconsTypeParameter", groups.NavicIcon)
+
+				Color.new("NormalFloatFg", "#b8d1ef", styles.nocombine)
+				-- Color.new("NormalFloatBg", "#335a88", styles.nocombine)
+				Color.new("NormalFloatBg", "#242d38", styles.nocombine)
+				Color.new("NormalFloatBorder", "#00d992", styles.nocombine)
+				Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
+				Group.new("FloatBorder", colors.NormalFloatBorder, colors.NormalFloatBg)
+
+				-- Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
+				-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
+				Color.new("PmenuSelFg", "#52ffb5", styles.nocombine)
+				Color.new("PmenuSelBg", "#003322", styles.nocombine)
+				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg, styles.bold)
+
+				-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
+				-- Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
+
+				Color.new("TreesitterContext", "#242e38", styles.nocombine)
+				Group.new("TreesitterContext", nil, colors.TreesitterContext)
+
+				-- Color.new("NonText", "#955252", styles.nocombine)
+				Color.new("NonText", "#955252", styles.nocombine)
+
+				Color.new("comment2", "#51a0cf")
+				Group.new("Comment", colors.NonText, nil, styles.italic + styles.bold)
+				Group.new("LspInlayHint", colors.comment2, nil, styles.italic)
+
+				Group.new("NonText", colors.NonText, nil, styles.italic)
+				Group.new("NonText", colors.NonText, nil, styles.italic)
+
+				Color.new("spelling", "#ffce60")
+				Group.new("SpellBad", colors.spelling, nil, styles.undercurl)
+
+				-- Color.new("LuaLineFg", "#aebed0")
+				Color.new("InclineFg", "#aebed0")
+				Color.new("InclineBg", "#242e38")
+				Group.new("InclineNormal", colors.InclineFg, colors.InclineBg)
+				Group.new("InclineNormalNC", colors.InclineFg, colors.InclineBg)
+
+				Color.new("LspInfoTitle", "#955252")
+				Group.new("LspInfoTitle", colors.LspInfoTitle, nil, styles.italic)
+				-- Group.new("DiagnosticHint", colors.LspInfoTitle, nil, styles.italic)
+				--
+				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
+				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
+				-- Color.new("TroubleBg", "#260200", styles.nocombine)
+				-- Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
+				-- Group.link("TroubleText", groups.TroubleNormal)
+				-- Group.link("TroubleSource", groups.TroubleNormal)
+				--
+				Color.new("Error", "#ffce60", styles.nocombine)
+				Group.new("ErrorMsg", colors.Error)
+
+				Color.new("FlashLabelFg", "#220011")
+				Color.new("FlashLabelBg", "#EA1199")
+				Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
+
+				Color.new("TelescopeBorder", "#23fdb6")
+				Group.new("TelescopeTitle", colors.TelescopeBorder)
+				Group.new("telescopeborder", colors.TelescopeBorder)
+
+				Color.new("TelescopeBorder", "#23fdb6")
+
+				Color.new("TelescopeNormal", "#b6c5bd")
+				Group.new("telescoperesultsnormal", colors.TelescopeNormal)
+
+				Color.new("TelescopeSelectionBg", "#003f29")
+				Color.new("TelescopeSelectionFg", "#f6fb2d")
+				Group.new(
+					"TelescopeSelection",
+					colors.TelescopeSelectionFg,
+					colors.TelescopeSelectionBg,
+					styles.nocombine + styles.bold
+				)
+
+				Group.new("@comment", colors.comment, nil, styles.italic + styles.bold)
+				Group.new("@string", colors.string, nil, styles.italic)
+
+				Group.new("@keyword", colors.noir_2)
+				Group.new("@keyword.function", colors.noir_2)
+				Group.new("@keyword.return", colors.noir_1)
+
+				Group.new("@operator", colors.noir_1)
+				Group.new("@keyword.operator", colors.noir_1)
+				-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
+				Group.new("@type.builtin", colors.noir_2)
+
+				Group.new("@variable", colors.symbol, nil)
+				Group.new("Hlargs", colors.hlargs, nil)
+
+				Group.new("@function", colors.noir_1, nil, styles.bold)
+				Group.new("@method", colors.noir_1, nil, styles.bold)
+
+				Group.new("@punctuation", colors.noir_4)
+				Group.new("@punctuation.bracket", colors.noir_4)
+				Group.new("@punctuation.delimiter", colors.noir_4)
+
+				Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
+
+				Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
+				Group.new("IncSearch", colors.search_fg, colors.search_bg)
+			end,
+=======
+			colorscheme = "sumi-e",
+>>>>>>> 1c239cb (nvim: use sumi-e colorscheme)
 		},
 	},
 	--]=====]

From 4d49b7af90515852802a0f57254e4f87e6e86685 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 4 Jun 2024 01:11:02 +0200
Subject: [PATCH 285/656] nvim: include fix

---
 .config/nvim/lua/plugins/incline.lua | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/.config/nvim/lua/plugins/incline.lua b/.config/nvim/lua/plugins/incline.lua
index 24e8f90..dde16dd 100644
--- a/.config/nvim/lua/plugins/incline.lua
+++ b/.config/nvim/lua/plugins/incline.lua
@@ -34,13 +34,13 @@ return {
 						end
 					end
 					if #labels > 0 then
-						table.insert(labels, { "╱ " })
+						table.insert(labels, { "│ " })
 					end
 					return labels
 				end
 
 				local function get_diagnostic_label()
-					local icons = { error = " ", warn = "󰀪 ", info = " ", hint = " " }
+					local icons = { error = "󰅜 ", warn = " ", info = " ", hint = " " }
 					local label = {}
 
 					for severity, icon in pairs(icons) do
@@ -53,23 +53,22 @@ return {
 						end
 					end
 					if #label > 0 then
-						table.insert(label, { "╱ " })
+						table.insert(label, { "│ " })
 					end
 					return label
 				end
 
-				local bg_color = "#242e38"
-
 				return {
-					{ "", guibg = "#0d1117", guifg = bg_color },
-					{ " ", guifg = "#0d1117", guibg = bg_color },
-					{ get_diagnostic_label(), guibg = bg_color },
-					{ get_git_diff() },
-					{ filename .. " ", gui = "italic" },
+					-- { "" },
+					{ "  ", gui = "reverse" },
+					{ get_diagnostic_label(), guibg = "fg", guifg = "bg" },
+					{ get_git_diff(), gui = "reverse" },
+					{ filename, gui = "reverse" },
+					{ "  ", gui = "reverse" },
+					-- { "" },
 				}
 			end,
 		})
 	end,
-	-- Optional: Lazy load Incline
 	event = "VeryLazy",
 }

From 64644ebc500d15915e31c84178fbde6c0ebea64d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 7 Jun 2024 16:59:10 +0200
Subject: [PATCH 286/656] meep

---
 .config/nvim/lazy-lock.json | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index ffd0a14..0bdb87e 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -12,7 +12,6 @@
   "dashboard-nvim": { "branch": "master", "commit": "5346d023afc4bfc7ff63d05c70bcdb0784bb657a" },
   "direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" },
   "dressing.nvim": { "branch": "master", "commit": "e3714c8049b2243e792492c4149e4cc395c68eb9" },
-  "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
   "friendly-snippets": { "branch": "main", "commit": "e11b09bf10706bb74e16e4c3d11b2274d62e687f" },
   "fzf": { "branch": "master", "commit": "590060a16b85270c19c605e8758cda16c4517086" },
   "fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
@@ -25,7 +24,6 @@
   "luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "8db12610bcb7ce67013cfdfaba4dd47a23c6e851" },
-  "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "0950b15060067f752fde13a779a994f59516ce3d" },
   "mini.ai": { "branch": "main", "commit": "7859b6344f5cee567a94f173859d25e20ba1a77e" },
   "modes.nvim": { "branch": "main", "commit": "326cff3282419b3bcc745061978c1e592cae055d" },
@@ -37,24 +35,19 @@
   "none-ls.nvim": { "branch": "main", "commit": "8691504118b252d64fc5023a104aedd100ab754a" },
   "nui.nvim": { "branch": "main", "commit": "322978c734866996274467de084a95e4f9b5e0b1" },
   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
-  "nvim-dap": { "branch": "master", "commit": "6f79b822997f2e8a789c6034e147d42bc6706770" },
-  "nvim-dap-go": { "branch": "main", "commit": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1" },
-  "nvim-dap-ui": { "branch": "master", "commit": "b7267003ba4dd860350be86f75b9d9ea287cedca" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
   "nvim-lint": { "branch": "master", "commit": "cf6ffafe158441b8c5e2051ab0fe5b1983527ba7" },
   "nvim-lspconfig": { "branch": "master", "commit": "92166b89ab4b3d60f24e58170cac53b7141fd032" },
-  "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
   "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
   "nvim-snippets": { "branch": "main", "commit": "cff37a199a92f3c3cd52bb1593a7d01669b35d23" },
   "nvim-spectre": { "branch": "master", "commit": "4d22fe03554056de4325762add3e546c77e3a275" },
   "nvim-treesitter": { "branch": "master", "commit": "c5cbd3ec74f6f5ddbac939e6f24b99fe78262b4c" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "5efba33af0f39942e426340da7bc15d7dec16474" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" },
   "nvim-ts-autotag": { "branch": "main", "commit": "6eb4120a1aadef07ac312f1c4bc6456712220007" },
   "nvim-web-devicons": { "branch": "master", "commit": "b4b302d6ae229f67df7a87ef69fa79473fe788a9" },
   "overseer.nvim": { "branch": "master", "commit": "bd9cc6d2cc2317b6b70b3bfb956c88d4e00c7837" },
   "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
   "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
+  "rustaceanvim": { "branch": "master", "commit": "2fa45427c01ded4d3ecca72e357f8a60fd8e46d4" },
   "smart-open.nvim": { "branch": "0.2.x", "commit": "87626ee8748b9bba22093adec7bb58c63e7214f0" },
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
@@ -64,5 +57,6 @@
   "tokyonight.nvim": { "branch": "main", "commit": "02e9028fe3560f38363c2d38f1c87e45eb04fdb3" },
   "trouble.nvim": { "branch": "main", "commit": "c11dc2777d52da2c8da25836817e43608ec951a5" },
   "ts-comments.nvim": { "branch": "main", "commit": "e339090c076871069c00e488b11def49aaf4e413" },
-  "which-key.nvim": { "branch": "main", "commit": "0099511294f16b81c696004fa6a403b0ae61f7a0" }
+  "which-key.nvim": { "branch": "main", "commit": "0099511294f16b81c696004fa6a403b0ae61f7a0" },
+  "yanky.nvim": { "branch": "main", "commit": "79338563e85a868e59cda02c51b54d90a5514a12" }
 }
\ No newline at end of file

From 76a93bf0b10c3f3148930ee36e003ce7299288d1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Fri, 7 Jun 2024 16:54:47 +0200
Subject: [PATCH 287/656] nvim: onward

---
 .config/fish/fish_variables              |   2 +-
 .config/nvim/lazy-lock.json              |  10 +-
 .config/nvim/lazyvim.json                |  27 ++
 .config/nvim/lua/config/keymaps.lua      |   3 +
 .config/nvim/lua/config/lazy.lua         |  20 +-
 .config/nvim/lua/config/options.lua      |  21 +-
 .config/nvim/lua/plugins/colorscheme.lua | 479 +----------------------
 .config/nvim/lua/plugins/extras.lua      |   5 +-
 .config/nvim/lua/plugins/incline.lua     |  14 +-
 .config/nvim/lua/plugins/lsp.lua         |   3 +
 .config/nvim/lua/plugins/treesitter.lua  |  41 ++
 .config/nvim/lua/plugins/ui.lua          |  13 +-
 .config/nvim/spell/en.utf-8.add          |  10 +
 .config/nvim/spell/en.utf-8.add.spl      | Bin 0 -> 144 bytes
 14 files changed, 143 insertions(+), 505 deletions(-)
 create mode 100644 .config/nvim/lazyvim.json
 create mode 100644 .config/nvim/lua/plugins/treesitter.lua
 create mode 100644 .config/nvim/spell/en.utf-8.add
 create mode 100644 .config/nvim/spell/en.utf-8.add.spl

diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
index df4d543..e265762 100644
--- a/.config/fish/fish_variables
+++ b/.config/fish/fish_variables
@@ -1,7 +1,7 @@
 # This file contains fish universal variable definitions.
 # VERSION: 3.0
 SETUVAR __fish_initialized:3400
-SETUVAR fish_color_autosuggestion:\x2d\x2ditalics\x1e\x2d\x2dbold\x1e\x2d\x2ddim
+SETUVAR fish_color_autosuggestion:\x2d\x2ditalics\x1e\x2d\x2dbold\x1ered
 SETUVAR fish_color_cancel:\x1d
 SETUVAR fish_color_command:\x2d\x2dbold
 SETUVAR fish_color_comment:\x2d\x2ditalic\x1e\x2d\x2ddim
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index 0bdb87e..32b5f3e 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -10,8 +10,10 @@
   "conform.nvim": { "branch": "master", "commit": "069e971295a34a810484b7b2ef54b3c735214181" },
   "crates.nvim": { "branch": "main", "commit": "0c8436cb10e9ac62354baa5874a4a3413f2432c1" },
   "dashboard-nvim": { "branch": "master", "commit": "5346d023afc4bfc7ff63d05c70bcdb0784bb657a" },
+  "diagflow.nvim": { "branch": "main", "commit": "4a03e94e1bf6d18feaac44476cfcb78b403bd609" },
   "direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" },
   "dressing.nvim": { "branch": "master", "commit": "e3714c8049b2243e792492c4149e4cc395c68eb9" },
+  "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
   "friendly-snippets": { "branch": "main", "commit": "e11b09bf10706bb74e16e4c3d11b2274d62e687f" },
   "fzf": { "branch": "master", "commit": "590060a16b85270c19c605e8758cda16c4517086" },
   "fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
@@ -24,6 +26,7 @@
   "luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" },
   "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
   "mason-lspconfig.nvim": { "branch": "main", "commit": "8db12610bcb7ce67013cfdfaba4dd47a23c6e851" },
+  "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
   "mason.nvim": { "branch": "main", "commit": "0950b15060067f752fde13a779a994f59516ce3d" },
   "mini.ai": { "branch": "main", "commit": "7859b6344f5cee567a94f173859d25e20ba1a77e" },
   "modes.nvim": { "branch": "main", "commit": "326cff3282419b3bcc745061978c1e592cae055d" },
@@ -35,19 +38,24 @@
   "none-ls.nvim": { "branch": "main", "commit": "8691504118b252d64fc5023a104aedd100ab754a" },
   "nui.nvim": { "branch": "main", "commit": "322978c734866996274467de084a95e4f9b5e0b1" },
   "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
+  "nvim-dap": { "branch": "master", "commit": "6f79b822997f2e8a789c6034e147d42bc6706770" },
+  "nvim-dap-go": { "branch": "main", "commit": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1" },
+  "nvim-dap-ui": { "branch": "master", "commit": "b7267003ba4dd860350be86f75b9d9ea287cedca" },
+  "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
   "nvim-lint": { "branch": "master", "commit": "cf6ffafe158441b8c5e2051ab0fe5b1983527ba7" },
   "nvim-lspconfig": { "branch": "master", "commit": "92166b89ab4b3d60f24e58170cac53b7141fd032" },
+  "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
   "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
   "nvim-snippets": { "branch": "main", "commit": "cff37a199a92f3c3cd52bb1593a7d01669b35d23" },
   "nvim-spectre": { "branch": "master", "commit": "4d22fe03554056de4325762add3e546c77e3a275" },
   "nvim-treesitter": { "branch": "master", "commit": "c5cbd3ec74f6f5ddbac939e6f24b99fe78262b4c" },
+  "nvim-treesitter-context": { "branch": "master", "commit": "5efba33af0f39942e426340da7bc15d7dec16474" },
   "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" },
   "nvim-ts-autotag": { "branch": "main", "commit": "6eb4120a1aadef07ac312f1c4bc6456712220007" },
   "nvim-web-devicons": { "branch": "master", "commit": "b4b302d6ae229f67df7a87ef69fa79473fe788a9" },
   "overseer.nvim": { "branch": "master", "commit": "bd9cc6d2cc2317b6b70b3bfb956c88d4e00c7837" },
   "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
   "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
-  "rustaceanvim": { "branch": "master", "commit": "2fa45427c01ded4d3ecca72e357f8a60fd8e46d4" },
   "smart-open.nvim": { "branch": "0.2.x", "commit": "87626ee8748b9bba22093adec7bb58c63e7214f0" },
   "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
   "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json
new file mode 100644
index 0000000..21757d1
--- /dev/null
+++ b/.config/nvim/lazyvim.json
@@ -0,0 +1,27 @@
+{
+  "extras": [
+    "lazyvim.plugins.extras.coding.codeium",
+    "lazyvim.plugins.extras.coding.yanky",
+    "lazyvim.plugins.extras.dap.core",
+    "lazyvim.plugins.extras.formatting.prettier",
+    "lazyvim.plugins.extras.lang.go",
+    "lazyvim.plugins.extras.lang.json",
+    "lazyvim.plugins.extras.lang.markdown",
+    "lazyvim.plugins.extras.lang.markdown",
+    "lazyvim.plugins.extras.lang.nix",
+    "lazyvim.plugins.extras.lang.rust",
+    "lazyvim.plugins.extras.lang.toml",
+    "lazyvim.plugins.extras.lang.typescript",
+    "lazyvim.plugins.extras.lang.yaml",
+    "lazyvim.plugins.extras.lsp.none-ls",
+    "lazyvim.plugins.extras.lsp.none-ls",
+    "lazyvim.plugins.extras.test.core",
+    "lazyvim.plugins.extras.ui.edgy",
+    "lazyvim.plugins.extras.ui.treesitter-context",
+    "lazyvim.plugins.extras.util.gitui"
+  ],
+  "news": {
+    "NEWS.md": "5204"
+  },
+  "version": 6
+}
\ No newline at end of file
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
index cc87217..84bc508 100644
--- a/.config/nvim/lua/config/keymaps.lua
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -9,3 +9,6 @@ vim.api.nvim_set_keymap("v", "<c-/>", "gc", {})
 vim.api.nvim_set_keymap("n", "<Leader><c-/>", "gcgc", {})
 vim.api.nvim_set_keymap("n", "<Tab>", "<Space>,", {})
 vim.api.nvim_set_keymap("n", "zz", "zt", {})
+
+vim.api.nvim_set_keymap("n", "[d", ":lua vim.diagnostic.goto_prev { float = false }<Enter>", {})
+vim.api.nvim_set_keymap("n", "]d", ":lua vim.diagnostic.goto_next { float = false }<Enter>", {})
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index 8fbe1ba..cb2fc79 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -11,18 +11,14 @@ require("lazy").setup({
 		-- add LazyVim and import its plugins
 		{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
 		-- import any extras modules here
-		-- { import = "lazyvim.plugins.extras.ui.mini-animate" },
-		-- { import = "lazyvim.plugins.extras.coding.copilot" },
-		{ import = "lazyvim.plugins.extras.coding.codeium" },
-		{ import = "lazyvim.plugins.extras.coding.yanky" },
-		{ import = "lazyvim.plugins.extras.formatting.prettier" },
-		{ import = "lazyvim.plugins.extras.lang.go" },
-		{ import = "lazyvim.plugins.extras.lang.json" },
-		{ import = "lazyvim.plugins.extras.lang.markdown" },
-		{ import = "lazyvim.plugins.extras.lang.rust" },
-		{ import = "lazyvim.plugins.extras.lang.typescript" },
-		{ import = "lazyvim.plugins.extras.lang.yaml" },
-		{ import = "lazyvim.plugins.extras.lsp.none-ls" },
+		-- { import = "lazyvim.plugins.extras.coding.codeium" },
+		-- { import = "lazyvim.plugins.extras.formatting.prettier" },
+		-- { import = "lazyvim.plugins.extras.lang.go" },
+		-- { import = "lazyvim.plugins.extras.lang.json" },
+		-- { import = "lazyvim.plugins.extras.lang.markdown" },
+		-- { import = "lazyvim.plugins.extras.lang.rust" },
+		-- { import = "lazyvim.plugins.extras.lang.typescript" },
+		-- { import = "lazyvim.plugins.extras.lsp.none-ls" },
 		-- import/override with your plugins
 		{ import = "plugins" },
 	},
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index eaa296d..1e2b623 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -4,7 +4,24 @@
 
 vim.opt.number = true
 vim.opt.relativenumber = false
-vim.opt.clipboard = "unnamed" --"unnamedplus"
+-- vim.opt.clipboard = ""
+function no_paste(reg)
+	return function(lines)
+		-- Do nothing! We can't paste with OSC52
+	end
+end
+
+vim.g.clipboard = {
+	name = "OSC 52",
+	copy = {
+		["+"] = require("vim.ui.clipboard.osc52").copy("+"),
+		["*"] = require("vim.ui.clipboard.osc52").copy("*"),
+	},
+	paste = {
+		["+"] = no_paste("+"), -- Pasting disabled
+		["*"] = no_paste("*"), -- Pasting disabled
+	},
+}
 
 vim.g.do_filetype_lua = 1
 vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
@@ -37,5 +54,5 @@ vim.api.nvim_create_autocmd("dirchanged", {
 vim.opt.laststatus = 0
 vim.api.nvim_set_hl(0, "Statusline", { link = "Normal" })
 vim.api.nvim_set_hl(0, "StatuslineNC", { link = "Normal" })
-local line = string.rep("▁", vim.api.nvim_win_get_width(0))
+local line = string.rep("▔", vim.api.nvim_win_get_width(0))
 vim.opt.statusline = "%#WinSeparator#" .. line .. "%*"
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 0ca5ff3..59cf784 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -1,7 +1,7 @@
 return {
 	{
-		"shelmangroup/sumi-e.nvim",
-		dir = "/home/dln/src/git.shelman.io/shelmangroup/sumi-e.nvim",
+		"shelmangroup/dieter.nvim",
+		dir = "/home/dln/src/git.shelman.io/shelmangroup/dieter.nvim",
 		version = false,
 		lazy = false,
 		priority = 1000,
@@ -10,480 +10,7 @@ return {
 	{
 		"LazyVim/LazyVim",
 		opts = {
-			colorscheme = "sumi-e",
+			colorscheme = "dieter",
 		},
 	},
-
-	--[=====[
-	{
-		"jesseleite/nvim-noirbuddy",
-		lazy = false,
-		dependencies = {
-			{ "tjdevries/colorbuddy.nvim" },
-		},
-	},
-
-	{
-		"LazyVim/LazyVim",
-		opts = {
-			colorscheme = function()
-				require("noirbuddy").setup({
-					preset = "slate",
-					styles = {
-						italic = true,
-						bold = true,
-						underline = true,
-						undercurl = true,
-					},
-					colors = {
-						background = "#11171d",
-						primary = "#FFECD3",
-						secondary = "#B0BEC5",
-						--
-						diagnostic_info = "#00d992",
-						diagnostic_hint = "#00d992",
-					},
-				})
-				--
-				local colorbuddy = require("colorbuddy")
-				local Color = colorbuddy.Color
-				local colors = colorbuddy.colors
-				local Group = colorbuddy.Group
-				local groups = colorbuddy.groups
-				local styles = colorbuddy.styles
-
-				Color.new("ColorColumn", "#171e26")
-				Group.new("ColorColumn", nil, colors.ColorColumn)
-
-				Color.new("normal", "#e3e0cd")
-				Group.new("Normal", colors.normal, nil)
-
-				Color.new("Visual", "#440066")
-				Group.new("ModesVisualVisual", nil, colors.Visual)
-				Group.new("Visual", nil, colors.Visual)
-				Group.new("VisualNOS", nil, colors.Visual)
-				Group.new("MatchParen", nil, colors.Visual)
-
-				Color.new("NeoCodeiumLabelBg", "#eda92d")
-				Color.new("NeoCodeiumLabelFg", "#000000")
-				Group.new("NeoCodeiumLabel", colors.NeoCodeiumLabelFg, colors.NeoCodeiumLabelBg)
-
-				Color.new("NeoCodeiumSuggestion", "#996611")
-				Group.new("NeoCodeiumSuggestion", colors.NeoCodeiumSuggestion, nil, styles.italic)
-
-				Color.new("NoiceCmdLineBg", "#112233")
-				Color.new("NoiceCmdLineFg", "#99ccff")
-				Group.new("NoiceCmdLine", colors.NoiceCmdLineFg, colors.NoiceCmdLineBg)
-
-				Color.new("NoiceFormatProgressTodo", "#223344")
-				Group.new("NoiceFormatProgressTodo", nil, colors.NoiceFormatProgressTodo)
-				Color.new("NoiceFormatProgressDone", "#446699")
-				Group.new("NoiceFormatProgressDone", nil, colors.NoiceFormatProgressDone)
-
-				Color.new("WinSeparator", "#223344")
-				Group.new("WinSeparator", colors.WinSeparator, nil)
-
-				Color.new("string", "#D7CCC8")
-				Color.new("symbol", "#ECEFF1")
-
-				Color.new("comment", "#E57373", nil, styles.italic)
-				Color.new("hlargs", "#FFF8E1")
-
-				Color.new("illuminate_bg", "#112210")
-				Color.new("illuminate_fg", "#00d992")
-
-				Color.new("search_bg", "#223311")
-				Color.new("search_fg", "#CCFF33")
-
-				Color.new("MiniIndentscopeSymbol", "#00d992")
-				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
-
-				Color.new("CursorFg", "#000000", styles.nocombine)
-				Color.new("CursorBg", "#23fdb6", styles.nocombine)
-				Group.new("Cursor", colors.CursorFg, colors.CursorBg)
-				Color.new("CursorLine", "#141b23")
-				Group.new("CursorLine", nil, colors.CursorLine)
-
-				-- Color.new("TroubleBg", "#171e26")
-				Color.new("TroubleFg", "#e1d4c1")
-				Color.new("TroubleBg", "#10161d")
-				-- Color.new("TroubleBg", "#1d140f")
-				Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
-
-				Color.new("NavicTextFg", "#5fbf9f")
-				Color.new("NavicTextBg", "#333333")
-				Color.new("NavicIcon", "#5fbf9f")
-
-				Group.new("NavicText", colors.NavicTextFg, colors.NavicTextBg)
-				Group.new("NavicIcon", colors.NavicIcon, colors.NavicTextBg)
-				Group.link("NavicIconsFile", groups.NavicIcon)
-				Group.link("NavicIconsModule", groups.NavicIcon)
-				Group.link("NavicIconsNamespace", groups.NavicIcon)
-				Group.link("NavicIconsPackage", groups.NavicIcon)
-				Group.link("NavicIconsClass", groups.NavicIcon)
-				Group.link("NavicIconsMethod", groups.NavicIcon)
-				Group.link("NavicIconsProperty", groups.NavicIcon)
-				Group.link("NavicIconsField", groups.NavicIcon)
-				Group.link("NavicIconsConstructor", groups.NavicIcon)
-				Group.link("NavicIconsEnum", groups.NavicIcon)
-				Group.link("NavicIconsInterface", groups.NavicIcon)
-				Group.link("NavicIconsFunction", groups.NavicIcon)
-				Group.link("NavicIconsVariable", groups.NavicIcon)
-				Group.link("NavicIconsConstant", groups.NavicIcon)
-				Group.link("NavicIconsString", groups.NavicIcon)
-				Group.link("NavicIconsNumber", groups.NavicIcon)
-				Group.link("NavicIconsBoolean", groups.NavicIcon)
-				Group.link("NavicIconsArray", groups.NavicIcon)
-				Group.link("NavicIconsObject", groups.NavicIcon)
-				Group.link("NavicIconsKey", groups.NavicIcon)
-				Group.link("NavicIconsNull", groups.NavicIcon)
-				Group.link("NavicIconsEnumMember", groups.NavicIcon)
-				Group.link("NavicIconsStruct", groups.NavicIcon)
-				Group.link("NavicIconsEvent", groups.NavicIcon)
-				Group.link("NavicIconsOperator", groups.NavicIcon)
-				Group.link("NavicIconsTypeParameter", groups.NavicIcon)
-
-				Color.new("NormalFloatFg", "#b8d1ef", styles.nocombine)
-				-- Color.new("NormalFloatBg", "#335a88", styles.nocombine)
-				Color.new("NormalFloatBg", "#242d38", styles.nocombine)
-				Color.new("NormalFloatBorder", "#00d992", styles.nocombine)
-				Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
-				Group.new("FloatBorder", colors.NormalFloatBorder, colors.NormalFloatBg)
-
-				-- Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
-				-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
-				Color.new("PmenuSelFg", "#52ffb5", styles.nocombine)
-				Color.new("PmenuSelBg", "#003322", styles.nocombine)
-				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg, styles.bold)
-
-				-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
-				-- Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
-
-				Color.new("TreesitterContext", "#242e38", styles.nocombine)
-				Group.new("TreesitterContext", nil, colors.TreesitterContext)
-
-				-- Color.new("NonText", "#955252", styles.nocombine)
-				Color.new("NonText", "#955252", styles.nocombine)
-
-				Color.new("comment2", "#51a0cf")
-				Group.new("Comment", colors.NonText, nil, styles.italic + styles.bold)
-				Group.new("LspInlayHint", colors.comment2, nil, styles.italic)
-
-				Group.new("NonText", colors.NonText, nil, styles.italic)
-				Group.new("NonText", colors.NonText, nil, styles.italic)
-
-				Color.new("spelling", "#ffce60")
-				Group.new("SpellBad", colors.spelling, nil, styles.undercurl)
-
-				-- Color.new("LuaLineFg", "#aebed0")
-				Color.new("InclineFg", "#aebed0")
-				Color.new("InclineBg", "#242e38")
-				Group.new("InclineNormal", colors.InclineFg, colors.InclineBg)
-				Group.new("InclineNormalNC", colors.InclineFg, colors.InclineBg)
-
-				Color.new("LspInfoTitle", "#955252")
-				Group.new("LspInfoTitle", colors.LspInfoTitle, nil, styles.italic)
-				-- Group.new("DiagnosticHint", colors.LspInfoTitle, nil, styles.italic)
-				--
-				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
-				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
-				-- Color.new("TroubleBg", "#260200", styles.nocombine)
-				-- Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
-				-- Group.link("TroubleText", groups.TroubleNormal)
-				-- Group.link("TroubleSource", groups.TroubleNormal)
-				--
-				Color.new("Error", "#ffce60", styles.nocombine)
-				Group.new("ErrorMsg", colors.Error)
-
-				Color.new("FlashLabelFg", "#220011")
-				Color.new("FlashLabelBg", "#EA1199")
-				Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
-
-				Color.new("TelescopeBorder", "#23fdb6")
-				Group.new("TelescopeTitle", colors.TelescopeBorder)
-				Group.new("telescopeborder", colors.TelescopeBorder)
-
-				Color.new("TelescopeBorder", "#23fdb6")
-
-				Color.new("TelescopeNormal", "#b6c5bd")
-				Group.new("telescoperesultsnormal", colors.TelescopeNormal)
-
-				Color.new("TelescopeSelectionBg", "#003f29")
-				Color.new("TelescopeSelectionFg", "#f6fb2d")
-				Group.new(
-					"TelescopeSelection",
-					colors.TelescopeSelectionFg,
-					colors.TelescopeSelectionBg,
-					styles.nocombine + styles.bold
-				)
-
-				Group.new("@comment", colors.comment, nil, styles.italic + styles.bold)
-				Group.new("@string", colors.string, nil, styles.italic)
-
-				Group.new("@keyword", colors.noir_2)
-				Group.new("@keyword.function", colors.noir_2)
-				Group.new("@keyword.return", colors.noir_1)
-
-				Group.new("@operator", colors.noir_1)
-				Group.new("@keyword.operator", colors.noir_1)
-				-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
-				Group.new("@type.builtin", colors.noir_2)
-
-				Group.new("@variable", colors.symbol, nil)
-				Group.new("Hlargs", colors.hlargs, nil)
-
-				Group.new("@function", colors.noir_1, nil, styles.bold)
-				Group.new("@method", colors.noir_1, nil, styles.bold)
-
-				Group.new("@punctuation", colors.noir_4)
-				Group.new("@punctuation.bracket", colors.noir_4)
-				Group.new("@punctuation.delimiter", colors.noir_4)
-
-				Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
-
-				Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
-				Group.new("IncSearch", colors.search_fg, colors.search_bg)
-			end,
-||||||| parent of 1c239cb (nvim: use sumi-e colorscheme)
-			colorscheme = "alabaster",
-		},
-	},
-
-	--]=====]
-
-	{
-		"jesseleite/nvim-noirbuddy",
-		lazy = false,
-		dependencies = {
-			{ "tjdevries/colorbuddy.nvim" },
-		},
-	},
-
-	{
-		"LazyVim/LazyVim",
-		opts = {
-			colorscheme = function()
-				require("noirbuddy").setup({
-					preset = "slate",
-					styles = {
-						italic = true,
-						bold = true,
-						underline = true,
-						undercurl = true,
-					},
-					colors = {
-						background = "#11171d",
-						primary = "#FFECD3",
-						secondary = "#B0BEC5",
-						--
-						diagnostic_info = "#00d992",
-						diagnostic_hint = "#00d992",
-					},
-				})
-				--
-				local colorbuddy = require("colorbuddy")
-				local Color = colorbuddy.Color
-				local colors = colorbuddy.colors
-				local Group = colorbuddy.Group
-				local groups = colorbuddy.groups
-				local styles = colorbuddy.styles
-
-				Color.new("ColorColumn", "#171e26")
-				Group.new("ColorColumn", nil, colors.ColorColumn)
-
-				Color.new("normal", "#e3e0cd")
-				Group.new("Normal", colors.normal, nil)
-
-				Color.new("Visual", "#440066")
-				Group.new("ModesVisualVisual", nil, colors.Visual)
-				Group.new("Visual", nil, colors.Visual)
-				Group.new("VisualNOS", nil, colors.Visual)
-				Group.new("MatchParen", nil, colors.Visual)
-
-				Color.new("NeoCodeiumLabelBg", "#eda92d")
-				Color.new("NeoCodeiumLabelFg", "#000000")
-				Group.new("NeoCodeiumLabel", colors.NeoCodeiumLabelFg, colors.NeoCodeiumLabelBg)
-
-				Color.new("NeoCodeiumSuggestion", "#996611")
-				Group.new("NeoCodeiumSuggestion", colors.NeoCodeiumSuggestion, nil, styles.italic)
-
-				Color.new("NoiceCmdLineBg", "#112233")
-				Color.new("NoiceCmdLineFg", "#99ccff")
-				Group.new("NoiceCmdLine", colors.NoiceCmdLineFg, colors.NoiceCmdLineBg)
-
-				Color.new("NoiceFormatProgressTodo", "#223344")
-				Group.new("NoiceFormatProgressTodo", nil, colors.NoiceFormatProgressTodo)
-				Color.new("NoiceFormatProgressDone", "#446699")
-				Group.new("NoiceFormatProgressDone", nil, colors.NoiceFormatProgressDone)
-
-				Color.new("WinSeparator", "#223344")
-				Group.new("WinSeparator", colors.WinSeparator, nil)
-
-				Color.new("string", "#D7CCC8")
-				Color.new("symbol", "#ECEFF1")
-
-				Color.new("comment", "#E57373", nil, styles.italic)
-				Color.new("hlargs", "#FFF8E1")
-
-				Color.new("illuminate_bg", "#112210")
-				Color.new("illuminate_fg", "#00d992")
-
-				Color.new("search_bg", "#223311")
-				Color.new("search_fg", "#CCFF33")
-
-				Color.new("MiniIndentscopeSymbol", "#00d992")
-				Group.new("MiniIndentscopeSymbol", colors.MiniIndentscopeSymbol)
-
-				Color.new("CursorFg", "#000000", styles.nocombine)
-				Color.new("CursorBg", "#23fdb6", styles.nocombine)
-				Group.new("Cursor", colors.CursorFg, colors.CursorBg)
-				Color.new("CursorLine", "#141b23")
-				Group.new("CursorLine", nil, colors.CursorLine)
-
-				-- Color.new("TroubleBg", "#171e26")
-				Color.new("TroubleFg", "#e1d4c1")
-				Color.new("TroubleBg", "#10161d")
-				-- Color.new("TroubleBg", "#1d140f")
-				Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
-
-				Color.new("NavicTextFg", "#5fbf9f")
-				Color.new("NavicTextBg", "#333333")
-				Color.new("NavicIcon", "#5fbf9f")
-
-				Group.new("NavicText", colors.NavicTextFg, colors.NavicTextBg)
-				Group.new("NavicIcon", colors.NavicIcon, colors.NavicTextBg)
-				Group.link("NavicIconsFile", groups.NavicIcon)
-				Group.link("NavicIconsModule", groups.NavicIcon)
-				Group.link("NavicIconsNamespace", groups.NavicIcon)
-				Group.link("NavicIconsPackage", groups.NavicIcon)
-				Group.link("NavicIconsClass", groups.NavicIcon)
-				Group.link("NavicIconsMethod", groups.NavicIcon)
-				Group.link("NavicIconsProperty", groups.NavicIcon)
-				Group.link("NavicIconsField", groups.NavicIcon)
-				Group.link("NavicIconsConstructor", groups.NavicIcon)
-				Group.link("NavicIconsEnum", groups.NavicIcon)
-				Group.link("NavicIconsInterface", groups.NavicIcon)
-				Group.link("NavicIconsFunction", groups.NavicIcon)
-				Group.link("NavicIconsVariable", groups.NavicIcon)
-				Group.link("NavicIconsConstant", groups.NavicIcon)
-				Group.link("NavicIconsString", groups.NavicIcon)
-				Group.link("NavicIconsNumber", groups.NavicIcon)
-				Group.link("NavicIconsBoolean", groups.NavicIcon)
-				Group.link("NavicIconsArray", groups.NavicIcon)
-				Group.link("NavicIconsObject", groups.NavicIcon)
-				Group.link("NavicIconsKey", groups.NavicIcon)
-				Group.link("NavicIconsNull", groups.NavicIcon)
-				Group.link("NavicIconsEnumMember", groups.NavicIcon)
-				Group.link("NavicIconsStruct", groups.NavicIcon)
-				Group.link("NavicIconsEvent", groups.NavicIcon)
-				Group.link("NavicIconsOperator", groups.NavicIcon)
-				Group.link("NavicIconsTypeParameter", groups.NavicIcon)
-
-				Color.new("NormalFloatFg", "#b8d1ef", styles.nocombine)
-				-- Color.new("NormalFloatBg", "#335a88", styles.nocombine)
-				Color.new("NormalFloatBg", "#242d38", styles.nocombine)
-				Color.new("NormalFloatBorder", "#00d992", styles.nocombine)
-				Group.new("NormalFloat", colors.NormalFloatFg, colors.NormalFloatBg)
-				Group.new("FloatBorder", colors.NormalFloatBorder, colors.NormalFloatBg)
-
-				-- Color.new("PmenuSelFg", "#f3d390", styles.nocombine)
-				-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
-				Color.new("PmenuSelFg", "#52ffb5", styles.nocombine)
-				Color.new("PmenuSelBg", "#003322", styles.nocombine)
-				Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg, styles.bold)
-
-				-- Color.new("PmenuSelBg", "#335a88", styles.nocombine)
-				-- Group.new("PmenuSel", colors.PmenuSelFg, colors.PmenuSelBg)
-
-				Color.new("TreesitterContext", "#242e38", styles.nocombine)
-				Group.new("TreesitterContext", nil, colors.TreesitterContext)
-
-				-- Color.new("NonText", "#955252", styles.nocombine)
-				Color.new("NonText", "#955252", styles.nocombine)
-
-				Color.new("comment2", "#51a0cf")
-				Group.new("Comment", colors.NonText, nil, styles.italic + styles.bold)
-				Group.new("LspInlayHint", colors.comment2, nil, styles.italic)
-
-				Group.new("NonText", colors.NonText, nil, styles.italic)
-				Group.new("NonText", colors.NonText, nil, styles.italic)
-
-				Color.new("spelling", "#ffce60")
-				Group.new("SpellBad", colors.spelling, nil, styles.undercurl)
-
-				-- Color.new("LuaLineFg", "#aebed0")
-				Color.new("InclineFg", "#aebed0")
-				Color.new("InclineBg", "#242e38")
-				Group.new("InclineNormal", colors.InclineFg, colors.InclineBg)
-				Group.new("InclineNormalNC", colors.InclineFg, colors.InclineBg)
-
-				Color.new("LspInfoTitle", "#955252")
-				Group.new("LspInfoTitle", colors.LspInfoTitle, nil, styles.italic)
-				-- Group.new("DiagnosticHint", colors.LspInfoTitle, nil, styles.italic)
-				--
-				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
-				-- Color.new("TroubleFg", "#ffce60", styles.nocombine)
-				-- Color.new("TroubleBg", "#260200", styles.nocombine)
-				-- Group.new("TroubleNormal", colors.TroubleFg, colors.TroubleBg)
-				-- Group.link("TroubleText", groups.TroubleNormal)
-				-- Group.link("TroubleSource", groups.TroubleNormal)
-				--
-				Color.new("Error", "#ffce60", styles.nocombine)
-				Group.new("ErrorMsg", colors.Error)
-
-				Color.new("FlashLabelFg", "#220011")
-				Color.new("FlashLabelBg", "#EA1199")
-				Group.new("FlashLabel", colors.FlashLabelFg, colors.FlashLabelBg)
-
-				Color.new("TelescopeBorder", "#23fdb6")
-				Group.new("TelescopeTitle", colors.TelescopeBorder)
-				Group.new("telescopeborder", colors.TelescopeBorder)
-
-				Color.new("TelescopeBorder", "#23fdb6")
-
-				Color.new("TelescopeNormal", "#b6c5bd")
-				Group.new("telescoperesultsnormal", colors.TelescopeNormal)
-
-				Color.new("TelescopeSelectionBg", "#003f29")
-				Color.new("TelescopeSelectionFg", "#f6fb2d")
-				Group.new(
-					"TelescopeSelection",
-					colors.TelescopeSelectionFg,
-					colors.TelescopeSelectionBg,
-					styles.nocombine + styles.bold
-				)
-
-				Group.new("@comment", colors.comment, nil, styles.italic + styles.bold)
-				Group.new("@string", colors.string, nil, styles.italic)
-
-				Group.new("@keyword", colors.noir_2)
-				Group.new("@keyword.function", colors.noir_2)
-				Group.new("@keyword.return", colors.noir_1)
-
-				Group.new("@operator", colors.noir_1)
-				Group.new("@keyword.operator", colors.noir_1)
-				-- Group.new("Hlargs", colors.noir_3, nil, styles.italic)
-				Group.new("@type.builtin", colors.noir_2)
-
-				Group.new("@variable", colors.symbol, nil)
-				Group.new("Hlargs", colors.hlargs, nil)
-
-				Group.new("@function", colors.noir_1, nil, styles.bold)
-				Group.new("@method", colors.noir_1, nil, styles.bold)
-
-				Group.new("@punctuation", colors.noir_4)
-				Group.new("@punctuation.bracket", colors.noir_4)
-				Group.new("@punctuation.delimiter", colors.noir_4)
-
-				Group.new("IlluminatedWordText", colors.illuminate_fg, colors.illuminate_bg)
-
-				Group.new("Search", colors.search_fg, colors.search_bg, styles.italic + styles.undercurl)
-				Group.new("IncSearch", colors.search_fg, colors.search_bg)
-			end,
-=======
-			colorscheme = "sumi-e",
->>>>>>> 1c239cb (nvim: use sumi-e colorscheme)
-		},
-	},
-	--]=====]
 }
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index f894c32..159bcec 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -52,6 +52,7 @@ return {
 
 	{
 		"mrcjkb/rustaceanvim",
+		enabled = false,
 		version = "^4", -- Recommended
 		ft = { "rust" },
 		opts = {
@@ -77,10 +78,6 @@ return {
 						loadOutDirsFromCheck = true,
 						runBuildScripts = true,
 						targetDir = true,
-						-- extraEnv = {
-						-- 	RUSTC_LINKER = "clang",
-						-- 	RUSTFLAGS = "-Clink-arg=-fuse-ld=mold",
-						-- },
 					},
 					-- Add clippy lints for Rust.
 					checkOnSave = {
diff --git a/.config/nvim/lua/plugins/incline.lua b/.config/nvim/lua/plugins/incline.lua
index dde16dd..c594785 100644
--- a/.config/nvim/lua/plugins/incline.lua
+++ b/.config/nvim/lua/plugins/incline.lua
@@ -40,7 +40,7 @@ return {
 				end
 
 				local function get_diagnostic_label()
-					local icons = { error = "󰅜 ", warn = " ", info = " ", hint = " " }
+					local icons = { error = " ", warn = " ", info = " ", hint = " " }
 					local label = {}
 
 					for severity, icon in pairs(icons) do
@@ -59,13 +59,11 @@ return {
 				end
 
 				return {
-					-- { "" },
-					{ "  ", gui = "reverse" },
-					{ get_diagnostic_label(), guibg = "fg", guifg = "bg" },
-					{ get_git_diff(), gui = "reverse" },
-					{ filename, gui = "reverse" },
-					{ "  ", gui = "reverse" },
-					-- { "" },
+					{ "  " },
+					{ get_diagnostic_label() },
+					{ get_git_diff() },
+					{ filename, group = "Label" },
+					{ "  " },
 				}
 			end,
 		})
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index 93920d8..24a6969 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -2,6 +2,9 @@ return {
 	{
 		"neovim/nvim-lspconfig",
 		opts = {
+			diagnostics = {
+				virtual_text = false,
+			},
 			inlay_hints = { enabled = false },
 			-- codelens = {
 			-- 	enabled = true,
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
new file mode 100644
index 0000000..0aea1c4
--- /dev/null
+++ b/.config/nvim/lua/plugins/treesitter.lua
@@ -0,0 +1,41 @@
+return {
+	{
+		"nvim-treesitter/nvim-treesitter-context",
+		opts = {
+			enable = false,
+		},
+	},
+
+	{
+		"nvim-treesitter/nvim-treesitter",
+		opts = function(_, opts)
+			vim.list_extend(opts.ensure_installed, {
+				"bash",
+				"c",
+				"diff",
+				"go",
+				"html",
+				"javascript",
+				"jsdoc",
+				"json",
+				"jsonc",
+				"lua",
+				"luadoc",
+				"luap",
+				"markdown",
+				"markdown_inline",
+				"python",
+				"query",
+				"regex",
+				"rust",
+				"toml",
+				"tsx",
+				"typescript",
+				"vim",
+				"vimdoc",
+				"xml",
+				"yaml",
+			})
+		end,
+	},
+}
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index b6c08af..b9eb9c2 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -22,6 +22,18 @@ return {
 		},
 	},
 
+	{
+		"dgagn/diagflow.nvim",
+		-- event = 'LspAttach', This is what I use personnally and it works great
+		opts = {
+			scope = "line",
+			gap_size = 0,
+			max_width = 50,
+			max_height = 20,
+			show_borders = true,
+		},
+	},
+
 	{
 		"akinsho/bufferline.nvim",
 		enabled = false,
@@ -94,7 +106,6 @@ return {
 		opts = {
 			stages = "fade_in_slide_out",
 			timeout = 1000,
-			background_colour = "#1e2835",
 			render = "wrapped-compact",
 			top_down = false,
 		},
diff --git a/.config/nvim/spell/en.utf-8.add b/.config/nvim/spell/en.utf-8.add
new file mode 100644
index 0000000..ab924f2
--- /dev/null
+++ b/.config/nvim/spell/en.utf-8.add
@@ -0,0 +1,10 @@
+#rytographically
+crytographically/!
+OIDC
+Kubernetes
+auth
+JWT
+PKCE
+OPA
+#askfile
+Taskfile/!
diff --git a/.config/nvim/spell/en.utf-8.add.spl b/.config/nvim/spell/en.utf-8.add.spl
new file mode 100644
index 0000000000000000000000000000000000000000..b8cee884173101bb32cd424d8b1775876e9c6e10
GIT binary patch
literal 144
zcmWIZ^erw(&B-zP&%nTt$)1>;m7QNu!dS{!!kEFxz*xjs$ymae&zR0w#F)rfz?i|9
z$(YQT$e6>J!&u44B*0kCSi;D}!dS|f#F)xh#F)pJ%2>jf%2>?E#Ke?Yz?j0w$iQHd
h3?>s9vl$_*RK`TcV#aL7G{#KE9L7{eCLsnG001$*8x#Nl

literal 0
HcmV?d00001


From f6113686641fa6eec19bfc1146b54ca78a3ba8b3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 7 Jun 2024 17:45:21 +0200
Subject: [PATCH 288/656] wezterm: use berkeley mono nerd font

---
 .config/wezterm/wezterm.lua | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index ad75b0f..fd0bf15 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -98,18 +98,21 @@ config.color_scheme = scheme_for_appearance(wezterm.gui.get_appearance())
 
 -- ------------------------------------------------------------------------------------
 -- Fonts
-config.font = wezterm.font({ family = "Berkeley Mono", weight = "Regular" })
--- config.font = wezterm.font({ family = "Berkeley Mono" })
--- config.font_rules = {
--- 	{
--- 		italic = true,
--- 		intensity = "Bold",
--- 		reverse = false,
--- 		-- font = wezterm.font("IosevkaShelman Nerd Font", { weight = "ExtraLight", italic = true }),
--- 		-- font = wezterm.font("Iosevka Term Curly Slab", { weight = "Light", italic = true }),
--- 		font = wezterm.font("Monaspace Krypton", { weight = "ExtraLight", italic = true }),
--- 	},
--- }
+config.font = wezterm.font({ family = "Berkeley Mono Nerd Font", weight = "Regular" })
+config.font_rules = {
+	{
+		italic = true,
+		intensity = "Bold",
+		reverse = false,
+		-- font = wezterm.font("Iosevka Term SS15 Lt Ex Obl", { weight = "Light", italic = true }),
+		-- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }),
+		-- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }),
+		-- font = wezterm.font("Monaspace Neon Var", { weight = "Regular", italic = false }),
+		-- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }),
+		font = wezterm.font({ family = "Berkeley Mono Nerd Font", italic = true }),
+	},
+}
+
 config.font_size = 14
 -- config.font_size = 18
 config.warn_about_missing_glyphs = false
@@ -153,8 +156,8 @@ config.window_frame = {
 	border_top_color = "#000000",
 }
 config.window_padding = {
-	left = 0,
-	right = 0,
+	left = 10,
+	right = 10,
 	top = 0,
 	bottom = 0,
 }
@@ -163,7 +166,7 @@ config.window_padding = {
 config.hyperlink_rules = wezterm.default_hyperlink_rules()
 
 table.insert(config.hyperlink_rules, {
-	regex = [[`rustc --explain E(\d+)`]],
+	regex = [[E(\d+)]],
 	format = "https://doc.rust-lang.org/error_codes/E$1.html",
 })
 

From dca08c8a845b487d3fe2d4f7851810a3707dd5c5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 7 Jun 2024 17:59:56 +0200
Subject: [PATCH 289/656] wezterm: inline colors in lua config

---
 .config/wezterm/colors/shelman-dark.toml  | 42 -----------------------
 .config/wezterm/colors/shelman-light.toml | 35 -------------------
 .config/wezterm/wezterm.lua               | 32 +++++++++++++----
 3 files changed, 26 insertions(+), 83 deletions(-)
 delete mode 100644 .config/wezterm/colors/shelman-dark.toml
 delete mode 100644 .config/wezterm/colors/shelman-light.toml

diff --git a/.config/wezterm/colors/shelman-dark.toml b/.config/wezterm/colors/shelman-dark.toml
deleted file mode 100644
index 430d587..0000000
--- a/.config/wezterm/colors/shelman-dark.toml
+++ /dev/null
@@ -1,42 +0,0 @@
-[metadata]
-name = "Shelman Dark"
-origin_url = ""
-
-[colors]
-ansi = [
-  "#000000",
-  "#ff0035",
-  "#85ff00",
-  "#ffc900",
-  "#00a7ff",
-  "#cb01ff",
-  "#00e0ff",
-  "#f0f0f0",
-]
-
-brights = [
-  "#000000",
-  "#ff8c88",
-  "#baff94",
-  "#ffe090",
-  "#88ccff",
-  "#e38dff",
-  "#97eeff",
-  "#ffffff",
-]
-
-#background = "#000000"
-background = "#0d1117"
-
-# background = "#11171d"
-#background = "#171e26"
-# background = "#161923"
-# foreground = "#e3e0cd"
-# foreground = "#d3d0bd"
-#foreground = "#cccccc"
-foreground = "#b2b2b2"
-cursor_bg = "#00d992"
-cursor_fg = "#000000"
-cursor_border = "#000000"
-selection_bg = "#d7d7d7"
-selection_fg = "#000000"
diff --git a/.config/wezterm/colors/shelman-light.toml b/.config/wezterm/colors/shelman-light.toml
deleted file mode 100644
index 744360f..0000000
--- a/.config/wezterm/colors/shelman-light.toml
+++ /dev/null
@@ -1,35 +0,0 @@
-[metadata]
-name = "Shelman Light"
-origin_url = ""
-
-[colors]
-ansi = [
-  "#000000",
-  "#9e001d",
-  "#306300",
-  "#deae00",
-  "#00669e",
-  "#7d009e",
-  "#008a9e",
-  "#f7f7f7",
-]
-
-brights = [
-  "#000000",
-  "#ff0035",
-  "#509e00",
-  "#ffc900",
-  "#00a7ff",
-  "#cb01ff",
-  "#00e0ff",
-  "#ffffff",
-]
-
-background = "#fefeff"
-# foreground = "#2c363c"
-foreground = "#000000"
-cursor_bg = "#aa0000"
-cursor_fg = "#ffffff"
-cursor_border = "#ffffff"
-selection_bg = "#ffe6a4"
-selection_fg = "#483600"
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index fd0bf15..4f81b7e 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -7,7 +7,7 @@ local config = {}
 -- ------------------------------------------------------------------------------------
 -- Workspace behavior
 
--- local nvim_args = { "nvim", "--listen", "$XDG_RUNTIME_DIR" .. "/nvim-persistent.sock" }
+-- FIXME: use of the local env var here only works with the same UID on all machines
 local nvim_args = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
 
 config.exec_domains = {
@@ -86,15 +86,36 @@ end)
 -- ------------------------------------------------------------------------------------
 -- Appearance
 
-local function scheme_for_appearance(appearance)
+local function colors_for_appearance(appearance)
 	if appearance:find("Dark") then
-		return "Shelman Dark"
+		return {
+			background = "#0d1117",
+			-- background = "#000000",
+			foreground = "#b2b2b2",
+			cursor_bg = "#00d992",
+			cursor_fg = "#000000",
+			cursor_border = "#000000",
+			selection_bg = "#d7d7d7",
+			selection_fg = "#000000",
+			ansi = { "#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#f0f0f0" },
+			brights = { "#000000", "#ff8c88", "#baff94", "#ffe090", "#88ccff", "#e38dff", "#97eeff", "#ffffff" },
+		}
 	else
-		return "Shelman Light"
+		return {
+			background = "#fefeff",
+			foreground = "#000000",
+			cursor_bg = "#aa0000",
+			cursor_fg = "#ffffff",
+			cursor_border = "#ffffff",
+			selection_bg = "#ffe6a4",
+			selection_fg = "#483600",
+			ansi = { "#000000", "#9e001d", "#306300", "#deae00", "#00669e", "#7d009e", "#008a9e", "#f7f7f7" },
+			brights = { "#000000", "#ff0035", "#509e00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#ffffff" },
+		}
 	end
 end
 
-config.color_scheme = scheme_for_appearance(wezterm.gui.get_appearance())
+config.colors = colors_for_appearance(wezterm.gui.get_appearance())
 
 -- ------------------------------------------------------------------------------------
 -- Fonts
@@ -107,7 +128,6 @@ config.font_rules = {
 		-- font = wezterm.font("Iosevka Term SS15 Lt Ex Obl", { weight = "Light", italic = true }),
 		-- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }),
 		-- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }),
-		-- font = wezterm.font("Monaspace Neon Var", { weight = "Regular", italic = false }),
 		-- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }),
 		font = wezterm.font({ family = "Berkeley Mono Nerd Font", italic = true }),
 	},

From 2f3376654c4b0bda12aabf91d001a83c5e31a877 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 8 Jun 2024 09:31:23 +0200
Subject: [PATCH 290/656] nvim: shorten updatetime for cursorhold events

---
 .config/nvim/lua/config/options.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 1e2b623..23dd35f 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -31,7 +31,7 @@ vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
 vim.o.list = false
 vim.o.scrolloff = 7
 vim.o.splitkeep = "screen"
-vim.o.updatetime = 2500
+vim.o.updatetime = 500
 vim.o.timeout = true
 vim.o.timeoutlen = 0
 

From 266ef70a8c972ea8041b892c3a057aaf5d63f377 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 8 Jun 2024 09:32:04 +0200
Subject: [PATCH 291/656] nvim: move all lazy extras to be managed by lazy

---
 .config/nvim/lazyvim.json | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json
index 21757d1..ee1c524 100644
--- a/.config/nvim/lazyvim.json
+++ b/.config/nvim/lazyvim.json
@@ -1,27 +1,24 @@
 {
   "extras": [
     "lazyvim.plugins.extras.coding.codeium",
-    "lazyvim.plugins.extras.coding.yanky",
     "lazyvim.plugins.extras.dap.core",
     "lazyvim.plugins.extras.formatting.prettier",
     "lazyvim.plugins.extras.lang.go",
     "lazyvim.plugins.extras.lang.json",
     "lazyvim.plugins.extras.lang.markdown",
-    "lazyvim.plugins.extras.lang.markdown",
     "lazyvim.plugins.extras.lang.nix",
     "lazyvim.plugins.extras.lang.rust",
     "lazyvim.plugins.extras.lang.toml",
     "lazyvim.plugins.extras.lang.typescript",
     "lazyvim.plugins.extras.lang.yaml",
     "lazyvim.plugins.extras.lsp.none-ls",
-    "lazyvim.plugins.extras.lsp.none-ls",
     "lazyvim.plugins.extras.test.core",
     "lazyvim.plugins.extras.ui.edgy",
     "lazyvim.plugins.extras.ui.treesitter-context",
     "lazyvim.plugins.extras.util.gitui"
   ],
   "news": {
-    "NEWS.md": "5204"
+    "NEWS.md": "5950"
   },
   "version": 6
 }
\ No newline at end of file

From 23dcb3c9ddf2ec4521b5a6bb2f7ca56c75af273f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 8 Jun 2024 09:32:36 +0200
Subject: [PATCH 292/656] nvim: remove lazy-lock file from git

---
 .config/nvim/lazy-lock.json | 70 -------------------------------------
 1 file changed, 70 deletions(-)
 delete mode 100644 .config/nvim/lazy-lock.json

diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
deleted file mode 100644
index 32b5f3e..0000000
--- a/.config/nvim/lazy-lock.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-  "LazyVim": { "branch": "main", "commit": "ad092e96f9100f0471905316dc412620945cf1e5" },
-  "SchemaStore.nvim": { "branch": "main", "commit": "d9fd6651b47b68bfc1b952f81a0fdded3cb205b2" },
-  "catppuccin": { "branch": "main", "commit": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe" },
-  "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
-  "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
-  "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
-  "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
-  "codeium.nvim": { "branch": "main", "commit": "d3b88eb3aa1de6da33d325c196b8a41da2bcc825" },
-  "conform.nvim": { "branch": "master", "commit": "069e971295a34a810484b7b2ef54b3c735214181" },
-  "crates.nvim": { "branch": "main", "commit": "0c8436cb10e9ac62354baa5874a4a3413f2432c1" },
-  "dashboard-nvim": { "branch": "master", "commit": "5346d023afc4bfc7ff63d05c70bcdb0784bb657a" },
-  "diagflow.nvim": { "branch": "main", "commit": "4a03e94e1bf6d18feaac44476cfcb78b403bd609" },
-  "direnv.vim": { "branch": "master", "commit": "ab2a7e08dd630060cd81d7946739ac7442a4f269" },
-  "dressing.nvim": { "branch": "master", "commit": "e3714c8049b2243e792492c4149e4cc395c68eb9" },
-  "edgy.nvim": { "branch": "main", "commit": "de79b7d92a5979cd71a9a1d8b6282515345e5055" },
-  "friendly-snippets": { "branch": "main", "commit": "e11b09bf10706bb74e16e4c3d11b2274d62e687f" },
-  "fzf": { "branch": "master", "commit": "590060a16b85270c19c605e8758cda16c4517086" },
-  "fzfx.nvim": { "branch": "main", "commit": "be147216edf164a1739430c7fda210f9876cc430" },
-  "gitsigns.nvim": { "branch": "main", "commit": "4a143f13e122ab91abdc88f89eefbe70a4858a56" },
-  "headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
-  "incline.nvim": { "branch": "main", "commit": "16fc9c073e3ea4175b66ad94375df6d73fc114c0" },
-  "indentmini.nvim": { "branch": "main", "commit": "916d0c5804e46314a966f73af5695de10d11c943" },
-  "lazy.nvim": { "branch": "main", "commit": "fafe1f7c640aed75e70a10e6649612cd96f39149" },
-  "lazydev.nvim": { "branch": "main", "commit": "107231114623e2c4f90c626ec83b3120816b554e" },
-  "luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" },
-  "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
-  "mason-lspconfig.nvim": { "branch": "main", "commit": "8db12610bcb7ce67013cfdfaba4dd47a23c6e851" },
-  "mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
-  "mason.nvim": { "branch": "main", "commit": "0950b15060067f752fde13a779a994f59516ce3d" },
-  "mini.ai": { "branch": "main", "commit": "7859b6344f5cee567a94f173859d25e20ba1a77e" },
-  "modes.nvim": { "branch": "main", "commit": "326cff3282419b3bcc745061978c1e592cae055d" },
-  "neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
-  "neocodeium": { "branch": "main", "commit": "4a46f6438bcdb21c562f83036bce75c719834072" },
-  "neotest": { "branch": "master", "commit": "6f35d797882c6ce0ab7c87dc86561512dc3d7aba" },
-  "neotest-go": { "branch": "main", "commit": "92950ad7be2ca02a41abca5c6600ff6ffaf5b5d6" },
-  "noice.nvim": { "branch": "main", "commit": "e5cb20c6e14305d24025ecb77d7d4dd9d61f1a64" },
-  "none-ls.nvim": { "branch": "main", "commit": "8691504118b252d64fc5023a104aedd100ab754a" },
-  "nui.nvim": { "branch": "main", "commit": "322978c734866996274467de084a95e4f9b5e0b1" },
-  "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
-  "nvim-dap": { "branch": "master", "commit": "6f79b822997f2e8a789c6034e147d42bc6706770" },
-  "nvim-dap-go": { "branch": "main", "commit": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1" },
-  "nvim-dap-ui": { "branch": "master", "commit": "b7267003ba4dd860350be86f75b9d9ea287cedca" },
-  "nvim-dap-virtual-text": { "branch": "master", "commit": "d7c695ea39542f6da94ee4d66176f5d660ab0a77" },
-  "nvim-lint": { "branch": "master", "commit": "cf6ffafe158441b8c5e2051ab0fe5b1983527ba7" },
-  "nvim-lspconfig": { "branch": "master", "commit": "92166b89ab4b3d60f24e58170cac53b7141fd032" },
-  "nvim-nio": { "branch": "master", "commit": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a" },
-  "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
-  "nvim-snippets": { "branch": "main", "commit": "cff37a199a92f3c3cd52bb1593a7d01669b35d23" },
-  "nvim-spectre": { "branch": "master", "commit": "4d22fe03554056de4325762add3e546c77e3a275" },
-  "nvim-treesitter": { "branch": "master", "commit": "c5cbd3ec74f6f5ddbac939e6f24b99fe78262b4c" },
-  "nvim-treesitter-context": { "branch": "master", "commit": "5efba33af0f39942e426340da7bc15d7dec16474" },
-  "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" },
-  "nvim-ts-autotag": { "branch": "main", "commit": "6eb4120a1aadef07ac312f1c4bc6456712220007" },
-  "nvim-web-devicons": { "branch": "master", "commit": "b4b302d6ae229f67df7a87ef69fa79473fe788a9" },
-  "overseer.nvim": { "branch": "master", "commit": "bd9cc6d2cc2317b6b70b3bfb956c88d4e00c7837" },
-  "persistence.nvim": { "branch": "main", "commit": "5fe077056c821aab41f87650bd6e1c48cd7dd047" },
-  "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
-  "smart-open.nvim": { "branch": "0.2.x", "commit": "87626ee8748b9bba22093adec7bb58c63e7214f0" },
-  "sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
-  "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
-  "telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
-  "telescope.nvim": { "branch": "master", "commit": "dfa230be84a044e7f546a6c2b0a403c739732b86" },
-  "todo-comments.nvim": { "branch": "main", "commit": "70a93ce66083699571adc361166504b03cc39c2b" },
-  "tokyonight.nvim": { "branch": "main", "commit": "02e9028fe3560f38363c2d38f1c87e45eb04fdb3" },
-  "trouble.nvim": { "branch": "main", "commit": "c11dc2777d52da2c8da25836817e43608ec951a5" },
-  "ts-comments.nvim": { "branch": "main", "commit": "e339090c076871069c00e488b11def49aaf4e413" },
-  "which-key.nvim": { "branch": "main", "commit": "0099511294f16b81c696004fa6a403b0ae61f7a0" },
-  "yanky.nvim": { "branch": "main", "commit": "79338563e85a868e59cda02c51b54d90a5514a12" }
-}
\ No newline at end of file

From b64b083611bf1185981df2a9bad13dd4a8a207cf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 8 Jun 2024 09:33:12 +0200
Subject: [PATCH 293/656] nvim: move all lazy extras to be managed by lazy

---
 .config/nvim/lua/config/lazy.lua | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
index cb2fc79..d5db9cc 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/.config/nvim/lua/config/lazy.lua
@@ -11,14 +11,6 @@ require("lazy").setup({
 		-- add LazyVim and import its plugins
 		{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
 		-- import any extras modules here
-		-- { import = "lazyvim.plugins.extras.coding.codeium" },
-		-- { import = "lazyvim.plugins.extras.formatting.prettier" },
-		-- { import = "lazyvim.plugins.extras.lang.go" },
-		-- { import = "lazyvim.plugins.extras.lang.json" },
-		-- { import = "lazyvim.plugins.extras.lang.markdown" },
-		-- { import = "lazyvim.plugins.extras.lang.rust" },
-		-- { import = "lazyvim.plugins.extras.lang.typescript" },
-		-- { import = "lazyvim.plugins.extras.lsp.none-ls" },
 		-- import/override with your plugins
 		{ import = "plugins" },
 	},

From 77854d330c8e4a17cc690495e3432aad14a66776 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sat, 8 Jun 2024 21:39:25 +0200
Subject: [PATCH 294/656] nvim: let rustaceanvim manage rust-analyzer

---
 .config/nvim/lua/plugins/extras.lua | 1 -
 .config/nvim/lua/plugins/lsp.lua    | 9 ---------
 2 files changed, 10 deletions(-)

diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 159bcec..8dd86c5 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -52,7 +52,6 @@ return {
 
 	{
 		"mrcjkb/rustaceanvim",
-		enabled = false,
 		version = "^4", -- Recommended
 		ft = { "rust" },
 		opts = {
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index 24a6969..c7c4f6e 100644
--- a/.config/nvim/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
@@ -10,15 +10,6 @@ return {
 			-- 	enabled = true,
 			-- },
 			servers = {
-				rust_analyzer = {
-					mason = false,
-					-- targetDir = true,
-					-- keys = {
-					-- 	{ "K", "<cmd>RustHoverActions<cr>", desc = "Hover Actions (Rust)" },
-					-- 	{ "<leader>cR", "<cmd>RustCodeAction<cr>", desc = "Code Action (Rust)" },
-					-- 	{ "<leader>dr", "<cmd>RustDebuggables<cr>", desc = "Run Debuggables (Rust)" },
-					-- },
-				},
 				starpls = {},
 				yamlls = {
 					settings = {

From db796e4fab78d9ad473821201874aecd52ce9698 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 9 Jun 2024 14:30:08 +0200
Subject: [PATCH 295/656] git: no colors in delta

---
 .gitconfig | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/.gitconfig b/.gitconfig
index fa0f689..e389b10 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -59,20 +59,19 @@ looseCompression = 3
 pager = delta
 
 [delta]
-; # syntax-theme = GitHub
-file-added-label =  " ➕ ══"
+file-added-label =  "[+]"
 file-decoration-style=none
-file-modified-label = " ▲ ══"
-file-removed-label = " ➖══"
-file-renamed-label = " ➞ ══"
-file-style = bold "#ffff66" "#333300"
-file-transformation = "s/$/ ══  /"
+file-modified-label = "[*]"
+file-removed-label = "[-]"
+file-renamed-label = "[>]"
+file-style = bold reverse 
+file-transformation = "s/$/  ░▒▓/"
 hunk-header-decoration-style=none
-hunk-header-file-style = bold "#66ddff"
-hunk-header-line-number-style = bold "#66ccff"
-hunk-header-style = line-number bold "#99eeff" "#001133"
+hunk-header-file-style = bold
+hunk-header-line-number-style = bold
+hunk-header-style = line-number bold
 hunk-label = "⯁"
-hunk-label-style = bold "#66ccff"
+hunk-label-style = bold
 line-numbers = true
 max-line-distance = 0.9
 

From 08f365596cb5fc821ad506703d43c8408f32a386 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Sun, 9 Jun 2024 14:36:08 +0200
Subject: [PATCH 296/656] gitui: remove theme

---
 .config/gitui/theme.ron | 23 -----------------------
 1 file changed, 23 deletions(-)
 delete mode 100644 .config/gitui/theme.ron

diff --git a/.config/gitui/theme.ron b/.config/gitui/theme.ron
deleted file mode 100644
index 9818424..0000000
--- a/.config/gitui/theme.ron
+++ /dev/null
@@ -1,23 +0,0 @@
-(
-    selected_tab: Some(Reset),
-    command_fg: Some(Rgb(205, 214, 244)),
-    selection_bg: Some(Rgb(88, 91, 112)),
-    selection_fg: Some(Rgb(205, 214, 244)),
-    cmdbar_bg: Some(Rgb(24, 24, 37)),
-    cmdbar_extra_lines_bg: Some(Rgb(24, 24, 37)),
-    disabled_fg: Some(Rgb(127, 132, 156)),
-    diff_line_add: Some(Rgb(166, 227, 161)),
-    diff_line_delete: Some(Rgb(243, 139, 168)),
-    diff_file_added: Some(Rgb(249, 226, 175)),
-    diff_file_removed: Some(Rgb(235, 160, 172)),
-    diff_file_moved: Some(Rgb(203, 166, 247)),
-    diff_file_modified: Some(Rgb(250, 179, 135)),
-    commit_hash: Some(Rgb(180, 190, 254)),
-    commit_time: Some(Rgb(186, 194, 222)),
-    commit_author: Some(Rgb(116, 199, 236)),
-    danger_fg: Some(Rgb(243, 139, 168)),
-    push_gauge_bg: Some(Rgb(137, 180, 250)),
-    push_gauge_fg: Some(Rgb(30, 30, 46)),
-    tag_fg: Some(Rgb(245, 224, 220)),
-    branch_fg: Some(Rgb(148, 226, 213))
-)

From 116d3f9e0cbb365c7ce71ab031c474c321a1d08e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 11 Jun 2024 12:22:01 +0200
Subject: [PATCH 297/656] wezterm: tinker with stylistic features

---
 .config/wezterm/wezterm.lua | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 4f81b7e..0648653 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -119,7 +119,24 @@ config.colors = colors_for_appearance(wezterm.gui.get_appearance())
 
 -- ------------------------------------------------------------------------------------
 -- Fonts
-config.font = wezterm.font({ family = "Berkeley Mono Nerd Font", weight = "Regular" })
+local berkeley_mono_features = {
+	-- "calt=1",
+	-- "dlig=0",
+	-- "liga",
+	-- "calt=1",
+	-- "clig=1",
+	-- "ss02", -- Clean Zero
+	"ss03", -- Slashed Zero
+	-- "ss04", -- Cut Zero
+}
+
+-- #[ ## ### #### ################
+
+config.font = wezterm.font({
+	family = "Berkeley Mono Nerd Font",
+	weight = "Regular",
+	harfbuzz_features = berkeley_mono_features,
+})
 config.font_rules = {
 	{
 		italic = true,
@@ -129,7 +146,11 @@ config.font_rules = {
 		-- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }),
 		-- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }),
 		-- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }),
-		font = wezterm.font({ family = "Berkeley Mono Nerd Font", italic = true }),
+		font = wezterm.font({
+			family = "Berkeley Mono Nerd Font",
+			italic = true,
+			harfbuzz_features = berkeley_mono_features,
+		}),
 	},
 }
 
@@ -140,7 +161,7 @@ config.bold_brightens_ansi_colors = false
 config.unicode_version = 14
 -- config.freetype_load_flags = "DEFAULT"
 --
-config.front_end = "OpenGL"
+-- config.front_end = "OpenGL"
 config.freetype_load_flags = "NO_HINTING"
 config.freetype_load_target = "Light"
 config.freetype_render_target = "HorizontalLcd"
@@ -201,8 +222,8 @@ config.default_cursor_style = "SteadyBlock"
 config.cursor_thickness = "6px"
 config.cursor_blink_rate = 700
 config.hide_mouse_cursor_when_typing = false
-config.underline_position = -9
-config.underline_thickness = 1
+config.underline_position = -7
+config.underline_thickness = 2
 
 -- Scrolling
 config.enable_scroll_bar = false

From f7220ddf08827ac0c2b46c3d9f083942ea489515 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 11 Jun 2024 12:35:02 +0200
Subject: [PATCH 298/656] wezterm: fix underline position

---
 .config/wezterm/wezterm.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 0648653..eee7cfc 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -222,7 +222,7 @@ config.default_cursor_style = "SteadyBlock"
 config.cursor_thickness = "6px"
 config.cursor_blink_rate = 700
 config.hide_mouse_cursor_when_typing = false
-config.underline_position = -7
+config.underline_position = -3
 config.underline_thickness = 2
 
 -- Scrolling

From 1cb5298e94b9d08a2c9fba36af6f5fab9e44ec7d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 11 Jun 2024 12:38:37 +0200
Subject: [PATCH 299/656] test-term: add blocks and border chars test

---
 bin/test-term.sh | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/bin/test-term.sh b/bin/test-term.sh
index 2942743..47f9a0f 100755
--- a/bin/test-term.sh
+++ b/bin/test-term.sh
@@ -57,6 +57,14 @@ echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly u
 echo
 echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷 ❤️ "
 
+echo
+echo "Blocks:"
+echo -e '🮙\n🮙\n🮙'
+echo
+echo -e '╭──────────────╮'
+echo -e '│ border chars │'
+echo -e '╰──────────────╯'
+
 echo
 echo "Ligatures:"
 echo "-<< -< -<- <-- <--- <<- <- -> ->> --> ---> ->- >- >>- <-> <--> <---> <----> <!--"

From 0d2461710bd8980f618cd8b5bf193bbb509df50c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 11 Jun 2024 13:02:23 +0200
Subject: [PATCH 300/656] test-term: add geometrical and arrow chars test

---
 bin/test-term.sh | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/bin/test-term.sh b/bin/test-term.sh
index 47f9a0f..91ae7e2 100755
--- a/bin/test-term.sh
+++ b/bin/test-term.sh
@@ -57,9 +57,23 @@ echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly u
 echo
 echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷 ❤️ "
 
+echo
+echo "Geometrical:"
+echo -e '◆ ◇ ◈ ● ○ ◉ ◎ ◍ ◌'
+echo -e '■ □ ▢ ▣ ▤ ▥ ▦ ▧ ▨ ▩'
+echo -e '◧ ◨ ◩ ◪ ◫ ◬ ◭ ◮ △ ▲ ▱ ▰ ▽ ▼ ▾ ▿'
+echo -e '◠ ◡ ◢ ◣ ◤ ◥ ◦ ◧ ◨ ◩ ◪ ◫ ◬ ◭ ◮ ◯ ◰ ◱ ◲ ◳ ◴ ◵ ◶ ◷ ◸ ◹ ◺ ◻ ◼ ◽ ◾ ◿'
+
+echo "Arrows:"
+echo -e '← → ↑ ↓ ↔ ↔ ↕ ↖ ↗ ↙ ↘ ↠ ↣ ↦ ↧ ↨ ↩ ↪ ↫ ↬ ↭ ↮ ↯ ↰ ↱ ↲ ↳ ↴ ↵ ↶ ↷ ↸ ↹ ↺ ↻ ↼ ↽ ↾ ↿ ↼ ↽ ↾ ↿'
+echo -e '⇄ ↔ ⇀ ⇂ ⇄ ⇆ ⇌ ⇎ ⇐ ⇑ ⇓ ⇕ ⇖ ⇗ ⇘ ⇙ ⇚ ⇛ ⇜ ⇝ ⇞ ⇟'
+
 echo
 echo "Blocks:"
-echo -e '🮙\n🮙\n🮙'
+echo -e '🮙 ░ ▒ ▓ █ █ ▊ ▋ ▌ ▍ ▎ ▏'
+echo -e '🮙 ░ ▒ ▓ █ █ ▊ ▋ ▌ ▍ ▎ ▏'
+echo -e '🮙 ░ ▒ ▓ █ █ ▊ ▋ ▌ ▍ ▎ ▏'
+echo -e '▄ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █'
 echo
 echo -e '╭──────────────╮'
 echo -e '│ border chars │'

From d666c403dc1f11438010f79d762f891f66f93d40 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Mon, 10 Jun 2024 21:08:27 +0200
Subject: [PATCH 301/656] fish: remove color from c-/ jump fzf

---
 .config/fish/config.fish | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 856ce9f..cdfdf49 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -46,7 +46,7 @@ if status is-interactive
     end
 
     function jump
-        set _dir $(fre --sorted | fzf --no-sort --color=fg:248,bg+:16,fg+:49,pointer:49,border:49 --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.hjson $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
+        set _dir $(fre --sorted | fzf --no-sort --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.hjson $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
         [ -n "$_dir" ] && pushd $_dir >>/dev/null
         commandline -f repaint
     end

From f0e98b6b46e3d9adcb3291ac4c40f0b035e3cc53 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Tue, 11 Jun 2024 22:48:15 +0200
Subject: [PATCH 302/656] nvim: telescope tuning

---
 .config/nvim/lazyvim.json           |  6 +++---
 .config/nvim/lua/plugins/coding.lua | 18 +++++++++++++++---
 .config/nvim/lua/plugins/editor.lua | 12 ++++++++----
 .config/nvim/lua/plugins/extras.lua | 11 -----------
 .config/nvim/lua/plugins/ui.lua     | 14 +++++---------
 5 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json
index ee1c524..05f524f 100644
--- a/.config/nvim/lazyvim.json
+++ b/.config/nvim/lazyvim.json
@@ -1,6 +1,5 @@
 {
   "extras": [
-    "lazyvim.plugins.extras.coding.codeium",
     "lazyvim.plugins.extras.dap.core",
     "lazyvim.plugins.extras.formatting.prettier",
     "lazyvim.plugins.extras.lang.go",
@@ -15,10 +14,11 @@
     "lazyvim.plugins.extras.test.core",
     "lazyvim.plugins.extras.ui.edgy",
     "lazyvim.plugins.extras.ui.treesitter-context",
-    "lazyvim.plugins.extras.util.gitui"
+    "lazyvim.plugins.extras.util.gitui",
+    "lazyvim.plugins.extras.util.project"
   ],
   "news": {
-    "NEWS.md": "5950"
+    "NEWS.md": "6077"
   },
   "version": 6
 }
\ No newline at end of file
diff --git a/.config/nvim/lua/plugins/coding.lua b/.config/nvim/lua/plugins/coding.lua
index aee499e..b2af23a 100644
--- a/.config/nvim/lua/plugins/coding.lua
+++ b/.config/nvim/lua/plugins/coding.lua
@@ -13,9 +13,9 @@ return {
 			table.insert(opts.sources, { name = "emoji" })
 
 			opts.view = { docs = { auto_open = false }, entries = { follow_cursor = true } }
-			-- opts.completion = {
-			-- 	autocomplete = false,
-			-- }
+			opts.completion = {
+				autocomplete = false,
+			}
 
 			local winhighlight =
 				"Normal:NoiceCmdlinePopupTitle,FloatBorder:NoiceCmdlinePopupBorder,CursorLine:PMenuSel,Search:Search"
@@ -54,4 +54,16 @@ return {
 			enable_chat = false,
 		},
 	},
+
+	{
+		"monkoose/neocodeium",
+		event = "VeryLazy",
+		config = function()
+			local neocodeium = require("neocodeium")
+			neocodeium.setup()
+			vim.keymap.set("i", "<C-j>", neocodeium.accept)
+			vim.keymap.set("i", "<A-f>", neocodeium.accept)
+			vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete)
+		end,
+	},
 }
diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index 691d9a1..3516f5a 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -43,7 +43,7 @@ return {
 					horizontal = {
 						prompt_position = "top",
 						mirror = false,
-						preview_width = 0.4,
+						preview_width = 0.49,
 						-- preview_height = 0.5,
 					},
 					width = 0.9,
@@ -57,10 +57,10 @@ return {
 						["<C-w>"] = false, -- <C-u> clear prompt
 					},
 				},
-				path_display = { "filename_first" },
-				previewer = false,
+				-- path_display = { "filename_first" },
+				-- previewer = false,
 				preview = {
-					hide_on_startup = true,
+					-- hide_on_startup = true,
 				},
 				sorting_strategy = "ascending",
 				winblend = 0,
@@ -68,4 +68,8 @@ return {
 			}
 		end,
 	},
+
+	{
+		"natecraddock/telescope-zf-native.nvim",
+	},
 }
diff --git a/.config/nvim/lua/plugins/extras.lua b/.config/nvim/lua/plugins/extras.lua
index 8dd86c5..79d1a52 100644
--- a/.config/nvim/lua/plugins/extras.lua
+++ b/.config/nvim/lua/plugins/extras.lua
@@ -96,15 +96,4 @@ return {
 			},
 		},
 	},
-
-	{
-		"monkoose/neocodeium",
-		event = "VeryLazy",
-		config = function()
-			local neocodeium = require("neocodeium")
-			neocodeium.setup()
-			vim.keymap.set("i", "<C-j>", neocodeium.accept)
-			vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete)
-		end,
-	},
 }
diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua
index b9eb9c2..fd5b977 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/.config/nvim/lua/plugins/ui.lua
@@ -31,6 +31,7 @@ return {
 			max_width = 50,
 			max_height = 20,
 			show_borders = true,
+			toggle_event = { "InsertEnter", "InsertLeave" },
 		},
 	},
 
@@ -117,14 +118,9 @@ return {
 	},
 
 	{
-		"linrongbin16/fzfx.nvim",
-		dependencies = { "nvim-tree/nvim-web-devicons", "junegunn/fzf" },
-
-		-- specify version to avoid break changes
-		version = "v5.*",
-
-		config = function()
-			require("fzfx").setup()
-		end,
+		"ahmedkhalf/project.nvim",
+		opts = {
+			manual_mode = false,
+		},
 	},
 }

From b28004c1684e9a2a57079fe0853acd484e55fceb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <daniel@arity.se>
Date: Wed, 12 Jun 2024 19:23:48 +0200
Subject: [PATCH 303/656] nvim: disable telescope-zf-native for now

---
 .config/nvim/lua/plugins/editor.lua | 138 ++++++++++++++--------------
 1 file changed, 67 insertions(+), 71 deletions(-)

diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
index 3516f5a..1185b23 100644
--- a/.config/nvim/lua/plugins/editor.lua
+++ b/.config/nvim/lua/plugins/editor.lua
@@ -1,75 +1,71 @@
 return {
-	{
-		"folke/flash.nvim",
-		enabled = false,
-	},
+  {
+    "folke/flash.nvim",
+    enabled = false,
+  },
 
-	{
-		"danielfalk/smart-open.nvim",
-		branch = "0.2.x",
-		dependencies = {
-			"kkharji/sqlite.lua",
-			{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
-			{ "nvim-telescope/telescope-fzy-native.nvim" },
-		},
-		config = function()
-			local util = require("lazyvim.util")
-			util.on_load("telescope.nvim", function()
-				local telescope = require("telescope")
-				telescope.load_extension("smart_open")
-			end)
-		end,
-	},
+  {
+    "danielfalk/smart-open.nvim",
+    branch = "0.2.x",
+    dependencies = {
+      "kkharji/sqlite.lua",
+      { "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
+      { "nvim-telescope/telescope-fzy-native.nvim" },
+    },
+    config = function()
+      local util = require("lazyvim.util")
+      util.on_load("telescope.nvim", function()
+        local telescope = require("telescope")
+        telescope.load_extension("smart_open")
+      end)
+    end,
+  },
 
-	{
-		"telescope.nvim",
-		keys = {
-			{
-				"<leader><leader>",
-				function()
-					require("telescope").extensions.smart_open.smart_open({
-						filename_first = false,
-					})
-				end,
-				desc = "Telescope smart open",
-			},
-		},
-		opts = function(_, opts)
-			local actions = require("telescope.actions")
-			opts.defaults = {
-				layout_strategy = "horizontal",
-				layout_config = {
-					anchor = "top",
-					horizontal = {
-						prompt_position = "top",
-						mirror = false,
-						preview_width = 0.49,
-						-- preview_height = 0.5,
-					},
-					width = 0.9,
-					height = 0.9,
-					preview_cutoff = 10,
-				},
-				mappings = {
-					i = {
-						["<esc>"] = actions.close, -- <Esc> close popup
-						["<C-u>"] = false, -- <C-u> clear prompt
-						["<C-w>"] = false, -- <C-u> clear prompt
-					},
-				},
-				-- path_display = { "filename_first" },
-				-- previewer = false,
-				preview = {
-					-- hide_on_startup = true,
-				},
-				sorting_strategy = "ascending",
-				winblend = 0,
-				wrap_results = true,
-			}
-		end,
-	},
-
-	{
-		"natecraddock/telescope-zf-native.nvim",
-	},
+  {
+    "telescope.nvim",
+    keys = {
+      {
+        "<leader><leader>",
+        function()
+          require("telescope").extensions.smart_open.smart_open({
+            filename_first = false,
+          })
+        end,
+        desc = "Telescope smart open",
+      },
+    },
+    opts = function(_, opts)
+      local actions = require("telescope.actions")
+      opts.defaults = {
+        layout_strategy = "horizontal",
+        layout_config = {
+          anchor = "top",
+          horizontal = {
+            prompt_position = "top",
+            mirror = false,
+            preview_width = 0.49,
+            -- preview_height = 0.5,
+          },
+          width = 0.9,
+          height = 0.9,
+          preview_cutoff = 10,
+        },
+        mappings = {
+          i = {
+            ["<esc>"] = actions.close, -- <Esc> close popup
+            ["<C-u>"] = false,         -- <C-u> clear prompt
+            ["<C-w>"] = false,         -- <C-u> clear prompt
+          },
+        },
+        -- path_display = { "filename_first" },
+        -- previewer = false,
+        preview = {
+          -- hide_on_startup = true,
+        },
+        sorting_strategy = "ascending",
+        winblend = 0,
+        wrap_results = true,
+      }
+    end,
+  },
 }

From 0b14d0b9b02c6a1553be7ebdc73b072792351bcc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 15 Jun 2024 18:14:39 +0200
Subject: [PATCH 304/656] wezterm: more accurate font hinting+rendering

---
 .config/wezterm/wezterm.lua | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index eee7cfc..8be9660 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -103,7 +103,7 @@ local function colors_for_appearance(appearance)
 	else
 		return {
 			background = "#fefeff",
-			foreground = "#000000",
+			foreground = "#333333",
 			cursor_bg = "#aa0000",
 			cursor_fg = "#ffffff",
 			cursor_border = "#ffffff",
@@ -154,17 +154,12 @@ config.font_rules = {
 	},
 }
 
-config.font_size = 14
+config.font_size = 15
 -- config.font_size = 18
 config.warn_about_missing_glyphs = false
 config.bold_brightens_ansi_colors = false
 config.unicode_version = 14
--- config.freetype_load_flags = "DEFAULT"
---
--- config.front_end = "OpenGL"
-config.freetype_load_flags = "NO_HINTING"
-config.freetype_load_target = "Light"
-config.freetype_render_target = "HorizontalLcd"
+config.freetype_load_target = "HorizontalLcd"
 
 config.custom_block_glyphs = false
 config.allow_square_glyphs_to_overflow_width = "Always"

From df96ee6bc57ee6cb955a31607c108c43a8adb930 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 17 Jun 2024 20:15:26 +0200
Subject: [PATCH 305/656] wezterm: set exact font size based on dpi

---
 .config/wezterm/wezterm.lua | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 8be9660..582baf4 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -154,8 +154,18 @@ config.font_rules = {
 	},
 }
 
-config.font_size = 15
--- config.font_size = 18
+wezterm.on('window-config-reloaded', function(window, pane)
+  local overrides = window:get_config_overrides() or {}
+  local dpi = wezterm.gui.screens().active.effective_dpi
+
+  if dpi > 96 then
+    overrides.font_size = 15
+  else
+    overrides.font_size = 18
+  end
+  window:set_config_overrides(overrides)
+end)
+
 config.warn_about_missing_glyphs = false
 config.bold_brightens_ansi_colors = false
 config.unicode_version = 14

From 82ed7f551efd9f096d32aae1656c63b1ea8d0d6a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 18 Jun 2024 13:47:23 +0200
Subject: [PATCH 306/656] k9s: use colorless skin

---
 .config/k9s/config.yaml     |  42 +++++++++++++++
 .config/k9s/skin.yml        | 100 ------------------------------------
 .config/k9s/skins/kiss.yaml |  75 +++++++++++++++++++++++++++
 3 files changed, 117 insertions(+), 100 deletions(-)
 create mode 100644 .config/k9s/config.yaml
 delete mode 100644 .config/k9s/skin.yml
 create mode 100644 .config/k9s/skins/kiss.yaml

diff --git a/.config/k9s/config.yaml b/.config/k9s/config.yaml
new file mode 100644
index 0000000..c7e9d37
--- /dev/null
+++ b/.config/k9s/config.yaml
@@ -0,0 +1,42 @@
+k9s:
+  liveViewAutoRefresh: false
+  screenDumpDir: /home/dln/.local/state/k9s/screen-dumps
+  refreshRate: 2
+  maxConnRetry: 5
+  readOnly: false
+  noExitOnCtrlC: false
+  ui:
+    enableMouse: false
+    headless: false
+    logoless: false
+    crumbsless: false
+    reactive: false
+    noIcons: false
+    defaultsToFullScreen: false
+    skin: kiss
+  skipLatestRevCheck: false
+  disablePodCounting: false
+  shellPod:
+    image: busybox:1.35.0
+    namespace: default
+    limits:
+      cpu: 100m
+      memory: 100Mi
+  imageScans:
+    enable: false
+    exclusions:
+      namespaces: []
+      labels: {}
+  logger:
+    tail: 100
+    buffer: 5000
+    sinceSeconds: -1
+    textWrap: false
+    showTime: false
+  thresholds:
+    cpu:
+      critical: 90
+      warn: 70
+    memory:
+      critical: 90
+      warn: 70
diff --git a/.config/k9s/skin.yml b/.config/k9s/skin.yml
deleted file mode 100644
index 81ecb20..0000000
--- a/.config/k9s/skin.yml
+++ /dev/null
@@ -1,100 +0,0 @@
-# K9s Gruvbox Light Skin Contributed by [@indiebrain](https://github.com/indiebrain)
-foreground: &foreground default
-background: &background default
-current_line: &current_line "#ebdbb2"
-selection: &selection "#3c3735"
-comment: &comment "#bdad93"
-cyan: &cyan "#78ad79"
-green: &green "#989719"
-orange: &orange "#d79920"
-magenta: &magenta "#b16185"
-blue: &blue "#448488"
-red: &red "#cc231c"
-
-k9s:
-  body:
-    fgColor: *foreground
-    bgColor: *background
-    logoColor: *blue
-  prompt:
-    fgColor: *foreground
-    bgColor: *background
-    suggestColor: *orange
-  info:
-    fgColor: *magenta
-    sectionColor: *foreground
-  help:
-    fgColor: *foreground
-    bgColor: *background
-    keyColor: *magenta
-    numKeyColor: *blue
-    sectionColor: *green
-  dialog:
-    fgColor: *foreground
-    bgColor: *background
-    buttonFgColor: *foreground
-    buttonBgColor: *magenta
-    buttonFocusFgColor: white
-    buttonFocusBgColor: *cyan
-    labelFgColor: *orange
-    fieldFgColor: *foreground
-  frame:
-    border:
-      fgColor: *selection
-      focusColor: *current_line
-    menu:
-      fgColor: *foreground
-      keyColor: *magenta
-      numKeyColor: *magenta
-    crumbs:
-      fgColor: *foreground
-      bgColor: *comment
-      activeColor: *blue
-    status:
-      newColor: *cyan
-      modifyColor: *blue
-      addColor: *green
-      errorColor: *red
-      highlightColor: *orange
-      killColor: *comment
-      completedColor: *comment
-    title:
-      fgColor: *foreground
-      bgColor: *background
-      highlightColor: *orange
-      counterColor: *blue
-      filterColor: *magenta
-  views:
-    charts:
-      bgColor: background
-      defaultDialColors:
-        - *blue
-        - *red
-      defaultChartColors:
-        - *blue
-        - *red
-    table:
-      fgColor: *foreground
-      bgColor: *background
-      cursorFgColor: *foreground
-      cursorBgColor: *current_line
-      header:
-        fgColor: *foreground
-        bgColor: *background
-        sorterColor: *selection
-    xray:
-      fgColor: *foreground
-      bgColor: *background
-      cursorColor: *current_line
-      graphicColor: *blue
-      showIcons: false
-    yaml:
-      keyColor: *magenta
-      colonColor: *blue
-      valueColor: *foreground
-    logs:
-      fgColor: *foreground
-      bgColor: *background
-      indicator:
-        fgColor: *foreground
-        bgColor: *background
diff --git a/.config/k9s/skins/kiss.yaml b/.config/k9s/skins/kiss.yaml
new file mode 100644
index 0000000..f8ba7a7
--- /dev/null
+++ b/.config/k9s/skins/kiss.yaml
@@ -0,0 +1,75 @@
+# -----------------------------------------------------------------------------
+# K9s Kiss Skin
+# Author: [@beejeebus](justin.p.randell@gmail.com)
+# -----------------------------------------------------------------------------
+
+# Skin...
+k9s:
+  body:
+    fgColor: default
+    bgColor: default
+    logoColor: default
+  prompt:
+    fgColor: default
+    bgColor: default
+    suggestColor: default
+  info:
+    fgColor: default
+    sectionColor: default
+  dialog:
+    fgColor: default
+    bgColor: default
+    buttonFgColor: default
+    buttonBgColor: default
+    buttonFocusFgColor: default
+    buttonFocusBgColor: default
+    labelFgColor: default
+    fieldFgColor: default
+  frame:
+    border:
+      fgColor: default
+      focusColor: default
+    menu:
+      fgColor: default
+      keyColor: default
+      numKeyColor: default
+    crumbs:
+      fgColor: default
+      bgColor: default
+      activeColor: default
+    status:
+      newColor: default
+      modifyColor: default
+      addColor: default
+      errorColor: default
+      highlightColor: default
+      killColor: default
+      completedColor: default
+    title:
+      fgColor: default
+      bgColor: default
+      highlightColor: default
+      counterColor: default
+      filterColor: default
+  views:
+    table:
+      fgColor: default
+      bgColor: default
+      cursorFgColor: default
+      cursorBfColor: default
+      header:
+        fgColor: default
+        bgColor: default
+        sorterColor: default
+    yaml:
+      keyColor: default
+      colonColor: default
+      valueColor: default
+    logs:
+      fgColor: default
+      bgColor: default
+      indicator:
+        fgColor: default
+        bgColor: default
+        toggleOnColor: default
+        toggleOffColor: default

From ff0ac00c6f75602febfdc02dcec1b2be151b96f9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 18 Jun 2024 22:49:55 +0200
Subject: [PATCH 307/656] k9s: color tweaks

---
 .config/k9s/config.yaml                      | 10 ++++-----
 .config/k9s/skins/{kiss.yaml => dieter.yaml} | 23 ++++++++++----------
 2 files changed, 17 insertions(+), 16 deletions(-)
 rename .config/k9s/skins/{kiss.yaml => dieter.yaml} (76%)

diff --git a/.config/k9s/config.yaml b/.config/k9s/config.yaml
index c7e9d37..f80e58d 100644
--- a/.config/k9s/config.yaml
+++ b/.config/k9s/config.yaml
@@ -7,13 +7,13 @@ k9s:
   noExitOnCtrlC: false
   ui:
     enableMouse: false
-    headless: false
-    logoless: false
-    crumbsless: false
+    headless: true
+    logoless: true
+    crumbsless: true
     reactive: false
     noIcons: false
-    defaultsToFullScreen: false
-    skin: kiss
+    defaultsToFullScreen: true
+    skin: dieter
   skipLatestRevCheck: false
   disablePodCounting: false
   shellPod:
diff --git a/.config/k9s/skins/kiss.yaml b/.config/k9s/skins/dieter.yaml
similarity index 76%
rename from .config/k9s/skins/kiss.yaml
rename to .config/k9s/skins/dieter.yaml
index f8ba7a7..46c9a99 100644
--- a/.config/k9s/skins/kiss.yaml
+++ b/.config/k9s/skins/dieter.yaml
@@ -1,9 +1,5 @@
-# -----------------------------------------------------------------------------
-# K9s Kiss Skin
-# Author: [@beejeebus](justin.p.randell@gmail.com)
-# -----------------------------------------------------------------------------
+# Dieter
 
-# Skin...
 k9s:
   body:
     fgColor: default
@@ -21,8 +17,8 @@ k9s:
     bgColor: default
     buttonFgColor: default
     buttonBgColor: default
-    buttonFocusFgColor: default
-    buttonFocusBgColor: default
+    buttonFocusFgColor: white
+    buttonFocusBgColor: darkblue
     labelFgColor: default
     fieldFgColor: default
   frame:
@@ -41,7 +37,7 @@ k9s:
       newColor: default
       modifyColor: default
       addColor: default
-      errorColor: default
+      errorColor: red
       highlightColor: default
       killColor: default
       completedColor: default
@@ -55,12 +51,17 @@ k9s:
     table:
       fgColor: default
       bgColor: default
-      cursorFgColor: default
-      cursorBfColor: default
+      cursorFgColor: teal
+      cursorBgColor: darkblue
       header:
         fgColor: default
         bgColor: default
-        sorterColor: default
+        sorterColor: blue
+    xray:
+      fgColor: default
+      bgColor: default
+      cursorColor: blue
+      graphicColor: blue
     yaml:
       keyColor: default
       colonColor: default

From 172034e7af012d6cf8e3735f791ff77792782c0e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 20 Jun 2024 12:31:02 +0200
Subject: [PATCH 308/656] ssh: add nemo config

---
 .ssh/config | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/.ssh/config b/.ssh/config
index 8914ace..50a9bcc 100644
--- a/.ssh/config
+++ b/.ssh/config
@@ -19,13 +19,17 @@ Hostname 10.1.100.16
 ForwardAgent yes
 ExitOnForwardFailure yes
 Compression no
-LocalForward localhost:3000 localhost:3000
+#RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.dln-dev.sock
+
+Host nemo
+Hostname 10.1.100.20
+ForwardAgent yes
+ExitOnForwardFailure yes
+Compression no
+RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.nemo.sock
+#LocalForward localhost:3000 localhost:3000
 LocalForward localhost:8000 localhost:8000
 LocalForward localhost:8080 localhost:8080
-LocalForward localhost:9090 localhost:9090
-LocalForward localhost:10000 localhost:10000
-RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.dln-dev.sock
-RemoteForward localhost:9022 localhost:9022
 
 Host *
 ForwardAgent no

From 69d897e7c309f11c0f07f7b5a686846b4c042214 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 20 Jun 2024 12:31:26 +0200
Subject: [PATCH 309/656] wezterm: add nemo exec domain

---
 .config/wezterm/wezterm.lua | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 582baf4..5ccaa47 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -19,6 +19,14 @@ config.exec_domains = {
 		cmd.args = wrapped
 		return cmd
 	end),
+	wezterm.exec_domain("nemo", function(cmd)
+		local wrapped = { "/usr/bin/ssh", "-t", "nemo" }
+		for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
+			table.insert(wrapped, arg)
+		end
+		cmd.args = wrapped
+		return cmd
+	end),
 }
 
 local function activate_nvim(window, pane)
@@ -177,7 +185,6 @@ config.allow_square_glyphs_to_overflow_width = "Always"
 
 -- Config
 config.enable_wayland = true
-config.term = "wezterm"
 config.check_for_updates = false
 
 -- UI

From 0e08bdacef8d0b2b3ffbe16b7c945f9154fc737b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 20 Jun 2024 12:31:55 +0200
Subject: [PATCH 310/656] wezterm: add nemo desktop shortcut

---
 .local/share/applications/wezterm-nemo.desktop | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 .local/share/applications/wezterm-nemo.desktop

diff --git a/.local/share/applications/wezterm-nemo.desktop b/.local/share/applications/wezterm-nemo.desktop
new file mode 100644
index 0000000..cc0a1d3
--- /dev/null
+++ b/.local/share/applications/wezterm-nemo.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=wezterm-nemo
+GenericName=wezterm-nemo
+StartupWMClass=org.wezfurlong.wezterm-nemo
+Type=Application
+TryExec=/usr/bin/wezterm
+Icon=org.wezfurlong.wezterm
+Terminal=false
+Categories=System;TerminalEmulator;
+Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-nemo --domain=nemo

From 6bf9bf1f4777a85d403437e16d485cc8fc4227b9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 21 Jun 2024 10:52:48 +0200
Subject: [PATCH 311/656] wezterm: fix scrolling and re-enable semantic prompt

---
 .config/fish/conf.d/semantic-prompt.fish | 57 ++++++++++++++++++++++++
 .config/wezterm/wezterm.lua              | 28 ++++++------
 2 files changed, 72 insertions(+), 13 deletions(-)
 create mode 100644 .config/fish/conf.d/semantic-prompt.fish

diff --git a/.config/fish/conf.d/semantic-prompt.fish b/.config/fish/conf.d/semantic-prompt.fish
new file mode 100644
index 0000000..296a561
--- /dev/null
+++ b/.config/fish/conf.d/semantic-prompt.fish
@@ -0,0 +1,57 @@
+#!/usr/bin/fish
+# SPDX-License-Identifier: CC0-1.0
+if status --is-interactive
+    set _fishprompt_aid "fish"$fish_pid
+    set _fishprompt_started 0
+    # empty if running; or a numeric exit code; or CANCEL
+    set _fishprompt_postexec ""
+
+    functions -c fish_prompt _fishprompt_saved_prompt
+    set _fishprompt_prompt_count 0
+    set _fishprompt_disp_count 0
+    function _fishprompt_start --on-event fish_prompt
+        set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1)
+        # don't use post-exec, because it is called *before* omitted-newline output
+        if [ -n "$_fishprompt_postexec" ]
+            printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid
+        end
+        printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid
+    end
+
+    function fish_prompt
+        set _fishprompt_disp_count (math $_fishprompt_disp_count + 1)
+        printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt))
+        set _fishprompt_started 1
+        set _fishprompt_postexec ""
+    end
+
+    function _fishprompt_preexec --on-event fish_preexec
+        if [ "$_fishprompt_started" = 1 ]
+            printf "\033]133;C;\007"
+        end
+        set _fishprompt_started 0
+    end
+
+    function _fishprompt_postexec --on-event fish_postexec
+        set _fishprompt_postexec $status
+        _fishprompt_start
+    end
+
+    function __fishprompt_cancel --on-event fish_cancel
+        set _fishprompt_postexec CANCEL
+        _fishprompt_start
+    end
+
+    function _fishprompt_exit --on-process %self
+        if [ "$_fishprompt_started" = 1 ]
+            printf "\033]133;Z;aid=%s\007" $_fishprompt_aid
+        end
+    end
+
+    if functions -q fish_right_prompt
+        functions -c fish_right_prompt _fishprompt_saved_right_prompt
+        function fish_right_prompt
+            printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt))
+        end
+    end
+end
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 5ccaa47..59a8129 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -162,16 +162,16 @@ config.font_rules = {
 	},
 }
 
-wezterm.on('window-config-reloaded', function(window, pane)
-  local overrides = window:get_config_overrides() or {}
-  local dpi = wezterm.gui.screens().active.effective_dpi
+wezterm.on("window-config-reloaded", function(window, pane)
+	local overrides = window:get_config_overrides() or {}
+	local dpi = wezterm.gui.screens().active.effective_dpi
 
-  if dpi > 96 then
-    overrides.font_size = 15
-  else
-    overrides.font_size = 18
-  end
-  window:set_config_overrides(overrides)
+	if dpi > 96 then
+		overrides.font_size = 14
+	else
+		overrides.font_size = 18
+	end
+	window:set_config_overrides(overrides)
 end)
 
 config.warn_about_missing_glyphs = false
@@ -250,6 +250,8 @@ config.keys = {
 	{ key = "0", mods = "CTRL", action = "ResetFontSize" },
 	{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
 	{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
+	{ key = "UpArrow", mods = "CTRL", action = act.ScrollToPrompt(-1) },
+	{ key = "DownArrow", mods = "CTRL", action = act.ScrollToPrompt(1) },
 	{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
 	{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
 	{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },
@@ -276,20 +278,20 @@ config.mouse_bindings = {
 	{
 		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
 		mods = "SHIFT",
-		action = act.ScrollByLine(-1),
+		action = act.ScrollByLine(-5),
 	},
 	{
 		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
 		mods = "SHIFT",
-		action = act.ScrollByLine(1),
+		action = act.ScrollByLine(5),
 	},
 	{
 		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-		action = act.ScrollByPage(-0.25),
+		action = act.ScrollByLine(-1),
 	},
 	{
 		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-		action = act.ScrollByPage(0.25),
+		action = act.ScrollByLine(1),
 	},
 }
 

From c46e0931c9a3c407664ae7d1d34bb8b401ba16e7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 21 Jun 2024 10:55:20 +0200
Subject: [PATCH 312/656] nvim: change eob character for berkeley mono

---
 .config/nvim/lua/config/options.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 23dd35f..7b694a6 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -27,7 +27,7 @@ vim.g.do_filetype_lua = 1
 vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
 
 vim.o.autochdir = true
-vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
+vim.o.fillchars = "stl: ,stlnc: ,eob:░"
 vim.o.list = false
 vim.o.scrolloff = 7
 vim.o.splitkeep = "screen"

From d22ce20dcfaefda1835a2d5be731bce76c78610b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 25 Jun 2024 19:47:40 +0200
Subject: [PATCH 313/656] broot: fixings

---
 .config/broot/conf.hjson                      | 236 +-----------------
 .../broot/skins/catppuccin-macchiato.hjson    | 171 -------------
 .config/broot/skins/catppuccin-mocha.hjson    | 171 -------------
 .config/broot/skins/dark-blue.hjson           | 116 ---------
 .config/broot/skins/dark-gruvbox.hjson        |  88 -------
 .config/broot/skins/dark-orange.hjson         | 111 --------
 .../skins/{white.hjson => dieter-light.hjson} |  12 +-
 .config/broot/skins/native-16.hjson           | 132 ----------
 .config/broot/skins/solarized-dark.hjson      |  66 -----
 .config/broot/skins/solarized-light.hjson     | 118 ---------
 .config/broot/verbs.hjson                     |  11 +-
 .config/fish/config.fish                      |   3 +-
 .config/wezterm/wezterm.lua                   |   2 +-
 .gitconfig                                    |   2 +-
 14 files changed, 28 insertions(+), 1211 deletions(-)
 delete mode 100644 .config/broot/skins/catppuccin-macchiato.hjson
 delete mode 100644 .config/broot/skins/catppuccin-mocha.hjson
 delete mode 100644 .config/broot/skins/dark-blue.hjson
 delete mode 100644 .config/broot/skins/dark-gruvbox.hjson
 delete mode 100644 .config/broot/skins/dark-orange.hjson
 rename .config/broot/skins/{white.hjson => dieter-light.hjson} (91%)
 delete mode 100644 .config/broot/skins/native-16.hjson
 delete mode 100644 .config/broot/skins/solarized-dark.hjson
 delete mode 100644 .config/broot/skins/solarized-light.hjson

diff --git a/.config/broot/conf.hjson b/.config/broot/conf.hjson
index 9e91548..c74318c 100644
--- a/.config/broot/conf.hjson
+++ b/.config/broot/conf.hjson
@@ -1,114 +1,7 @@
-###############################################################
-# This configuration file lets you
-# - define new commands
-# - change the shortcut or triggering keys of built-in verbs
-# - change the colors
-# - set default values for flags
-# - set special behaviors on specific paths
-# - and more...
-#
-# Configuration documentation is available at
-#     https://dystroy.org/broot
-#
-# This file's format is Hjson ( https://hjson.github.io/ ). Some
-# properties are commented out. To enable them, remove the `#`.
-#
-###############################################################
-
-###############################################################
-# Default flags
-# You can set up flags you want broot to start with by
-# default, for example `default_flags="-ihp"` if you usually want
-# to see hidden and gitignored files and the permissions (then
-# if you don't want the hidden files at a specific launch,
-# you can launch broot with `br -H`).
-# A popular flag is the `g` one which displays git related info.
-#
-# default_flags:
-
-###############################################################
-# Terminal's title
-# If you want the terminal's title to be updated when you change
-# directory, set a terminal_title pattern by uncommenting one of
-# the examples below and tuning it to your taste.
-#
-# terminal_title: "[broot] {git-name}"
-# terminal_title: "{file} 🐄"
-# terminal_title: "-= {file-name} =-"
-
-###############################################################
-# Date/Time format
-# If you want to change the format for date/time, uncomment the
-# following line and change it according to
-# https://docs.rs/chrono/0.4.11/chrono/format/strftime/index.html
-#
-# date_time_format: %Y/%m/%d %R
-
-###############################################################
-# uncomment to activate modal mode
-#
-# (you really should read https://dystroy.org/broot/modal/
-# before as it may not suit everybody even among vim users)
-#
-# You may start either in 'command' mode, or in 'input' mode
-#
-# modal: true
-# initial_mode: command
-
-###############################################################
-# Whether to mark the selected line with a triangle
-#
 show_selection_mark: true
-
-###############################################################
-# Column order
-# cols_order, if specified, must be a permutation of the following
-# array. You should keep the name column at the end as it has a
-# variable length.
-#
-# cols_order: [
-#     mark
-#     git
-#     size
-#     permission
-#     date
-#     count
-#     branch
-#     name
-# ]
-
-###############################################################
-# True Colors
-# If this parameter isn't set, broot tries to automatically
-# determine whether true colors (24 bits) are available.
-# As this process is unreliable, you may uncomment this setting
-# and set it to false or true if you notice the colors in
-# previewed images are too off.
-#
-# true_colors: false
-
-###############################################################
-# Icons
-# If you want to display icons in broot, uncomment this line
-# (see https://dystroy.org/broot/icons for installation and
-# troubleshooting)
-#
-# icon_theme: vscode
+true_colors: true
 icon_theme: nerdfont
 
-###############################################################
-# Special paths
-# If some paths must be handled specially, uncomment (and change
-# this section as per the examples)
-# Setting "list":"never" on a dir prevents broot from looking at its 
-#  children when searching, unless the dir is the selected root.
-# Setting "sum":"never" on a dir prevents broot from looking at its
-#  children when computing the total size and count of files.
-# Setting "show":"always" makes a file visible even if its name
-#  starts with a dot.
-# Setting "list":"always" may be useful on a link to a directory
-#  (they're otherwise not entered by broot unless selected)
-#
 special_paths: {
     "/media" : {
         list: "never"
@@ -124,137 +17,24 @@ special_paths: {
     # "~/my-link-I-want-to-explore": { "list": "always" }
 }
 
-###############################################################
-# Quit on last cancel
-# You can usually cancel the last state change on escape.
-# If you want the escape key to quit broot when there's nothing
-# to cancel (for example when you just opened broot), uncomment
-# this parameter
-# 
-# quit_on_last_cancel: true
-
 quit_on_last_cancel: true
-
-###############################################################
-# Search modes
-#
-# broot allows many search modes.
-# A search mode is defined by
-# - the way to search: 'fuzzy', 'exact', 'regex', or 'tokens'.
-# - where to search: file 'name', 'path', or file 'content'
-# A search pattern may for example be "fuzzy path" (default),
-# "regex content" or "exact path".
-#
-# The search mode is selected from its prefix. For example, if
-# you type "abc", the default mode is "fuzzy path". If you type
-# "/abc", the mode is "regex path". If you type "rn/abc", the mode
-# is "regex name".
-#
-# This mapping may be modified. You may want to dedicate the
-# empty prefix (the one which doesn't need a '/') to the
-# search mode you use most often. The example below makes it
-# easy to search on name rather than on the subpath.
-#
-# More information on
-#  https://dystroy.org/broot/input/#the-filtering-pattern
-#
-# search_modes: {
-#     <empty>: fuzzy name
-#     /: regex name
-# }
-
-###############################################################
-# File Extension Colors
-#
-# uncomment and modify the next section if you want to color
-# file name depending on their extension
-#
-# ext_colors: {
-#     png: rgb(255, 128, 75)
-#     rs: yellow
-# }
-
-###############################################################
-# Max file size for content search
-#
-# Bigger files are ignored when searching their content. You
-# can specify this size either in ISO units (eg 5GB) or in
-# the old binary units (eg 44Kib)
 content_search_max_file_size: 10MB
-
-###############################################################
-# Max Panels Count
-#
-# Change this if you sometimes want to have more than 2 panels
-# open
-# max_panels_count: 2
-
-###############################################################
-# Update work dir
-#
-# By default, broot process' work dir is kept in sync with the
-# current's panel root. If you want to keep it unchanged,
-# uncomment this setting
-#
-# update_work_dir: false
-
-###############################################################
-# Kitty Keyboard extension
-#
-# If you want to use advanced keyboard shortcuts in Kitty
-# compatible terminals (Kitty, Wezterm), set this to true.
-# 
-# This makes it possible to use shortcuts like 'space-n', 
-# 'ctrl-alt-a-b', 'shift-space', etc.
-#
 enable_kitty_keyboard: true
-
-###############################################################
-# lines around matching line in filtered preview
-#
-# When searching the content of a file, you can have either
-# only the matching lines displayed, or some of the surrounding
-# ones too.
-#
 lines_before_match_in_preview: 1
 lines_after_match_in_preview: 1
 
-###############################################################
-# Imports
-#
-# While it's possible to have all configuration in one file,
-# it's more convenient to split it in several ones.
-# Importing also allows to set a condition on the terminal's
-# color, which makes it possible to have a different skin 
-# chosen when your terminal has a light background and when
-# it has a light one.
 imports: [
-
-    # Verbs are better configured in verbs.hjson. But you
-    # can also add another files for your personal verbs
     verbs.hjson
 
-    # This file contains the skin to use when the terminal
-    # is dark (or when this couldn't be determined)
     {
-        luma: [
-            dark
-            unknown
-        ]
-        # (un)comment to choose your preferred skin
-        file: skins/dark-blue.hjson
-        //file: skins/catppuccin-macchiato.hjson
-        //file: skins/catppuccin-mocha.hjson
-        //file: skins/dark-gruvbox.hjson
-        //file: skins/dark-orange.hjson
-        //file: skins/solarized-dark.hjson
+        luma: dark
+        file: skins/dieter-dark.hjson
     }
-
-    # This skin is imported when your terminal is light
     {
-        luma: light
-        # (un)comment to choose your preferred skin
-        //file: skins/solarized-light.hjson
-        file: skins/white.hjson
+        luma: [ 
+          light 
+          unknown 
+        ]
+        file: skins/dieter-light.hjson
     }
 ]
diff --git a/.config/broot/skins/catppuccin-macchiato.hjson b/.config/broot/skins/catppuccin-macchiato.hjson
deleted file mode 100644
index 21a3bf1..0000000
--- a/.config/broot/skins/catppuccin-macchiato.hjson
+++ /dev/null
@@ -1,171 +0,0 @@
-###############################################################
-# A skin for a terminal with a dark background
-# This skin uses RGB values so won't work for some
-# terminals.
-#
-# Created by Majixed
-# Based on the catppuccin-mocha theme by A. Taha Baki <atahabaki@pm.me>
-#
-# Doc at https://dystroy.org/broot/skins/
-###############################################################
-
-skin: {
-    input: rgb(202, 211, 245) none
-    # fg:none bg:$surface2
-    selected_line: none rgb(91, 96, 120) 
-    # fg:$text bg:none
-    default: rgb(202, 211, 245) none
-    # fg:$overlay0 bg:none
-    tree: rgb(110, 115, 141) none
-    # fg:$sapphire bg:none
-    parent: rgb(125, 196, 228) none
-    file: none none
-#
-### PERMISSIONS
-#
-    perm__: rgb(184, 192, 224) none
-    # $peach
-    perm_r: rgb(245, 169, 127) none
-    # $maroon
-    perm_w: rgb(238, 153, 160) none
-    # $green
-    perm_x: rgb(166, 218, 149) none
-    # $teal
-    owner: rgb(139, 213, 202) none
-    # $sky
-    group: rgb(145, 215, 227) none
-#
-### DATE
-#
-    # $subtext1
-    dates: rgb(184, 192, 224) none
-#
-### DIRECTORY
-#
-    # $lavender
-    directory: rgb(183, 189, 248) none Bold
-    # $green
-    exe: rgb(166, 218, 149) none
-    # $yellow
-    link: rgb(238, 212, 159) none
-    # $subtext0
-    pruning: rgb(165, 173, 203) none Italic
-#
-### PREVIEW
-#
-    # fg:$text bg:$mantle
-    preview_title: rgb(202, 211, 245) rgb(30, 32, 48)
-    # fg:$text bg:$mantle
-    preview: rgb(202, 211, 245) rgb(30, 32, 48)
-    # fg:$overlay0
-    preview_line_number: rgb(110, 115, 141) none
-    # fg:$overlay0
-    preview_separator: rgb(110, 115, 141) none
-#
-### MATCH
-#
-    char_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
-    content_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
-    preview_match: rgb(238, 212, 159) rgb(73, 77, 100) Bold Italic
-
-    # children count
-    # fg:$yellow bg:none
-    count: rgb(238, 212, 159) none
-    sparse: rgb(237, 135, 150) none
-    content_extract: rgb(237, 135, 150) none Italic
-#
-### GIT
-#
-    git_branch: rgb(245, 169, 127) none
-    git_insertions: rgb(245, 169, 127) none
-    git_deletions: rgb(245, 169, 127) none
-    git_status_current: rgb(245, 169, 127) none
-    git_status_modified: rgb(245, 169, 127) none
-    git_status_new: rgb(245, 169, 127) none Bold
-    git_status_ignored: rgb(245, 169, 127) none
-    git_status_conflicted: rgb(245, 169, 127) none
-    git_status_other: rgb(245, 169, 127) none
-    staging_area_title: rgb(245, 169, 127) none
-#
-### FLAG
-#
-    flag_label: rgb(237, 135, 150) none
-    flag_value: rgb(237, 135, 150) none Bold
-#
-### STATUS
-#
-    # fg:none #bg:$mantle
-    status_normal: none rgb(30, 32, 48)
-    # fg:$red bg:$mantle
-    status_italic: rgb(237, 135, 150) rgb(30, 32, 48) Italic
-    # fg:$maroon bg:$mantle
-    status_bold: rgb(238, 153, 160) rgb(30, 32, 48) Bold
-    # fg:$maroon bg:$mantle
-    status_ellipsis: rgb(238, 153, 160) rgb(30, 32, 48) Bold
-    # fg:$text bg:$red
-    status_error: rgb(202, 211, 245) rgb(237, 135, 150)
-    # fg:$maroon bg:$mantle
-    status_job: rgb(238, 153, 160) rgb(40, 38, 37)
-    # fg:$maroon bg:$mantle
-    status_code: rgb(238, 153, 160) rgb(30, 32, 48) Italic
-    # fg:$maroon bg:$mantle
-    mode_command_mark: rgb(238, 153, 160) rgb(30, 32, 48) Bold
-#
-### HELP
-#
-    # fg:$text
-    help_paragraph: rgb(202, 211, 245) none
-    # fg:$red
-    help_headers: rgb(237, 135, 150) none Bold
-    # fg:$peach
-    help_bold: rgb(245, 169, 127) none Bold
-    # fg:$yellow
-    help_italic: rgb(238, 212, 159) none Italic
-    # fg:green bg:$surface0
-    help_code: rgb(166, 218, 149) rgb(54, 58, 79)
-    # fg:$overlay0
-    help_table_border: rgb(110, 115, 141) none
-#
-### HEX
-#
-    # fg:$text
-    hex_null: rgb(202, 211, 245) none
-    # fg:$peach
-    hex_ascii_graphic: rgb(245, 169, 127) none
-    # fg:$green
-    hex_ascii_whitespace: rgb(166, 218, 149) none
-    # fg: teal
-    hex_ascii_other: rgb(139, 213, 202) none
-    # fg: red
-    hex_non_ascii: rgb(237, 135, 150) none
-
-    # fg:$text bg:$red
-    file_error: rgb(243, 60, 44) none
-#
-### PURPOSE
-#
-    purpose_normal: none none
-    purpose_italic: rgb(169, 90, 127) none Italic
-    purpose_bold: rgb(169, 90, 127) none Bold
-    purpose_ellipsis: none none
-#
-### SCROLLBAR
-#
-    # fg:$surface0
-    scrollbar_track: rgb(54, 58, 79) none
-    # fg:$surface1
-    scrollbar_thumb: rgb(91, 96, 120) none
-#
-### GOODTOBAD
-#
-    good_to_bad_0: rgb(166, 218, 149) none
-    good_to_bad_1: rgb(139, 213, 202) none
-    good_to_bad_2: rgb(145, 215, 227) none
-    good_to_bad_3: rgb(125, 196, 228) none
-    good_to_bad_4: rgb(138, 173, 244) none
-    good_to_bad_5: rgb(183, 189, 248) none
-    good_to_bad_6: rgb(198, 160, 246) none
-    good_to_bad_7: rgb(245, 169, 127) none
-    good_to_bad_8: rgb(238, 153, 160) none
-    good_to_bad_9: rgb(237, 135, 150) none
-}
diff --git a/.config/broot/skins/catppuccin-mocha.hjson b/.config/broot/skins/catppuccin-mocha.hjson
deleted file mode 100644
index 6ac1b92..0000000
--- a/.config/broot/skins/catppuccin-mocha.hjson
+++ /dev/null
@@ -1,171 +0,0 @@
-###############################################################
-# A skin for a terminal with a dark background
-# This skin uses RGB values so won't work for some
-# terminals.
-#
-# Created by A. Taha Baki <atahabaki@pm.me>
-# Based on the built-in gruvbox theme.
-#
-# Doc at https://dystroy.org/broot/skins/
-###############################################################
-
-skin: {
-    input: rgb(205, 214, 244) none
-    # fg:none bg:$surface2
-    selected_line: none rgb(88, 91, 112) 
-    # fg:$text bg:none
-    default: rgb(205, 214, 244) none
-    # fg:$overlay0 bg:none
-    tree: rgb(108, 112, 134) none
-    # fg:$sapphire bg:none
-    parent: rgb(116, 199, 236) none
-    file: none none
-#
-### PERMISSIONS
-#
-    perm__: rgb(186, 194, 222) none
-    # $peach
-    perm_r: rgb(250, 179, 135) none
-    # $maroon
-    perm_w: rgb(235, 160, 172) none
-    # $green
-    perm_x: rgb(166, 227, 161) none
-    # $teal
-    owner: rgb(148, 226, 213) none
-    # $sky
-    group: rgb(137, 220, 235) none
-#
-### DATE
-#
-    # $subtext1
-    dates: rgb(186, 194, 222) none
-#
-### DIRECTORY
-#
-    # $lavender
-    directory: rgb(180, 190, 254) none Bold
-    # $green
-    exe: rgb(166, 227, 161) none
-    # $yellow
-    link: rgb(249, 226, 175) none
-    # $subtext0
-    pruning: rgb(166, 173, 200) none Italic
-#
-### PREVIEW
-#
-    # fg:$text bg:$mantle
-    preview_title: rgb(205, 214, 244) rgb(24, 24, 37)
-    # fg:$text bg:$mantle
-    preview: rgb(205, 214, 244) rgb(24, 24, 37)
-    # fg:$overlay0
-    preview_line_number: rgb(108, 112, 134) none
-    # fg:$overlay0
-    preview_separator: rgb(108, 112, 134) none
-#
-### MATCH
-#
-    char_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
-    content_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
-    preview_match: rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic
-
-    # children count
-    # fg:$yellow bg:none
-    count: rgb(249, 226, 175) none
-    sparse: rgb(243, 139, 168) none
-    content_extract: rgb(243, 139, 168) none Italic
-#
-### GIT
-#
-    git_branch: rgb(250, 179, 135) none
-    git_insertions: rgb(250, 179, 135) none
-    git_deletions: rgb(250, 179, 135) none
-    git_status_current: rgb(250, 179, 135) none
-    git_status_modified: rgb(250, 179, 135) none
-    git_status_new: rgb(250, 179, 135) none Bold
-    git_status_ignored: rgb(250, 179, 135) none
-    git_status_conflicted: rgb(250, 179, 135) none
-    git_status_other: rgb(250, 179, 135) none
-    staging_area_title: rgb(250, 179, 135) none
-#
-### FLAG
-#
-    flag_label: rgb(243, 139, 168) none
-    flag_value: rgb(243, 139, 168) none Bold
-#
-### STATUS
-#
-    # fg:none #bg:$mantle
-    status_normal: none rgb(24, 24, 37)
-    # fg:$red bg:$mantle
-    status_italic: rgb(243, 139, 168) rgb(24, 24, 37) Italic
-    # fg:$maroon bg:$mantle
-    status_bold: rgb(235, 160, 172) rgb(24, 24, 37) Bold
-    # fg:$maroon bg:$mantle
-    status_ellipsis: rgb(235, 160, 172) rgb(24, 24, 37) Bold
-    # fg:$text bg:$red
-    status_error: rgb(205, 214, 244) rgb(243, 139, 168)
-    # fg:$maroon bg:$mantle
-    status_job: rgb(235, 160, 172) rgb(40, 38, 37)
-    # fg:$maroon bg:$mantle
-    status_code: rgb(235, 160, 172) rgb(24, 24, 37) Italic
-    # fg:$maroon bg:$mantle
-    mode_command_mark: rgb(235, 160, 172) rgb(24, 24, 37) Bold
-#
-### HELP
-#
-    # fg:$text
-    help_paragraph: rgb(205, 214, 244) none
-    # fg:$red
-    help_headers: rgb(243, 139, 168) none Bold
-    # fg:$peach
-    help_bold: rgb(250, 179, 135) none Bold
-    # fg:$yellow
-    help_italic: rgb(249, 226, 175) none Italic
-    # fg:green bg:$surface0
-    help_code: rgb(166, 227, 161) rgb(49, 50, 68)
-    # fg:$overlay0
-    help_table_border: rgb(108, 112, 134) none
-#
-### HEX
-#
-    # fg:$text
-    hex_null: rgb(205, 214, 244) none
-    # fg:$peach
-    hex_ascii_graphic: rgb(250, 179, 135) none
-    # fg:$green
-    hex_ascii_whitespace: rgb(166, 227, 161) none
-    # fg: teal
-    hex_ascii_other: rgb(148, 226, 213) none
-    # fg: red
-    hex_non_ascii: rgb(243, 139, 168) none
-
-    # fg:$text bg:$red
-    file_error: rgb(251, 73, 52) none
-#
-### PURPOSE
-#
-    purpose_normal: none none
-    purpose_italic: rgb(177, 98, 134) none Italic
-    purpose_bold: rgb(177, 98, 134) none Bold
-    purpose_ellipsis: none none
-#
-### SCROLLBAR
-#
-    # fg:$surface0
-    scrollbar_track: rgb(49, 50, 68) none
-    # fg:$surface1
-    scrollbar_thumb: rgb(88, 91, 112) none
-#
-### GOODTOBAD
-#
-    good_to_bad_0: rgb(166, 227, 161) none
-    good_to_bad_1: rgb(148, 226, 213) none
-    good_to_bad_2: rgb(137, 220, 235) none
-    good_to_bad_3: rgb(116, 199, 236) none
-    good_to_bad_4: rgb(137, 180, 250) none
-    good_to_bad_5: rgb(180, 190, 254) none
-    good_to_bad_6: rgb(203, 166, 247) none
-    good_to_bad_7: rgb(250, 179, 135) none
-    good_to_bad_8: rgb(235, 160, 172) none
-    good_to_bad_9: rgb(243, 139, 168) none
-}
diff --git a/.config/broot/skins/dark-blue.hjson b/.config/broot/skins/dark-blue.hjson
deleted file mode 100644
index 7dbc7f4..0000000
--- a/.config/broot/skins/dark-blue.hjson
+++ /dev/null
@@ -1,116 +0,0 @@
-###############################################################
-# A skin for a terminal with a dark background
-#
-# To create your own skin, copy this file, change the entries
-# and import your skin file from the main conf file (look
-# for "imports")
-#
-# Doc at https://dystroy.org/broot/skins/
-###############################################################
-
-###############################################################
-# Skin
-# If you want to change the colors of broot,
-# uncomment the following block and start messing
-# with the various values.
-# A skin entry value is made of two parts separated with a '/':
-# The first one is the skin for the active panel.
-# The second one, optional, is the skin for non active panels.
-# You may find explanations and other skins on
-#  https://dystroy.org/broot/skins
-###############################################################
-skin: {
-    default: gray(22) none  / gray(20) none 
-    tree: gray(8) None  / gray(4) None 
-    parent: gray(18) None  / gray(13) None 
-    file: gray(22) None  / gray(15) None 
-    directory: ansi(110) None bold / ansi(110) None 
-    exe: Cyan None 
-    link: Magenta None 
-    pruning: gray(12) None Italic
-    perm__: gray(5) None 
-    perm_r: ansi(94) None 
-    perm_w: ansi(132) None 
-    perm_x: ansi(65) None 
-    owner: ansi(138) None 
-    group: ansi(131) None 
-    count: ansi(138) gray(4) 
-    dates: ansi(66) None 
-    sparse: ansi(214) None 
-    content_extract: ansi(29) None 
-    content_match: ansi(34) None 
-    device_id_major: ansi(138) None 
-    device_id_sep: ansi(102) None 
-    device_id_minor: ansi(138) None 
-    git_branch: ansi(178) None 
-    git_insertions: ansi(28) None 
-    git_deletions: ansi(160) None 
-    git_status_current: gray(5) None 
-    git_status_modified: ansi(28) None 
-    git_status_new: ansi(94) None bold
-    git_status_ignored: gray(17) None 
-    git_status_conflicted: ansi(88) None 
-    git_status_other: ansi(88) None 
-    selected_line: None gray(6)  / None gray(4) 
-    char_match: Green None 
-    file_error: Red None 
-    flag_label: gray(15) gray(2) 
-    flag_value: ansi(178) gray(2) bold
-    input: White gray(2)  / gray(15) None 
-    status_error: gray(22) ansi(124) 
-    status_job: ansi(220) gray(5) 
-    status_normal: gray(20) gray(4)  / gray(2) gray(2) 
-    status_italic: ansi(178) gray(4)  / gray(2) gray(2) 
-    status_bold: ansi(178) gray(4) bold / gray(2) gray(2) 
-    status_code: ansi(229) gray(4)  / gray(2) gray(2) 
-    status_ellipsis: gray(19) gray(1)  / gray(2) gray(2) 
-    purpose_normal: gray(20) gray(2) 
-    purpose_italic: ansi(178) gray(2) 
-    purpose_bold: ansi(178) gray(2) bold
-    purpose_ellipsis: gray(20) gray(2) 
-    scrollbar_track: gray(7) None  / gray(4) None 
-    scrollbar_thumb: gray(22) None  / gray(14) None 
-    help_paragraph: gray(20) None 
-    help_bold: ansi(178) None bold
-    help_italic: ansi(229) None 
-    help_code: gray(21) gray(3) 
-    help_headers: ansi(178) None 
-    help_table_border: ansi(239) None 
-    preview: gray(20) gray(1)  / gray(18) gray(2) 
-    preview_title: gray(23) gray(2)  / gray(21) gray(2) 
-    preview_line_number: gray(12) gray(3) 
-    preview_separator: gray(5) None
-    preview_match: None ansi(29) 
-    hex_null: gray(8) None 
-    hex_ascii_graphic: gray(18) None 
-    hex_ascii_whitespace: ansi(143) None 
-    hex_ascii_other: ansi(215) None 
-    hex_non_ascii: ansi(167) None 
-    staging_area_title: gray(22) gray(2)  / gray(20) gray(3) 
-    mode_command_mark: gray(5) ansi(204) bold
-    good_to_bad_0: ansi(28)
-    good_to_bad_1: ansi(29)
-    good_to_bad_2: ansi(29)
-    good_to_bad_3: ansi(29)
-    good_to_bad_4: ansi(29)
-    good_to_bad_5: ansi(100)
-    good_to_bad_6: ansi(136)
-    good_to_bad_7: ansi(172)
-    good_to_bad_8: ansi(166)
-    good_to_bad_9: ansi(196)
-}
-
-###############################################################
-# Syntax Theme
-# 
-# If you want to choose the theme used for preview, uncomment
-# one of the following lines:
-# 
-# syntax_theme: GitHub
-# syntax_theme: SolarizedDark
-# syntax_theme: SolarizedLight
-syntax_theme: MochaDark
-# syntax_theme: MochaDark
-# syntax_theme: OceanDark
-# syntax_theme: OceanLight
-
diff --git a/.config/broot/skins/dark-gruvbox.hjson b/.config/broot/skins/dark-gruvbox.hjson
deleted file mode 100644
index e62d583..0000000
--- a/.config/broot/skins/dark-gruvbox.hjson
+++ /dev/null
@@ -1,88 +0,0 @@
-###############################################################
-# A skin for a terminal with a dark background
-# This skin uses RGB values so won't work for some
-# terminals.
-#
-#
-# (initially contributed by @basbebe)
-#
-# Doc at https://dystroy.org/broot/skins/
-###############################################################
-
-skin: {
-    default: rgb(235, 219, 178) none / rgb(189, 174, 147) none
-    tree: rgb(70, 70, 80) None / rgb(60, 60, 60) None
-    parent: rgb(235, 219, 178) none / rgb(189, 174, 147) none Italic
-    file: None None / None  None Italic
-    directory: rgb(131, 165, 152) None Bold / rgb(131, 165, 152) None
-    exe: rgb(184, 187, 38) None
-    link: rgb(104, 157, 106) None
-    pruning: rgb(124, 111, 100) None Italic
-    perm__: None None
-    perm_r: rgb(215, 153, 33) None
-    perm_w: rgb(204, 36, 29) None
-    perm_x: rgb(152, 151, 26) None
-    owner: rgb(215, 153, 33) None Bold
-    group: rgb(215, 153, 33) None
-    count: rgb(69, 133, 136) rgb(50, 48, 47)
-    dates: rgb(168, 153, 132) None
-    sparse: rgb(250, 189,47) None
-    content_extract: ansi(29) None Italic
-    content_match: ansi(34) None Bold
-    git_branch: rgb(251, 241, 199) None
-    git_insertions: rgb(152, 151, 26) None
-    git_deletions: rgb(190, 15, 23) None
-    git_status_current: rgb(60, 56, 54) None
-    git_status_modified: rgb(152, 151, 26) None
-    git_status_new: rgb(104, 187, 38) None Bold
-    git_status_ignored: rgb(213, 196, 161) None
-    git_status_conflicted: rgb(204, 36, 29) None
-    git_status_other: rgb(204, 36, 29) None
-    selected_line: None rgb(60, 56, 54) / None rgb(50, 48, 47)
-    char_match: rgb(250, 189, 47) None
-    file_error: rgb(251, 73, 52) None
-    flag_label: rgb(189, 174, 147) None
-    flag_value: rgb(211, 134, 155) None Bold
-    input: rgb(251, 241, 199) None / rgb(189, 174, 147) None Italic
-    status_error: rgb(213, 196, 161) rgb(204, 36, 29)
-    status_job: rgb(250, 189, 47) rgb(60, 56, 54)
-    status_normal: None rgb(40, 38, 37) / None None
-    status_italic: rgb(211, 134, 155) rgb(40, 38, 37) Italic / None None
-    status_bold: rgb(211, 134, 155) rgb(40, 38, 37) Bold / None None
-    status_code: rgb(251, 241, 199) rgb(40, 38, 37) / None None
-    status_ellipsis: rgb(251, 241, 199) rgb(40, 38, 37)  Bold / None None
-    purpose_normal: None None
-    purpose_italic: rgb(177, 98, 134) None Italic
-    purpose_bold: rgb(177, 98, 134) None Bold
-    purpose_ellipsis: None None
-    scrollbar_track: rgb(80, 73, 69) None / rgb(50, 48, 47) None
-    scrollbar_thumb: rgb(213, 196, 161) None / rgb(102, 92, 84) None
-    help_paragraph: None None
-    help_bold: rgb(214, 93, 14) None Bold
-    help_italic: rgb(211, 134, 155) None Italic
-    help_code: rgb(142, 192, 124) rgb(50, 48, 47)
-    help_headers: rgb(254, 128, 25) None Bold
-    help_table_border: rgb(80, 73, 69) None
-    preview_title: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(189, 174, 147) rgb(40, 40, 40)
-    preview: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(235, 219, 178) rgb(40, 40, 40)
-    preview_line_number: rgb(124, 111, 100) None / rgb(124, 111, 100) rgb(40, 40, 40)
-    preview_separator: rgb(70, 70, 80) None / rgb(60, 60, 60) None
-    preview_match: None ansi(29) Bold
-    hex_null: rgb(189, 174, 147) None
-    hex_ascii_graphic: rgb(213, 196, 161) None
-    hex_ascii_whitespace: rgb(152, 151, 26) None
-    hex_ascii_other: rgb(254, 128, 25) None
-    hex_non_ascii: rgb(214, 93, 14) None
-    staging_area_title: rgb(235, 219, 178) rgb(40, 40, 40) / rgb(189, 174, 147) rgb(40, 40, 40)
-    mode_command_mark: gray(5) ansi(204) Bold
-    good_to_bad_0: ansi(28)
-    good_to_bad_1: ansi(29)
-    good_to_bad_2: ansi(29)
-    good_to_bad_3: ansi(29)
-    good_to_bad_4: ansi(29)
-    good_to_bad_5: ansi(100)
-    good_to_bad_6: ansi(136)
-    good_to_bad_7: ansi(172)
-    good_to_bad_8: ansi(166)
-    good_to_bad_9: ansi(196)
-}
diff --git a/.config/broot/skins/dark-orange.hjson b/.config/broot/skins/dark-orange.hjson
deleted file mode 100644
index 8e2f845..0000000
--- a/.config/broot/skins/dark-orange.hjson
+++ /dev/null
@@ -1,111 +0,0 @@
-###############################################################
-# A skin for a terminal with a dark background
-#
-# To create your own skin, copy this file, change the entries
-# and import your skin file from the main conf file (look
-# for "imports")
-#
-# Doc at https://dystroy.org/broot/skins/
-###############################################################
-
-###############################################################
-# Skin
-# If you want to change the colors of broot,
-# uncomment the following bloc and start messing
-# with the various values.
-# A skin entry value is made of two parts separated with a '/':
-# The first one is the skin for the active panel.
-# The second one, optional, is the skin for non active panels.
-# You may find explanations and other skins on
-#  https://dystroy.org/broot/skins
-###############################################################
-skin: {
-    default: none none / gray(20) none
-    tree: ansi(94) None / gray(3) None
-    parent: gray(18) None / gray(13) None
-    file: gray(20) None / gray(15) None
-    directory: ansi(208) None Bold / ansi(172) None bold
-    exe: Cyan None
-    link: Magenta None
-    pruning: gray(12) None Italic
-    perm__: gray(5) None
-    perm_r: ansi(94) None
-    perm_w: ansi(132) None
-    perm_x: ansi(65) None
-    owner: ansi(138) None
-    group: ansi(131) None
-    count: ansi(136) gray(3)
-    dates: ansi(66) None
-    sparse: ansi(214) None
-    content_extract: ansi(29) None
-    content_match: ansi(34) None
-    git_branch: ansi(229) None
-    git_insertions: ansi(28) None
-    git_deletions: ansi(160) None
-    git_status_current: gray(5) None
-    git_status_modified: ansi(28) None
-    git_status_new: ansi(94) None Bold
-    git_status_ignored: gray(17) None
-    git_status_conflicted: ansi(88) None
-    git_status_other: ansi(88) None
-    selected_line: None gray(5) / None gray(4)
-    char_match: Yellow None
-    file_error: Red None
-    flag_label: gray(15) None
-    flag_value: ansi(208) None Bold
-    input: White None / gray(15) gray(2)
-    status_error: gray(22) ansi(124)
-    status_job: ansi(220) gray(5)
-    status_normal: gray(20) gray(3) / gray(2) gray(2)
-    status_italic: ansi(208) gray(3) / gray(2) gray(2)
-    status_bold: ansi(208) gray(3) Bold / gray(2) gray(2)
-    status_code: ansi(229) gray(3) / gray(2) gray(2)
-    status_ellipsis: gray(19) gray(1) / gray(2) gray(2)
-    purpose_normal: gray(20) gray(2)
-    purpose_italic: ansi(178) gray(2)
-    purpose_bold: ansi(178) gray(2) Bold
-    purpose_ellipsis: gray(20) gray(2)
-    scrollbar_track: gray(7) None / gray(4) None
-    scrollbar_thumb: gray(22) None / gray(14) None
-    help_paragraph: gray(20) None
-    help_bold: ansi(208) None Bold
-    help_italic: ansi(166) None
-    help_code: gray(21) gray(3)
-    help_headers: ansi(208) None
-    help_table_border: ansi(239) None
-    preview: gray(20) gray(1) / gray(18) gray(2)
-    preview_line_number: gray(12) gray(3)
-    preview_separator: ansi(94) None / gray(3) None
-    preview_match: None ansi(29)
-    hex_null: gray(11) None
-    hex_ascii_graphic: gray(18) None
-    hex_ascii_whitespace: ansi(143) None
-    hex_ascii_other: ansi(215) None
-    hex_non_ascii: ansi(167) None
-    good_to_bad_0: ansi(28)
-    good_to_bad_1: ansi(29)
-    good_to_bad_2: ansi(29)
-    good_to_bad_3: ansi(29)
-    good_to_bad_4: ansi(29)
-    good_to_bad_5: ansi(100)
-    good_to_bad_6: ansi(136)
-    good_to_bad_7: ansi(172)
-    good_to_bad_8: ansi(166)
-    good_to_bad_9: ansi(196)
-}
-
-
-###############################################################
-# Syntax Theme
-# 
-# If you want to choose the theme used for preview, uncomment
-# one of the following lines:
-# 
-# syntax_theme: GitHub
-# syntax_theme: SolarizedDark
-# syntax_theme: SolarizedLight
-syntax_theme: SolarizedDark
-# syntax_theme: MochaDark
-# syntax_theme: OceanDark
-# syntax_theme: OceanLight
-
diff --git a/.config/broot/skins/white.hjson b/.config/broot/skins/dieter-light.hjson
similarity index 91%
rename from .config/broot/skins/white.hjson
rename to .config/broot/skins/dieter-light.hjson
index 908e648..ad61918 100644
--- a/.config/broot/skins/white.hjson
+++ b/.config/broot/skins/dieter-light.hjson
@@ -10,10 +10,10 @@
 syntax_theme: base16-ocean.light
 
 skin: {
-	default: gray(1) None
-	tree: gray(7) None / gray(18) None
-	file: gray(3) None / gray(8) None
-	directory: ansi(25) None Bold / ansi(25) None
+	default: gray(0) None
+	tree: gray(20) None / gray(18) None
+	file: gray(1) None / gray(8) None
+	directory: gray(4) None Bold / ansi(4) None
 	exe: ansi(130) None
 	link: Magenta None
 	pruning: gray(12) None Italic
@@ -34,8 +34,8 @@ skin: {
 	git_status_ignored: gray(17) None
 	git_status_conflicted: ansi(88) None
 	git_status_other: ansi(88) None
-	selected_line: None gray(19) / None gray(21)
-	char_match: ansi(22) None
+  selected_line: None gray(20)
+	char_match: None ansi(226)
 	file_error: Red None
 	flag_label: gray(9) None
 	flag_value: ansi(166) None Bold
diff --git a/.config/broot/skins/native-16.hjson b/.config/broot/skins/native-16.hjson
deleted file mode 100644
index a220c10..0000000
--- a/.config/broot/skins/native-16.hjson
+++ /dev/null
@@ -1,132 +0,0 @@
-###############################################################
-# 16 ANSI color theme. Colors in this theme are restricted from
-# ANSI color 0 - 15. This will allow the theme to adapt to your
-# terminal emulator's theme. Note that, for now, the preview
-# mode does not yet support this theme because of syntect not
-# having a 16 ansi color theme.
-#
-# More info at https://jeffkreeftmeijer.com/vim-16-color/
-# Doc at https://dystroy.org/broot/skins/
-###############################################################
-
-skin: {
-    directory: ansi(12)
-    file: ansi(7)
-    pruning: ansi(8) none italic
-    selected_line: none ansi(0)
-    tree: ansi(8)
-
-    # Search
-    char_match: ansi(3) none underlined
-    parent: ansi(4) none bold
-
-    # File properties
-    exe: ansi(2)
-    link: ansi(13)
-    sparse: ansi(12)
-
-    # Prompt
-    input: ansi(6)
-
-    # Status bar
-    status_bold: ansi(7) ansi(8) bold
-    status_code: ansi(10) ansi(8)
-    status_ellipsis: ansi(7) ansi(8)
-    status_error: ansi(7) ansi(8)
-    status_italic: ansi(7) ansi(8) italic
-    status_job: ansi(7) ansi(8)
-    status_normal: ansi(7) ansi(8)
-
-    # Flag status
-    flag_label: ansi(6)
-    flag_value: ansi(14) none bold
-
-    # Background
-    default: none none
-
-    # Scrollbar
-    scrollbar_track: ansi(0)
-    scrollbar_thumb: ansi(3)
-
-    # Git
-    git_branch: ansi(13)
-    git_deletions: ansi(1)
-    git_insertions: ansi(2)
-    git_status_conflicted: ansi(1)
-    git_status_current: ansi(6)
-    git_status_ignored: ansi(8)
-    git_status_modified: ansi(3)
-    git_status_new: ansi(2) none bold
-    git_status_other: ansi(5)
-
-    # Staging area
-    staging_area_title: ansi(3)
-
-    # Documentation
-    help_bold: ansi(7) none bold
-    help_code: ansi(4)
-    help_headers: ansi(3)
-    help_italic: ansi(7) none italic
-    help_paragraph: ansi(7)
-    help_table_border: ansi(8)
-
-    # Device column
-    device_id_major: ansi(5)
-    device_id_minor: ansi(5)
-    device_id_sep: ansi(5)
-
-    # Counts column
-    count: ansi(13)
-
-    # Dates column
-    dates: ansi(6)
-
-    # Permissions column
-    group: ansi(3)
-    owner: ansi(3)
-    perm__: ansi(8)
-    perm_r: ansi(3)
-    perm_w: ansi(1)
-    perm_x: ansi(2)
-
-    # Hex preview
-    hex_null: ansi(8)
-    hex_ascii_graphic: ansi(2)
-    hex_ascii_whitespace: ansi(3)
-    hex_ascii_other: ansi(4)
-    hex_non_ascii: ansi(5)
-
-    # Preview
-    # preview: none
-    # preview_line_number: none
-    # preview_match: none
-    # preview_title: none
-
-    # Used for displaying errors
-    file_error: ansi(1)
-
-    # Content searches
-    content_extract: ansi(7)
-    content_match: ansi(3) none underlined
-
-    # Used in status line
-    purpose_bold: ansi(0) ansi(7) bold
-    purpose_ellipsis: ansi(0)
-    purpose_italic: ansi(0) ansi(7) italic
-    purpose_normal: ansi(0)
-
-    # Modal indicator
-    mode_command_mark: ansi(7) ansi(4)
-
-    # File system occupation
-    good_to_bad_0: ansi(2)
-    good_to_bad_1: ansi(2)
-    good_to_bad_2: ansi(2)
-    good_to_bad_3: ansi(2)
-    good_to_bad_4: ansi(2)
-    good_to_bad_5: ansi(1)
-    good_to_bad_6: ansi(1)
-    good_to_bad_7: ansi(1)
-    good_to_bad_8: ansi(1)
-    good_to_bad_9: ansi(1)
-}
diff --git a/.config/broot/skins/solarized-dark.hjson b/.config/broot/skins/solarized-dark.hjson
deleted file mode 100644
index fdea579..0000000
--- a/.config/broot/skins/solarized-dark.hjson
+++ /dev/null
@@ -1,66 +0,0 @@
-// contributed by [@danieltrautmann](https://github.com/danieltrautmann)
-// 
-// 
-// The Solarized Dark skin uses RGB values, so it might not work well with some
-// terminals
-//
-// Doc at https://dystroy.org/broot/skins/
-
-skin: {
-	default: "rgb(131, 148, 150) rgb(0, 43, 54) / rgb(131, 148, 150) rgb(7, 54, 66)"  // base0 base03 / base01 base02
-	tree: "rgb(88, 110, 117) none"                                                    // base01 default
-	file: "none none"                                                                 // default default
-	directory: "rgb(38, 139, 210) none bold"                                          // blue default bold
-	exe: "rgb(211, 1, 2) none"                                                        // red default
-	link: "rgb(211, 54, 130) none"                                                    // magenta default
-	pruning: "rgb(88, 110, 117) none italic"                                          // base01 default italic
-	perm__: "rgb(88, 110, 117) none"                                                  // base01 default
-	perm_r: "none none"                                                               // default default
-	perm_w: "none none"                                                               // default default
-	perm_x: "none none"                                                               // default default
-	owner: "rgb(88, 110, 117) none"                                                   // base01 default
-	group: "rgb(88, 110, 117) none"                                                   // base01 default
-	sparse: "none none"                                                               // default default
-	git_branch: "rgb(147, 161, 161) none"                                             // base1 default
-	git_insertions: "rgb(133, 153, 0) none"                                           // green default
-	git_deletions: "rgb(211, 1, 2) none"                                              // red default
-	git_status_current: "none none"                                                   // default default
-	git_status_modified: "rgb(181, 137, 0) none"                                      // yellow default
-	git_status_new: "rgb(133, 153, 0) none"                                           // green default
-	git_status_ignored: "rgb(88, 110, 117) none"                                      // base01 default
-	git_status_conflicted: "rgb(211, 1, 2) none"                                      // red default
-	git_status_other: "rgb(211, 1, 2) none"                                           // red default
-	selected_line: "none rgb(7, 54, 66)"                                              // default base02
-	char_match: "rgb(133, 153, 0) none underlined"                                    // green default underlined
-	file_error: "rgb(203, 75, 22) none italic"                                        // orange default italic
-	flag_label: "none none"                                                           // default default
-	flag_value: "rgb(181, 137, 0) none bold"                                          // yellow default bold
-	input: "none none"                                                                // default default
-	status_error: "rgb(203, 75, 22) rgb(7, 54, 66)"                                   // orange base02
-	status_job: "rgb(108, 113, 196) rgb(7, 54, 66) bold"                              // violet base02 bold
-	status_normal: "none rgb(7, 54, 66)"                                              // default base02
-	status_italic: "rgb(181, 137, 0) rgb(7, 54, 66)"                                  // yellow base02
-	status_bold: "rgb(147, 161, 161) rgb(7, 54, 66) bold"                             // base1 base02 bold
-	status_code: "rgb(108, 113, 196) rgb(7, 54, 66)"                                  // violet base02
-	status_ellipsis: "none rgb(7, 54, 66)"                                            // default base02
-	scrollbar_track: "rgb(7, 54, 66) none"                                            // base02 default
-	scrollbar_thumb: "none none"                                                      // default default
-	help_paragraph: "none none"                                                       // default default
-	help_bold: "rgb(147, 161, 161) none bold"                                         // base1 default bold
-	help_italic: "rgb(147, 161, 161) none italic"                                     // base1 default italic
-	help_code: "rgb(147, 161, 161) rgb(7, 54, 66)"                                    // base1 base02
-	help_headers: "rgb(181, 137, 0) none"                                             // yellow default
-	help_table_border: "none none"                                                    // default default
-	preview_title: "gray(20) rgb(0, 43, 54)"
-	staging_area_title: "gray(22) rgb(0, 43, 54)"
- 	good_to_bad_0: "ansi(28)"														  // green
- 	good_to_bad_1: "ansi(29)"
- 	good_to_bad_2: "ansi(29)"
- 	good_to_bad_3: "ansi(29)"
- 	good_to_bad_4: "ansi(29)"
- 	good_to_bad_5: "ansi(100)"
- 	good_to_bad_6: "ansi(136)"
- 	good_to_bad_7: "ansi(172)"
- 	good_to_bad_8: "ansi(166)"
- 	good_to_bad_9: "ansi(196)"                                                        // red
-}
diff --git a/.config/broot/skins/solarized-light.hjson b/.config/broot/skins/solarized-light.hjson
deleted file mode 100644
index 6e19275..0000000
--- a/.config/broot/skins/solarized-light.hjson
+++ /dev/null
@@ -1,118 +0,0 @@
-// contributed by [@danieltrautmann](https://github.com/danieltrautmann)
-// 
-// 
-// The Solarized Light skin uses RGB values, so it might not work well with some
-// terminals
-//
-// If you prefer to keep the background the same as your terminal background, change
-// the "default" entry to
-//  default: "none none / rgb(147, 161, 161) none"
-//
-// Doc at https://dystroy.org/broot/skins/
-
-skin: {
-	// base00 default / base1 base2
-	default: "rgb(101, 123, 131) none / rgb(147, 161, 161) none"
-	// base1 default
-	tree: "rgb(147, 161, 161) none"
-	// default default
-	file: "none none"
-	// blue default bold
-	directory: "rgb(38, 139, 210) none bold"
-	// red default
-	exe: "rgb(211, 1, 2) none"
-	// magenta default
-	link: "rgb(211, 54, 130) none"
-	// base1 default italic
-	pruning: "rgb(147, 161, 161) none italic"
-	// base1 default
-	perm__: "rgb(147, 161, 161) none"
-	// default default
-	perm_r: "none none"
-	// default default
-	perm_w: "none none"
-	// default default
-	perm_x: "none none"
-	// base1 default
-	owner: "rgb(147, 161, 161) none"
-	// base1 default
-	group: "rgb(147, 161, 161) none"
-	// default default
-	sparse: "none none"
-	// base01 default
-	git_branch: "rgb(88, 110, 117) none"
-	// green default
-	git_insertions: "rgb(133, 153, 0) none"
-	// red default
-	git_deletions: "rgb(211, 1, 2) none"
-	// default default
-	git_status_current: "none none"
-	// yellow default
-	git_status_modified: "rgb(181, 137, 0) none"
-	// green default
-	git_status_new: "rgb(133, 153, 0) none"
-	// base1 default
-	git_status_ignored: "rgb(147, 161, 161) none"
-	// red default
-	git_status_conflicted: "rgb(211, 1, 2) none"
-	// red default
-	git_status_other: "rgb(211, 1, 2) none"
-	// default base2
-	selected_line: "none rgb(238, 232, 213)"
-	// green default underlined
-	char_match: "rgb(133, 153, 0) none underlined"
-	// orange default italic
-	file_error: "rgb(203, 75, 22) none italic"
-	// default default
-	flag_label: "none none"
-	// yellow default bold
-	flag_value: "rgb(181, 137, 0) none bold"
-	// default default
-	input: "none none"
-	// orange base2
-	status_error: "rgb(203, 75, 22) rgb(238, 232, 213)"
-	// violet base2 bold
-	status_job: "rgb(108, 113, 196) rgb(238, 232, 213) bold"
-	// default base2
-	status_normal: "none rgb(238, 232, 213)"
-	// yellow base2
-	status_italic: "rgb(181, 137, 0) rgb(238, 232, 213)"
-	// base01 base2 bold
-	status_bold: "rgb(88, 110, 117) rgb(238, 232, 213) bold"
-	// violet base2
-	status_code: "rgb(108, 113, 196) rgb(238, 232, 213)"
-	// default base2
-	status_ellipsis: "none rgb(238, 232, 213)"
-	// base2 default
-	scrollbar_track: "rgb(238, 232, 213) none"
-	// default default
-	scrollbar_thumb: "none none"
-	// default default
-	help_paragraph: "none none"
-	// base01 default bold
-	help_bold: "rgb(88, 110, 117) none bold"
-	// base01 default italic
-	help_italic: "rgb(88, 110, 117) none italic"
-	// base01 base2
-	help_code: "rgb(88, 110, 117) rgb(238, 232, 213)"
-	// yellow default
-	help_headers: "rgb(181, 137, 0) none"
-	// default default
-	help_table_border: "none none"
-	preview_title: "rgb(147, 161, 161) rgb(238, 232, 213)"
-	preview: "rgb(101, 123, 131) rgb(253, 246, 227) / rgb(147, 161, 161) rgb(238, 232, 213)"
-	preview_line_number: "rgb(147, 161, 161) rgb(238, 232, 213)"
-	preview_separator: "rgb(147, 161, 161) rgb(238, 232, 213)"
-	preview_match: "None ansi(29)"
-	staging_area_title: "gray(22) rgb(253, 246, 227)"
-	good_to_bad_0: ansi(28)
-	good_to_bad_1: ansi(29)
-	good_to_bad_2: ansi(29)
-	good_to_bad_3: ansi(29)
-	good_to_bad_4: ansi(29)
-	good_to_bad_5: ansi(100)
-	good_to_bad_6: ansi(136)
-	good_to_bad_7: ansi(172)
-	good_to_bad_8: ansi(166)
-	good_to_bad_9: ansi(196)
-}
diff --git a/.config/broot/verbs.hjson b/.config/broot/verbs.hjson
index abf186a..da78ce8 100644
--- a/.config/broot/verbs.hjson
+++ b/.config/broot/verbs.hjson
@@ -8,6 +8,15 @@
 ###############################################################
 
 verbs: [
+  {
+      invocation: edit
+      key: enter
+      shortcut: e
+      execution: "wezterm-edit-helper {file}"
+      apply_to: text_file
+      leave_broot: true
+  }
+
     {
         invocation: nvim
         key: enter
@@ -19,7 +28,7 @@ verbs: [
     {
         invocation: broot_home
         key: ctrl-7
-        execution: broot $HOME
+        execution: br $HOME
         leave_broot: true
     }
 
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index cdfdf49..9e011ff 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -55,7 +55,8 @@ if status is-interactive
     function git_jump
         set _dir $(git rev-parse --show-toplevel 2>/dev/null || pwd)
         if [ "$_dir" = "$PWD" ]
-            set _dir $(br -f --conf ~/.config/broot/select.hjson)
+            #set _dir $(br -f --conf ~/.config/broot/select.hjson)
+            set _dir $(br -f --conf "$HOME/.config/broot/conf.hjson")
         end
         [ -n "$_dir" ] && pushd $_dir >>/dev/null
         commandline -f repaint
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 59a8129..a5c8e1a 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -111,7 +111,7 @@ local function colors_for_appearance(appearance)
 	else
 		return {
 			background = "#fefeff",
-			foreground = "#333333",
+			foreground = "#222222",
 			cursor_bg = "#aa0000",
 			cursor_fg = "#ffffff",
 			cursor_border = "#ffffff",
diff --git a/.gitconfig b/.gitconfig
index e389b10..e001475 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -85,7 +85,7 @@ protocol = git
 diffFilter = delta --color-only --features=interactive
 
 [commit]
-gpgsign = true
+gpgsign = false
 verbose = true
 
 [credential]

From 6a5196b4d4ce4b9dd4135fc3d417eaec88093ddc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 28 Jun 2024 07:55:21 +0200
Subject: [PATCH 314/656] nixos adjustments (PATHs mostly)

---
 .config/fish/conf.d/prompt.fish          |   4 +-
 .config/fish/conf.d/semantic-prompt.fish |   1 -
 .config/fish/config.fish                 |  11 -
 .config/fish/fish_variables              |   2 +-
 .config/wezterm/wezterm.lua              | 348 +++++++++++------------
 bin/wezterm-edit-helper                  |   1 +
 bin/xdg-open                             |   2 +-
 7 files changed, 179 insertions(+), 190 deletions(-)

diff --git a/.config/fish/conf.d/prompt.fish b/.config/fish/conf.d/prompt.fish
index c6281d9..c246201 100644
--- a/.config/fish/conf.d/prompt.fish
+++ b/.config/fish/conf.d/prompt.fish
@@ -20,7 +20,7 @@ function fish_prompt
             printf "\n\e[1;32m%%\e[0m "
         end
     else
-        /usr/bin/starship prompt --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
+        starship prompt --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
     end
 end
 
@@ -43,7 +43,7 @@ function fish_right_prompt
             printf ""
         end
     else
-        /usr/bin/starship prompt --right --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
+        starship prompt --right --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
     end
 end
 
diff --git a/.config/fish/conf.d/semantic-prompt.fish b/.config/fish/conf.d/semantic-prompt.fish
index 296a561..23947c4 100644
--- a/.config/fish/conf.d/semantic-prompt.fish
+++ b/.config/fish/conf.d/semantic-prompt.fish
@@ -1,4 +1,3 @@
-#!/usr/bin/fish
 # SPDX-License-Identifier: CC0-1.0
 if status --is-interactive
     set _fishprompt_aid "fish"$fish_pid
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 9e011ff..55297a1 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -4,11 +4,6 @@ set fish_emoji_width 2
 fish_add_path $HOME/.cargo/bin
 fish_add_path $HOME/bin
 
-## Nix
-set -gx LOCALE_ARCHIVE /usr/lib/locale/locale-archive
-set -gx NIX_REMOTE daemon
-fish_add_path $HOME/.nix-profile/bin
-
 if status is-interactive
 
     ## Pager
@@ -29,16 +24,10 @@ if status is-interactive
     set -gx VISUAL $EDITOR
     set -gx SUDO_EDITOR $EDITOR
 
-
-
     function tree
         eza --tree --color=always $argv | bat --wrap=never
     end
 
-    function rg --wraps rg --description 'ripgrep with bat'
-        /usr/bin/rg --color=always $argv | bat --wrap=never
-    end
-
     ## Directory jumping with frecency 
 
     function fre_after_cd --on-variable PWD
diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
index e265762..10b98ea 100644
--- a/.config/fish/fish_variables
+++ b/.config/fish/fish_variables
@@ -44,5 +44,5 @@ SETUVAR fish_pager_color_selected_background:\x2dr
 SETUVAR fish_pager_color_selected_completion:\x1d
 SETUVAR fish_pager_color_selected_description:\x1d
 SETUVAR fish_pager_color_selected_prefix:\x1d
-SETUVAR fish_user_paths:/home/dln/\x2ekrew/bin\x1e/home/dln/bin\x1e/home/dln/\x2ecargo/bin
+SETUVAR fish_user_paths:/home/dln/\x2enix\x2dprofile/bin\x1e/home/dln/\x2ekrew/bin\x1e/home/dln/bin\x1e/home/dln/\x2ecargo/bin
 SETUVAR --export theme:Catppuccin\x20Latte
diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index a5c8e1a..3a468c0 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -11,67 +11,67 @@ local config = {}
 local nvim_args = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
 
 config.exec_domains = {
-	wezterm.exec_domain("dev", function(cmd)
-		local wrapped = { "/usr/bin/ssh", "-t", "dev" }
-		for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
-			table.insert(wrapped, arg)
-		end
-		cmd.args = wrapped
-		return cmd
-	end),
-	wezterm.exec_domain("nemo", function(cmd)
-		local wrapped = { "/usr/bin/ssh", "-t", "nemo" }
-		for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
-			table.insert(wrapped, arg)
-		end
-		cmd.args = wrapped
-		return cmd
-	end),
+  wezterm.exec_domain("dev", function(cmd)
+    local wrapped = { "ssh", "-t", "dev" }
+    for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
+      table.insert(wrapped, arg)
+    end
+    cmd.args = wrapped
+    return cmd
+  end),
+  wezterm.exec_domain("nemo", function(cmd)
+    local wrapped = { "ssh", "-t", "nemo" }
+    for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
+      table.insert(wrapped, arg)
+    end
+    cmd.args = wrapped
+    return cmd
+  end),
 }
 
 local function activate_nvim(window, pane)
-	wezterm.log_info("nvim")
-	for _, t in ipairs(window:mux_window():tabs_with_info()) do
-		for _, p in ipairs(t.tab:panes()) do
-			if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
-				window:perform_action(
-					act.Multiple({
-						act.ActivateTab(t.index),
-						act.MoveTab(0),
-					}),
-					pane
-				)
-				return
-			end
-		end
-	end
+  wezterm.log_info("nvim")
+  for _, t in ipairs(window:mux_window():tabs_with_info()) do
+    for _, p in ipairs(t.tab:panes()) do
+      if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
+        window:perform_action(
+          act.Multiple({
+            act.ActivateTab(t.index),
+            act.MoveTab(0),
+          }),
+          pane
+        )
+        return
+      end
+    end
+  end
 
-	local nvim_tab, nvim_pane, _ = window:mux_window():spawn_tab({ args = nvim_args })
-	window:perform_action(act.MoveTab(0), nvim_pane)
-	nvim_tab:set_title("nvim")
+  local nvim_tab, nvim_pane, _ = window:mux_window():spawn_tab({ args = nvim_args })
+  window:perform_action(act.MoveTab(0), nvim_pane)
+  nvim_tab:set_title("nvim")
 end
 
 local function activate_tab(title, index)
-	return function(window, pane)
-		wezterm.log_info(title)
-		for _, t in ipairs(window:mux_window():tabs_with_info()) do
-			if t.tab:get_title() == title then
-				window:perform_action(
-					act.Multiple({
-						act.ActivateTab(t.index),
-						act.MoveTab(index),
-					}),
-					pane
-				)
-				return
-			end
-		end
-		local tab, _, _ = window:mux_window():spawn_tab({
-			cwd = "~",
-		})
-		tab:set_title(title)
-		window:perform_action(act.MoveTab(index), pane)
-	end
+  return function(window, pane)
+    wezterm.log_info(title)
+    for _, t in ipairs(window:mux_window():tabs_with_info()) do
+      if t.tab:get_title() == title then
+        window:perform_action(
+          act.Multiple({
+            act.ActivateTab(t.index),
+            act.MoveTab(index),
+          }),
+          pane
+        )
+        return
+      end
+    end
+    local tab, _, _ = window:mux_window():spawn_tab({
+      cwd = "~",
+    })
+    tab:set_title(title)
+    window:perform_action(act.MoveTab(index), pane)
+  end
 end
 
 wezterm.on("activate-nvim", activate_nvim)
@@ -86,41 +86,41 @@ wezterm.on("tab-9", activate_tab("t9", 8))
 wezterm.on("tab-10", activate_tab("t10", 9))
 
 wezterm.on("user-var-changed", function(window, pane, name, _)
-	if name == "nvim_activate" then
-		activate_nvim(window, pane)
-	end
+  if name == "nvim_activate" then
+    activate_nvim(window, pane)
+  end
 end)
 
 -- ------------------------------------------------------------------------------------
 -- Appearance
 
 local function colors_for_appearance(appearance)
-	if appearance:find("Dark") then
-		return {
-			background = "#0d1117",
-			-- background = "#000000",
-			foreground = "#b2b2b2",
-			cursor_bg = "#00d992",
-			cursor_fg = "#000000",
-			cursor_border = "#000000",
-			selection_bg = "#d7d7d7",
-			selection_fg = "#000000",
-			ansi = { "#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#f0f0f0" },
-			brights = { "#000000", "#ff8c88", "#baff94", "#ffe090", "#88ccff", "#e38dff", "#97eeff", "#ffffff" },
-		}
-	else
-		return {
-			background = "#fefeff",
-			foreground = "#222222",
-			cursor_bg = "#aa0000",
-			cursor_fg = "#ffffff",
-			cursor_border = "#ffffff",
-			selection_bg = "#ffe6a4",
-			selection_fg = "#483600",
-			ansi = { "#000000", "#9e001d", "#306300", "#deae00", "#00669e", "#7d009e", "#008a9e", "#f7f7f7" },
-			brights = { "#000000", "#ff0035", "#509e00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#ffffff" },
-		}
-	end
+  if appearance:find("Dark") then
+    return {
+      background = "#0d1117",
+      -- background = "#000000",
+      foreground = "#b2b2b2",
+      cursor_bg = "#00d992",
+      cursor_fg = "#000000",
+      cursor_border = "#000000",
+      selection_bg = "#d7d7d7",
+      selection_fg = "#000000",
+      ansi = { "#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#f0f0f0" },
+      brights = { "#000000", "#ff8c88", "#baff94", "#ffe090", "#88ccff", "#e38dff", "#97eeff", "#ffffff" },
+    }
+  else
+    return {
+      background = "#fefeff",
+      foreground = "#222222",
+      cursor_bg = "#aa0000",
+      cursor_fg = "#ffffff",
+      cursor_border = "#ffffff",
+      selection_bg = "#ffe6a4",
+      selection_fg = "#483600",
+      ansi = { "#000000", "#9e001d", "#306300", "#deae00", "#00669e", "#7d009e", "#008a9e", "#f7f7f7" },
+      brights = { "#000000", "#ff0035", "#509e00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#ffffff" },
+    }
+  end
 end
 
 config.colors = colors_for_appearance(wezterm.gui.get_appearance())
@@ -128,50 +128,50 @@ config.colors = colors_for_appearance(wezterm.gui.get_appearance())
 -- ------------------------------------------------------------------------------------
 -- Fonts
 local berkeley_mono_features = {
-	-- "calt=1",
-	-- "dlig=0",
-	-- "liga",
-	-- "calt=1",
-	-- "clig=1",
-	-- "ss02", -- Clean Zero
-	"ss03", -- Slashed Zero
-	-- "ss04", -- Cut Zero
+  -- "calt=1",
+  -- "dlig=0",
+  -- "liga",
+  -- "calt=1",
+  -- "clig=1",
+  -- "ss02", -- Clean Zero
+  "ss03", -- Slashed Zero
+  -- "ss04", -- Cut Zero
 }
 
 -- #[ ## ### #### ################
 
 config.font = wezterm.font({
-	family = "Berkeley Mono Nerd Font",
-	weight = "Regular",
-	harfbuzz_features = berkeley_mono_features,
+  family = "Berkeley Mono Nerd Font",
+  weight = "Regular",
+  harfbuzz_features = berkeley_mono_features,
 })
 config.font_rules = {
-	{
-		italic = true,
-		intensity = "Bold",
-		reverse = false,
-		-- font = wezterm.font("Iosevka Term SS15 Lt Ex Obl", { weight = "Light", italic = true }),
-		-- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }),
-		-- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }),
-		-- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }),
-		font = wezterm.font({
-			family = "Berkeley Mono Nerd Font",
-			italic = true,
-			harfbuzz_features = berkeley_mono_features,
-		}),
-	},
+  {
+    italic = true,
+    intensity = "Bold",
+    reverse = false,
+    -- font = wezterm.font("Iosevka Term SS15 Lt Ex Obl", { weight = "Light", italic = true }),
+    -- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }),
+    -- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }),
+    -- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }),
+    font = wezterm.font({
+      family = "Berkeley Mono Nerd Font",
+      italic = true,
+      harfbuzz_features = berkeley_mono_features,
+    }),
+  },
 }
 
 wezterm.on("window-config-reloaded", function(window, pane)
-	local overrides = window:get_config_overrides() or {}
-	local dpi = wezterm.gui.screens().active.effective_dpi
+  local overrides = window:get_config_overrides() or {}
+  local dpi = wezterm.gui.screens().active.effective_dpi
 
-	if dpi > 96 then
-		overrides.font_size = 14
-	else
-		overrides.font_size = 18
-	end
-	window:set_config_overrides(overrides)
+  if dpi > 96 then
+    overrides.font_size = 14
+  else
+    overrides.font_size = 18
+  end
+  window:set_config_overrides(overrides)
 end)
 
 config.warn_about_missing_glyphs = false
@@ -199,28 +199,28 @@ config.adjust_window_size_when_changing_font_size = false
 config.use_resize_increments = true
 config.window_decorations = "RESIZE"
 config.window_frame = {
-	border_left_width = "4px",
-	border_right_width = "4px",
-	border_bottom_height = "4px",
-	border_top_height = "4px",
-	border_left_color = "#000000",
-	border_right_color = "#000000",
-	border_bottom_color = "#000000",
-	border_top_color = "#000000",
+  border_left_width = "4px",
+  border_right_width = "4px",
+  border_bottom_height = "4px",
+  border_top_height = "4px",
+  border_left_color = "#000000",
+  border_right_color = "#000000",
+  border_bottom_color = "#000000",
+  border_top_color = "#000000",
 }
 config.window_padding = {
-	left = 10,
-	right = 10,
-	top = 0,
-	bottom = 0,
+  left = 10,
+  right = 10,
+  top = 0,
+  bottom = 0,
 }
 
 -- Hyperlinks
 config.hyperlink_rules = wezterm.default_hyperlink_rules()
 
 table.insert(config.hyperlink_rules, {
-	regex = [[E(\d+)]],
-	format = "https://doc.rust-lang.org/error_codes/E$1.html",
+  regex = [[E(\d+)]],
+  format = "https://doc.rust-lang.org/error_codes/E$1.html",
 })
 
 -- Tabs
@@ -245,54 +245,54 @@ config.alternate_buffer_wheel_scroll_speed = 1
 -- Keys
 config.disable_default_key_bindings = true
 config.keys = {
-	{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
-	{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
-	{ key = "0", mods = "CTRL", action = "ResetFontSize" },
-	{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
-	{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
-	{ key = "UpArrow", mods = "CTRL", action = act.ScrollToPrompt(-1) },
-	{ key = "DownArrow", mods = "CTRL", action = act.ScrollToPrompt(1) },
-	{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
-	{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
-	{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },
-	{ key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(0.5) },
-	{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
-	{ key = "o", mods = "ALT", action = act.ActivateCommandPalette },
-	{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
-	{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
-	{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
-	{ key = "1", mods = "ALT", action = act.EmitEvent("activate-nvim") },
-	{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },
-	{ key = "3", mods = "ALT", action = act.EmitEvent("tab-3") },
-	{ key = "4", mods = "ALT", action = act.EmitEvent("tab-4") },
-	{ key = "5", mods = "ALT", action = act.EmitEvent("tab-5") },
-	{ key = "6", mods = "ALT", action = act.EmitEvent("tab-6") },
-	{ key = "7", mods = "ALT", action = act.EmitEvent("tab-7") },
-	{ key = "8", mods = "ALT", action = act.EmitEvent("tab-8") },
-	{ key = "9", mods = "ALT", action = act.EmitEvent("tab-9") },
-	{ key = "0", mods = "ALT", action = act.EmitEvent("tab-10") },
+  { key = "c",          mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
+  { key = "v",          mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
+  { key = "0",          mods = "CTRL",      action = "ResetFontSize" },
+  { key = "-",          mods = "CTRL",      action = "DecreaseFontSize" },
+  { key = "=",          mods = "CTRL",      action = "IncreaseFontSize" },
+  { key = "UpArrow",    mods = "CTRL",      action = act.ScrollToPrompt(-1) },
+  { key = "DownArrow",  mods = "CTRL",      action = act.ScrollToPrompt(1) },
+  { key = "UpArrow",    mods = "SHIFT",     action = act.ScrollByLine(-1) },
+  { key = "DownArrow",  mods = "SHIFT",     action = act.ScrollByLine(1) },
+  { key = "PageUp",     mods = "SHIFT",     action = act.ScrollByPage(-0.5) },
+  { key = "PageDown",   mods = "SHIFT",     action = act.ScrollByPage(0.5) },
+  { key = "r",          mods = "ALT",       action = act.ReloadConfiguration },
+  { key = "o",          mods = "ALT",       action = act.ActivateCommandPalette },
+  { key = "RightArrow", mods = "CTRL",      action = act.ActivateTabRelative(1) },
+  { key = "LeftArrow",  mods = "CTRL",      action = act.ActivateTabRelative(-1) },
+  { key = "Backspace",  mods = "ALT",       action = act.SwitchWorkspaceRelative(1) },
+  { key = "1",          mods = "ALT",       action = act.EmitEvent("activate-nvim") },
+  { key = "2",          mods = "ALT",       action = act.EmitEvent("tab-2") },
+  { key = "3",          mods = "ALT",       action = act.EmitEvent("tab-3") },
+  { key = "4",          mods = "ALT",       action = act.EmitEvent("tab-4") },
+  { key = "5",          mods = "ALT",       action = act.EmitEvent("tab-5") },
+  { key = "6",          mods = "ALT",       action = act.EmitEvent("tab-6") },
+  { key = "7",          mods = "ALT",       action = act.EmitEvent("tab-7") },
+  { key = "8",          mods = "ALT",       action = act.EmitEvent("tab-8") },
+  { key = "9",          mods = "ALT",       action = act.EmitEvent("tab-9") },
+  { key = "0",          mods = "ALT",       action = act.EmitEvent("tab-10") },
 }
 
 -- Mouse
 config.mouse_bindings = {
-	{
-		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-		mods = "SHIFT",
-		action = act.ScrollByLine(-5),
-	},
-	{
-		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-		mods = "SHIFT",
-		action = act.ScrollByLine(5),
-	},
-	{
-		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-		action = act.ScrollByLine(-1),
-	},
-	{
-		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-		action = act.ScrollByLine(1),
-	},
+  {
+    event = { Down = { streak = 1, button = { WheelUp = 1 } } },
+    mods = "SHIFT",
+    action = act.ScrollByLine(-5),
+  },
+  {
+    event = { Down = { streak = 1, button = { WheelDown = 1 } } },
+    mods = "SHIFT",
+    action = act.ScrollByLine(5),
+  },
+  {
+    event = { Down = { streak = 1, button = { WheelUp = 1 } } },
+    action = act.ScrollByLine(-1),
+  },
+  {
+    event = { Down = { streak = 1, button = { WheelDown = 1 } } },
+    action = act.ScrollByLine(1),
+  },
 }
 
 return config
diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper
index ca4274a..7c93727 100755
--- a/bin/wezterm-edit-helper
+++ b/bin/wezterm-edit-helper
@@ -18,6 +18,7 @@ fi
 
 fre --store_name "edit-history" --add "$_file"
 
+rm -f "$XDG_RUNTIME_DIR/nvim-persistent.sock"
 nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote "$_file" &>/dev/null
 
 # Wezterm: switch tab to nvim
diff --git a/bin/xdg-open b/bin/xdg-open
index 219baf3..801d576 100755
--- a/bin/xdg-open
+++ b/bin/xdg-open
@@ -2,7 +2,7 @@
 set -e
 
 # Use local xdg-open if not in an ssh session
-[ -n "$SSH_TTY" ] || exec /usr/bin/xdg-open "$@"
+[ -n "$SSH_TTY" ] || exec xdg-open "$@"
 
 if [ -p /dev/stdin ]; then
 	exec nc -U "$XDG_RUNTIME_DIR/opener.sock" </dev/stdin

From 09946832c1c07d13788e8b10820726cc4e6e5b8e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 30 Jun 2024 23:08:26 +0200
Subject: [PATCH 315/656] fish: use zoxide instead of fre + fzf

---
 .config/fish/conf.d/zoxide.fish | 100 ++++++++++++++++++++++++++++++++
 .config/fish/config.fish        |  25 ++++++++
 2 files changed, 125 insertions(+)
 create mode 100644 .config/fish/conf.d/zoxide.fish

diff --git a/.config/fish/conf.d/zoxide.fish b/.config/fish/conf.d/zoxide.fish
new file mode 100644
index 0000000..fa10e76
--- /dev/null
+++ b/.config/fish/conf.d/zoxide.fish
@@ -0,0 +1,100 @@
+# =============================================================================
+#
+# Utility functions for zoxide.
+#
+
+# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
+function __zoxide_pwd
+    builtin pwd -L
+end
+
+# A copy of fish's internal cd function. This makes it possible to use
+# `alias cd=z` without causing an infinite loop.
+if ! builtin functions --query __zoxide_cd_internal
+    if builtin functions --query cd
+        builtin functions --copy cd __zoxide_cd_internal
+    else
+        alias __zoxide_cd_internal='builtin cd'
+    end
+end
+
+# cd + custom logic based on the value of _ZO_ECHO.
+function __zoxide_cd
+    __zoxide_cd_internal $argv
+end
+
+# =============================================================================
+#
+# Hook configuration for zoxide.
+#
+
+# Initialize hook to add new entries to the database.
+function __zoxide_hook --on-variable PWD
+    test -z "$fish_private_mode"
+    and command zoxide add -- (__zoxide_pwd)
+end
+
+# =============================================================================
+#
+# When using zoxide with --no-cmd, alias these internal functions as desired.
+#
+
+if test -z $__zoxide_z_prefix
+    set __zoxide_z_prefix 'z!'
+end
+set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix)
+
+# Jump to a directory using only keywords.
+function __zoxide_z
+    set -l argc (count $argv)
+    if test $argc -eq 0
+        __zoxide_cd $HOME
+    else if test "$argv" = -
+        __zoxide_cd -
+    else if test $argc -eq 1 -a -d $argv[1]
+        __zoxide_cd $argv[1]
+    else if set -l result (string replace --regex $__zoxide_z_prefix_regex '' $argv[-1]); and test -n $result
+        __zoxide_cd $result
+    else
+        set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv)
+        and __zoxide_cd $result
+    end
+end
+
+# Completions.
+function __zoxide_z_complete
+    set -l tokens (commandline --current-process --tokenize)
+    set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize)
+
+    if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1
+        # If there are < 2 arguments, use `cd` completions.
+        complete --do-complete "'' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$'
+    else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1]
+        # If the last argument is empty and the one before doesn't start with
+        # $__zoxide_z_prefix, use interactive selection.
+        set -l query $tokens[2..-1]
+        set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query)
+        and echo $__zoxide_z_prefix$result
+        commandline --function repaint
+    end
+end
+complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)'
+
+# Jump to a directory using interactive search.
+function __zoxide_zi
+    set -l result (command zoxide query --interactive -- $argv)
+    and __zoxide_cd $result
+end
+
+# =============================================================================
+#
+# Commands for zoxide. Disable these using --no-cmd.
+#
+
+abbr --erase cd &>/dev/null
+alias cd=__zoxide_z
+
+abbr --erase cdi &>/dev/null
+alias cdi=__zoxide_zi
+
+set -gx _ZO_EXCLUDE_DIRS "$HOME/media:$HOME/media/*"
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 55297a1..47a2eaf 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -28,6 +28,7 @@ if status is-interactive
         eza --tree --color=always $argv | bat --wrap=never
     end
 
+<<<<<<< HEAD
     ## Directory jumping with frecency 
 
     function fre_after_cd --on-variable PWD
@@ -40,6 +41,30 @@ if status is-interactive
         commandline -f repaint
     end
     bind \cg jump
+||||||| parent of 931ae14 (fish: use zoxide instead of fre + fzf)
+    function rg --wraps rg --description 'ripgrep with bat'
+        /usr/bin/rg --color=always $argv | bat --wrap=never
+    end
+
+    ## Directory jumping with frecency 
+
+    function fre_after_cd --on-variable PWD
+        fre --add "$PWD"
+    end
+
+    function jump
+        set _dir $(fre --sorted | fzf --no-sort --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.hjson $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
+        [ -n "$_dir" ] && pushd $_dir >>/dev/null
+        commandline -f repaint
+    end
+    bind \cg jump
+=======
+    function rg --wraps rg --description 'ripgrep with bat'
+        /usr/bin/rg --color=always $argv | bat --wrap=never
+    end
+
+    bind \cg __zoxide_zi
+>>>>>>> 931ae14 (fish: use zoxide instead of fre + fzf)
 
     function git_jump
         set _dir $(git rev-parse --show-toplevel 2>/dev/null || pwd)

From bd8685e2750d93213c26179f64aac2cc95bcf8e9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 2 Jul 2024 21:19:21 +0200
Subject: [PATCH 316/656] wezterm: per-dpi settings

---
 .config/wezterm/wezterm.lua | 354 ++++++++++++++++++------------------
 1 file changed, 179 insertions(+), 175 deletions(-)

diff --git a/.config/wezterm/wezterm.lua b/.config/wezterm/wezterm.lua
index 3a468c0..4881b99 100644
--- a/.config/wezterm/wezterm.lua
+++ b/.config/wezterm/wezterm.lua
@@ -11,67 +11,67 @@ local config = {}
 local nvim_args = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
 
 config.exec_domains = {
-  wezterm.exec_domain("dev", function(cmd)
-    local wrapped = { "ssh", "-t", "dev" }
-    for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
-      table.insert(wrapped, arg)
-    end
-    cmd.args = wrapped
-    return cmd
-  end),
-  wezterm.exec_domain("nemo", function(cmd)
-    local wrapped = { "ssh", "-t", "nemo" }
-    for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
-      table.insert(wrapped, arg)
-    end
-    cmd.args = wrapped
-    return cmd
-  end),
+	wezterm.exec_domain("dev", function(cmd)
+		local wrapped = { "ssh", "-t", "dev" }
+		for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
+			table.insert(wrapped, arg)
+		end
+		cmd.args = wrapped
+		return cmd
+	end),
+	wezterm.exec_domain("nemo", function(cmd)
+		local wrapped = { "ssh", "-t", "nemo" }
+		for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
+			table.insert(wrapped, arg)
+		end
+		cmd.args = wrapped
+		return cmd
+	end),
 }
 
 local function activate_nvim(window, pane)
-  wezterm.log_info("nvim")
-  for _, t in ipairs(window:mux_window():tabs_with_info()) do
-    for _, p in ipairs(t.tab:panes()) do
-      if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
-        window:perform_action(
-          act.Multiple({
-            act.ActivateTab(t.index),
-            act.MoveTab(0),
-          }),
-          pane
-        )
-        return
-      end
-    end
-  end
+	wezterm.log_info("nvim")
+	for _, t in ipairs(window:mux_window():tabs_with_info()) do
+		for _, p in ipairs(t.tab:panes()) do
+			if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
+				window:perform_action(
+					act.Multiple({
+						act.ActivateTab(t.index),
+						act.MoveTab(0),
+					}),
+					pane
+				)
+				return
+			end
+		end
+	end
 
-  local nvim_tab, nvim_pane, _ = window:mux_window():spawn_tab({ args = nvim_args })
-  window:perform_action(act.MoveTab(0), nvim_pane)
-  nvim_tab:set_title("nvim")
+	local nvim_tab, nvim_pane, _ = window:mux_window():spawn_tab({ args = nvim_args })
+	window:perform_action(act.MoveTab(0), nvim_pane)
+	nvim_tab:set_title("nvim")
 end
 
 local function activate_tab(title, index)
-  return function(window, pane)
-    wezterm.log_info(title)
-    for _, t in ipairs(window:mux_window():tabs_with_info()) do
-      if t.tab:get_title() == title then
-        window:perform_action(
-          act.Multiple({
-            act.ActivateTab(t.index),
-            act.MoveTab(index),
-          }),
-          pane
-        )
-        return
-      end
-    end
-    local tab, _, _ = window:mux_window():spawn_tab({
-      cwd = "~",
-    })
-    tab:set_title(title)
-    window:perform_action(act.MoveTab(index), pane)
-  end
+	return function(window, pane)
+		wezterm.log_info(title)
+		for _, t in ipairs(window:mux_window():tabs_with_info()) do
+			if t.tab:get_title() == title then
+				window:perform_action(
+					act.Multiple({
+						act.ActivateTab(t.index),
+						act.MoveTab(index),
+					}),
+					pane
+				)
+				return
+			end
+		end
+		local tab, _, _ = window:mux_window():spawn_tab({
+			cwd = "~",
+		})
+		tab:set_title(title)
+		window:perform_action(act.MoveTab(index), pane)
+	end
 end
 
 wezterm.on("activate-nvim", activate_nvim)
@@ -86,41 +86,41 @@ wezterm.on("tab-9", activate_tab("t9", 8))
 wezterm.on("tab-10", activate_tab("t10", 9))
 
 wezterm.on("user-var-changed", function(window, pane, name, _)
-  if name == "nvim_activate" then
-    activate_nvim(window, pane)
-  end
+	if name == "nvim_activate" then
+		activate_nvim(window, pane)
+	end
 end)
 
 -- ------------------------------------------------------------------------------------
 -- Appearance
 
 local function colors_for_appearance(appearance)
-  if appearance:find("Dark") then
-    return {
-      background = "#0d1117",
-      -- background = "#000000",
-      foreground = "#b2b2b2",
-      cursor_bg = "#00d992",
-      cursor_fg = "#000000",
-      cursor_border = "#000000",
-      selection_bg = "#d7d7d7",
-      selection_fg = "#000000",
-      ansi = { "#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#f0f0f0" },
-      brights = { "#000000", "#ff8c88", "#baff94", "#ffe090", "#88ccff", "#e38dff", "#97eeff", "#ffffff" },
-    }
-  else
-    return {
-      background = "#fefeff",
-      foreground = "#222222",
-      cursor_bg = "#aa0000",
-      cursor_fg = "#ffffff",
-      cursor_border = "#ffffff",
-      selection_bg = "#ffe6a4",
-      selection_fg = "#483600",
-      ansi = { "#000000", "#9e001d", "#306300", "#deae00", "#00669e", "#7d009e", "#008a9e", "#f7f7f7" },
-      brights = { "#000000", "#ff0035", "#509e00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#ffffff" },
-    }
-  end
+	if appearance:find("Dark") then
+		return {
+			background = "#0d1117",
+			-- background = "#000000",
+			foreground = "#b2b2b2",
+			cursor_bg = "#00d992",
+			cursor_fg = "#000000",
+			cursor_border = "#000000",
+			selection_bg = "#d7d7d7",
+			selection_fg = "#000000",
+			ansi = { "#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#f0f0f0" },
+			brights = { "#000000", "#ff8c88", "#baff94", "#ffe090", "#88ccff", "#e38dff", "#97eeff", "#ffffff" },
+		}
+	else
+		return {
+			background = "#fefeff",
+			foreground = "#222222",
+			cursor_bg = "#aa0000",
+			cursor_fg = "#ffffff",
+			cursor_border = "#ffffff",
+			selection_bg = "#ffe6a4",
+			selection_fg = "#483600",
+			ansi = { "#000000", "#9e001d", "#306300", "#deae00", "#00669e", "#7d009e", "#008a9e", "#f7f7f7" },
+			brights = { "#000000", "#ff0035", "#509e00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#ffffff" },
+		}
+	end
 end
 
 config.colors = colors_for_appearance(wezterm.gui.get_appearance())
@@ -128,56 +128,60 @@ config.colors = colors_for_appearance(wezterm.gui.get_appearance())
 -- ------------------------------------------------------------------------------------
 -- Fonts
 local berkeley_mono_features = {
-  -- "calt=1",
-  -- "dlig=0",
-  -- "liga",
-  -- "calt=1",
-  -- "clig=1",
-  -- "ss02", -- Clean Zero
-  "ss03", -- Slashed Zero
-  -- "ss04", -- Cut Zero
+	-- "calt=1",
+	-- "dlig=0",
+	-- "liga",
+	-- "calt=1",
+	-- "clig=1",
+	-- "ss02", -- Clean Zero
+	"ss03", -- Slashed Zero
+	-- "ss04", -- Cut Zero
 }
 
 -- #[ ## ### #### ################
 
 config.font = wezterm.font({
-  family = "Berkeley Mono Nerd Font",
-  weight = "Regular",
-  harfbuzz_features = berkeley_mono_features,
+	family = "Berkeley Mono Nerd Font",
+	weight = "Regular",
+	harfbuzz_features = berkeley_mono_features,
 })
 config.font_rules = {
-  {
-    italic = true,
-    intensity = "Bold",
-    reverse = false,
-    -- font = wezterm.font("Iosevka Term SS15 Lt Ex Obl", { weight = "Light", italic = true }),
-    -- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }),
-    -- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }),
-    -- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }),
-    font = wezterm.font({
-      family = "Berkeley Mono Nerd Font",
-      italic = true,
-      harfbuzz_features = berkeley_mono_features,
-    }),
-  },
+	{
+		italic = true,
+		intensity = "Bold",
+		reverse = false,
+		-- font = wezterm.font("Iosevka Term SS15 Lt Ex Obl", { weight = "Light", italic = true }),
+		-- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }),
+		-- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }),
+		-- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }),
+		font = wezterm.font({
+			family = "Berkeley Mono Nerd Font",
+			italic = true,
+			harfbuzz_features = berkeley_mono_features,
+		}),
+	},
 }
 
 wezterm.on("window-config-reloaded", function(window, pane)
-  local overrides = window:get_config_overrides() or {}
-  local dpi = wezterm.gui.screens().active.effective_dpi
+	local overrides = window:get_config_overrides() or {}
+	local dpi = wezterm.gui.screens().active.effective_dpi
 
-  if dpi > 96 then
-    overrides.font_size = 14
-  else
-    overrides.font_size = 18
-  end
-  window:set_config_overrides(overrides)
+	if dpi > 96 then
+		overrides.font_size = 14
+		overrides.freetype_load_target = "Normal"
+		-- overrides.cell_width = 0.95
+		overrides.cell_width = 1.0
+	else
+		overrides.font_size = 18
+		overrides.freetype_load_target = "HorizontalLcd"
+	end
+	window:set_config_overrides(overrides)
 end)
 
+config.font_size = 14
 config.warn_about_missing_glyphs = false
 config.bold_brightens_ansi_colors = false
 config.unicode_version = 14
-config.freetype_load_target = "HorizontalLcd"
 
 config.custom_block_glyphs = false
 config.allow_square_glyphs_to_overflow_width = "Always"
@@ -199,28 +203,28 @@ config.adjust_window_size_when_changing_font_size = false
 config.use_resize_increments = true
 config.window_decorations = "RESIZE"
 config.window_frame = {
-  border_left_width = "4px",
-  border_right_width = "4px",
-  border_bottom_height = "4px",
-  border_top_height = "4px",
-  border_left_color = "#000000",
-  border_right_color = "#000000",
-  border_bottom_color = "#000000",
-  border_top_color = "#000000",
+	border_left_width = "4px",
+	border_right_width = "4px",
+	border_bottom_height = "4px",
+	border_top_height = "4px",
+	border_left_color = "#000000",
+	border_right_color = "#000000",
+	border_bottom_color = "#000000",
+	border_top_color = "#000000",
 }
 config.window_padding = {
-  left = 10,
-  right = 10,
-  top = 0,
-  bottom = 0,
+	left = 10,
+	right = 10,
+	top = 0,
+	bottom = 0,
 }
 
 -- Hyperlinks
 config.hyperlink_rules = wezterm.default_hyperlink_rules()
 
 table.insert(config.hyperlink_rules, {
-  regex = [[E(\d+)]],
-  format = "https://doc.rust-lang.org/error_codes/E$1.html",
+	regex = [[E(\d+)]],
+	format = "https://doc.rust-lang.org/error_codes/E$1.html",
 })
 
 -- Tabs
@@ -245,54 +249,54 @@ config.alternate_buffer_wheel_scroll_speed = 1
 -- Keys
 config.disable_default_key_bindings = true
 config.keys = {
-  { key = "c",          mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
-  { key = "v",          mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
-  { key = "0",          mods = "CTRL",      action = "ResetFontSize" },
-  { key = "-",          mods = "CTRL",      action = "DecreaseFontSize" },
-  { key = "=",          mods = "CTRL",      action = "IncreaseFontSize" },
-  { key = "UpArrow",    mods = "CTRL",      action = act.ScrollToPrompt(-1) },
-  { key = "DownArrow",  mods = "CTRL",      action = act.ScrollToPrompt(1) },
-  { key = "UpArrow",    mods = "SHIFT",     action = act.ScrollByLine(-1) },
-  { key = "DownArrow",  mods = "SHIFT",     action = act.ScrollByLine(1) },
-  { key = "PageUp",     mods = "SHIFT",     action = act.ScrollByPage(-0.5) },
-  { key = "PageDown",   mods = "SHIFT",     action = act.ScrollByPage(0.5) },
-  { key = "r",          mods = "ALT",       action = act.ReloadConfiguration },
-  { key = "o",          mods = "ALT",       action = act.ActivateCommandPalette },
-  { key = "RightArrow", mods = "CTRL",      action = act.ActivateTabRelative(1) },
-  { key = "LeftArrow",  mods = "CTRL",      action = act.ActivateTabRelative(-1) },
-  { key = "Backspace",  mods = "ALT",       action = act.SwitchWorkspaceRelative(1) },
-  { key = "1",          mods = "ALT",       action = act.EmitEvent("activate-nvim") },
-  { key = "2",          mods = "ALT",       action = act.EmitEvent("tab-2") },
-  { key = "3",          mods = "ALT",       action = act.EmitEvent("tab-3") },
-  { key = "4",          mods = "ALT",       action = act.EmitEvent("tab-4") },
-  { key = "5",          mods = "ALT",       action = act.EmitEvent("tab-5") },
-  { key = "6",          mods = "ALT",       action = act.EmitEvent("tab-6") },
-  { key = "7",          mods = "ALT",       action = act.EmitEvent("tab-7") },
-  { key = "8",          mods = "ALT",       action = act.EmitEvent("tab-8") },
-  { key = "9",          mods = "ALT",       action = act.EmitEvent("tab-9") },
-  { key = "0",          mods = "ALT",       action = act.EmitEvent("tab-10") },
+	{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
+	{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
+	{ key = "0", mods = "CTRL", action = "ResetFontSize" },
+	{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
+	{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
+	{ key = "UpArrow", mods = "CTRL", action = act.ScrollToPrompt(-1) },
+	{ key = "DownArrow", mods = "CTRL", action = act.ScrollToPrompt(1) },
+	{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
+	{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
+	{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },
+	{ key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(0.5) },
+	{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
+	{ key = "o", mods = "ALT", action = act.ActivateCommandPalette },
+	{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
+	{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
+	{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
+	{ key = "1", mods = "ALT", action = act.EmitEvent("activate-nvim") },
+	{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },
+	{ key = "3", mods = "ALT", action = act.EmitEvent("tab-3") },
+	{ key = "4", mods = "ALT", action = act.EmitEvent("tab-4") },
+	{ key = "5", mods = "ALT", action = act.EmitEvent("tab-5") },
+	{ key = "6", mods = "ALT", action = act.EmitEvent("tab-6") },
+	{ key = "7", mods = "ALT", action = act.EmitEvent("tab-7") },
+	{ key = "8", mods = "ALT", action = act.EmitEvent("tab-8") },
+	{ key = "9", mods = "ALT", action = act.EmitEvent("tab-9") },
+	{ key = "0", mods = "ALT", action = act.EmitEvent("tab-10") },
 }
 
 -- Mouse
 config.mouse_bindings = {
-  {
-    event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-    mods = "SHIFT",
-    action = act.ScrollByLine(-5),
-  },
-  {
-    event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-    mods = "SHIFT",
-    action = act.ScrollByLine(5),
-  },
-  {
-    event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-    action = act.ScrollByLine(-1),
-  },
-  {
-    event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-    action = act.ScrollByLine(1),
-  },
+	{
+		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
+		mods = "SHIFT",
+		action = act.ScrollByLine(-5),
+	},
+	{
+		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
+		mods = "SHIFT",
+		action = act.ScrollByLine(5),
+	},
+	{
+		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
+		action = act.ScrollByLine(-1),
+	},
+	{
+		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
+		action = act.ScrollByLine(1),
+	},
 }
 
 return config

From 3de78c65d8188485c5a5c47f1ade064379f5c539 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 2 Jul 2024 21:20:27 +0200
Subject: [PATCH 317/656] nix: no absolute path for binaries

---
 .local/share/applications/wezterm-nemo.desktop | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.local/share/applications/wezterm-nemo.desktop b/.local/share/applications/wezterm-nemo.desktop
index cc0a1d3..392778e 100644
--- a/.local/share/applications/wezterm-nemo.desktop
+++ b/.local/share/applications/wezterm-nemo.desktop
@@ -7,4 +7,4 @@ TryExec=/usr/bin/wezterm
 Icon=org.wezfurlong.wezterm
 Terminal=false
 Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-nemo --domain=nemo
+Exec=/usr/bin/wezterm --config 'default_prog={"fish"}' start --class=org.wezfurlong.wezterm-nemo --domain=nemo

From 678186627756e232405f4eb7aa5fefb27de84bd1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 5 Jul 2024 22:54:23 +0200
Subject: [PATCH 318/656] fish: fix zoxide config

---
 .config/fish/config.fish | 36 ------------------------------------
 1 file changed, 36 deletions(-)

diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 47a2eaf..00991a5 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -28,43 +28,7 @@ if status is-interactive
         eza --tree --color=always $argv | bat --wrap=never
     end
 
-<<<<<<< HEAD
-    ## Directory jumping with frecency 
-
-    function fre_after_cd --on-variable PWD
-        fre --add "$PWD"
-    end
-
-    function jump
-        set _dir $(fre --sorted | fzf --no-sort --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.hjson $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
-        [ -n "$_dir" ] && pushd $_dir >>/dev/null
-        commandline -f repaint
-    end
-    bind \cg jump
-||||||| parent of 931ae14 (fish: use zoxide instead of fre + fzf)
-    function rg --wraps rg --description 'ripgrep with bat'
-        /usr/bin/rg --color=always $argv | bat --wrap=never
-    end
-
-    ## Directory jumping with frecency 
-
-    function fre_after_cd --on-variable PWD
-        fre --add "$PWD"
-    end
-
-    function jump
-        set _dir $(fre --sorted | fzf --no-sort --border=rounded --layout=reverse '--bind=ctrl-g:become(br -f --conf ~/.config/broot/select.hjson $(git rev-parse --show-toplevel 2>/dev/null || pwd))')
-        [ -n "$_dir" ] && pushd $_dir >>/dev/null
-        commandline -f repaint
-    end
-    bind \cg jump
-=======
-    function rg --wraps rg --description 'ripgrep with bat'
-        /usr/bin/rg --color=always $argv | bat --wrap=never
-    end
-
     bind \cg __zoxide_zi
->>>>>>> 931ae14 (fish: use zoxide instead of fre + fzf)
 
     function git_jump
         set _dir $(git rev-parse --show-toplevel 2>/dev/null || pwd)

From 2f6d4e1d3c0a79e2260753b92ee0399ed759122b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 2 Aug 2024 11:12:36 +0200
Subject: [PATCH 319/656] Migrate to home-manager

---
 .config/alacritty/alacritty.yml               |   77 -
 .config/atuin/config.toml                     |  205 -
 .config/autostart/gnome-keyring-ssh.desktop   |  157 -
 .config/bat/config                            |    3 -
 .config/bat/themes/Catppuccin Mocha.tmTheme   | 2021 ---------
 .config/broot/conf.hjson                      |   40 -
 .config/broot/launcher/bash/br                |    1 -
 .config/broot/launcher/installed-v4           |    4 -
 .config/broot/select.hjson                    |   17 -
 .config/broot/skins/dieter-light.hjson        |   84 -
 .config/broot/verbs.hjson                     |  184 -
 .config/buildkit/buildkitd.toml               |    7 -
 .config/chrome-beta-flags.conf                |    1 -
 .config/contour/contour.yml                   |  769 ----
 .config/efm-langserver/config.yaml            |   14 -
 .config/environment.d/difftastic.conf         |    1 -
 .config/environment.d/docker.conf             |    1 -
 .config/environment.d/golang.conf             |    1 -
 .config/environment.d/mozilla.conf            |    2 -
 .config/environment.d/otel.conf               |    3 -
 .config/environment.d/ssh.conf                |    1 -
 .config/fish/conf.d/abbr.fish                 |    6 -
 .config/fish/conf.d/aliases.fish              |   10 -
 .config/fish/conf.d/prompt.fish               |   91 -
 .config/fish/conf.d/semantic-prompt.fish      |   56 -
 .config/fish/conf.d/task.fish                 |   37 -
 .config/fish/conf.d/zoxide.fish               |  100 -
 .config/fish/config.fish                      |   71 -
 .config/fish/fish_variables                   |   48 -
 .config/fish/themes/Catppuccin Mocha.theme    |   30 -
 .config/git/allowed_signers                   |    3 -
 .config/git/signing-key.sh                    |    3 -
 .config/helix/config.toml                     |   52 -
 .config/helix/languages.toml                  |   46 -
 .config/helix/themes/sumi-e.toml              |  193 -
 .config/k9s/config.yaml                       |   42 -
 .config/k9s/plugins.yaml                      |   22 -
 .config/k9s/skins/dieter.yaml                 |   76 -
 .config/nerdctl/nerdctl.toml                  |    3 -
 .config/nvim/lazyvim.json                     |   24 -
 .config/nvim/lua/plugins/editor.lua           |   71 -
 .config/nvim/lua/plugins/overseer.lua         |   90 -
 .config/nvim/spell/en.utf-8.add               |   10 -
 .config/nvim/spell/en.utf-8.add.spl           |  Bin 144 -> 0 bytes
 .config/paru/paru.conf                        |    8 -
 .config/rg/rg.conf                            |   10 -
 .config/sapling/sapling.conf                  |   22 -
 .config/starship.toml                         |   77 -
 .config/systemd/user/opener@.service          |   11 -
 .config/systemd/user/tmux.service             |   10 -
 .config/vconsole/personal.map                 |    3 -
 .config/zsh-abbr/user-abbreviations           |   13 -
 .envrc                                        |    2 +
 .gitconfig                                    |  150 -
 .gitignore                                    |   14 -
 .gnupg/gpg-agent.conf                         |    4 -
 .gnupg/gpg.conf                               |    2 -
 .inputrc                                      |   11 -
 .jjconfig.toml                                |   21 -
 .lessfilter                                   |   46 -
 .../share/applications/firefox-arity.desktop  |   13 -
 .../share/applications/firefox-work.desktop   |   13 -
 .../google-chrome-beta-client.desktop         |   11 -
 .../google-chrome-beta-private.desktop        |   11 -
 .../google-chrome-beta-work.desktop           |   11 -
 .local/share/applications/meet.desktop        |    9 -
 .local/share/applications/plex.desktop        |    9 -
 .local/share/applications/spotify.desktop     |   11 -
 .../wezterm-dev-secondary.desktop             |   10 -
 .local/share/applications/wezterm-dev.desktop |   10 -
 .../share/applications/wezterm-local.desktop  |   10 -
 .../share/applications/wezterm-nemo.desktop   |   10 -
 .../share/applications/youtube-music.desktop  |    9 -
 .ssh/config                                   |   35 -
 .ssh/rc                                       |    4 -
 .tmux.conf                                    |   96 -
 .vault                                        |    2 -
 README.md                                     |    3 +
 bin/git-st                                    |   36 -
 bin/git-wtf                                   |  364 --
 bin/ktoolbox                                  |    1 -
 bin/pst                                       |   15 -
 bin/starship-sl-status                        |   26 -
 bin/tmux-build-helper                         |    4 -
 bin/tmux-edit-helper                          |    1 -
 bin/tmux-edit-history                         |    4 -
 bin/tmux-hx-helper                            |   44 -
 bin/tmux-nvim-helper                          |   46 -
 bin/tmux-shortcut                             |   20 -
 bin/tpm2-pkcs11-init-ssh.sh                   |   24 -
 bin/url-copy                                  |    2 -
 bin/vault-token-helper.sh                     |   55 -
 bin/wezterm-edit-helper                       |   25 -
 bin/xdg-open                                  |   11 -
 common/atuin.nix                              |   40 +
 common/broot.nix                              |   63 +
 common/default.nix                            |   21 +
 common/devel.nix                              |   24 +
 common/fish.nix                               |  122 +
 common/gnome.nix                              |  194 +
 common/k8s.nix                                |  176 +
 common/nix.nix                                |   15 +
 common/nvim.nix                               |   19 +
 common/scripts.nix                            |   17 +
 common/ssh.nix                                |   14 +
 common/utils.nix                              |   60 +
 common/vcs.nix                                |  166 +
 common/web.nix                                |   22 +
 common/wezterm.nix                            |   11 +
 files/config/fish/config.fish                 |   59 +
 files/config/fish/go-task.fish                |   37 +
 files/config/fish/jj.fish                     |  338 ++
 files/config/fish/semantic-prompt.fish        |   55 +
 files/config/fish/vcs.fish                    |   72 +
 {.config => files/config}/nvim/init.lua       |    0
 .../config}/nvim/lua/config/autocmds.lua      |    0
 .../config}/nvim/lua/config/keymaps.lua       |    0
 .../config}/nvim/lua/config/lazy.lua          |   30 +-
 .../config}/nvim/lua/config/options.lua       |   22 -
 .../config}/nvim/lua/plugins/coding.lua       |    0
 .../config}/nvim/lua/plugins/colorscheme.lua  |    4 +-
 files/config/nvim/lua/plugins/editor.lua      |   95 +
 .../config}/nvim/lua/plugins/extras.lua       |    0
 .../config}/nvim/lua/plugins/formatting.lua   |    1 +
 .../config}/nvim/lua/plugins/incline.lua      |    0
 .../config}/nvim/lua/plugins/lsp.lua          |    0
 .../config}/nvim/lua/plugins/treesitter.lua   |    0
 .../config}/nvim/lua/plugins/ui.lua           |   18 +-
 {.config => files/config}/wezterm/wezterm.lua |   34 +-
 files/scripts/git-signing-key                 |    3 +
 {bin => files/scripts}/test-term.sh           |    4 +
 files/scripts/wezterm-open-url                |    4 +
 flake.lock                                    |   48 +
 flake.nix                                     |   72 +
 justfile                                      |   17 +
 overlays/default.nix                          |   21 +
 pkgs/default.nix                              |    5 +
 pkgs/gnome-ssh-askpass4/default.nix           |   48 +
 pkgs/jujutsu-openssh/Cargo.lock               | 3877 +++++++++++++++++
 pkgs/jujutsu-openssh/default.nix              |   90 +
 pkgs/lazyjj/default.nix                       |   29 +
 users/dln/desktop.nix                         |   67 +
 users/dln/dinky.nix                           |   14 +
 users/dln/home.nix                            |  140 +
 users/dln/nemo.nix                            |    9 +
 users/lsjostro/home.nix                       |   40 +
 users/lsjostro/nemo.nix                       |    6 +
 147 files changed, 6181 insertions(+), 6078 deletions(-)
 delete mode 100644 .config/alacritty/alacritty.yml
 delete mode 100644 .config/atuin/config.toml
 delete mode 100644 .config/autostart/gnome-keyring-ssh.desktop
 delete mode 100644 .config/bat/config
 delete mode 100644 .config/bat/themes/Catppuccin Mocha.tmTheme
 delete mode 100644 .config/broot/conf.hjson
 delete mode 120000 .config/broot/launcher/bash/br
 delete mode 100644 .config/broot/launcher/installed-v4
 delete mode 100644 .config/broot/select.hjson
 delete mode 100644 .config/broot/skins/dieter-light.hjson
 delete mode 100644 .config/broot/verbs.hjson
 delete mode 100644 .config/buildkit/buildkitd.toml
 delete mode 100644 .config/chrome-beta-flags.conf
 delete mode 100644 .config/contour/contour.yml
 delete mode 100644 .config/efm-langserver/config.yaml
 delete mode 100644 .config/environment.d/difftastic.conf
 delete mode 100644 .config/environment.d/docker.conf
 delete mode 100644 .config/environment.d/golang.conf
 delete mode 100644 .config/environment.d/mozilla.conf
 delete mode 100644 .config/environment.d/otel.conf
 delete mode 100644 .config/environment.d/ssh.conf
 delete mode 100644 .config/fish/conf.d/abbr.fish
 delete mode 100644 .config/fish/conf.d/aliases.fish
 delete mode 100644 .config/fish/conf.d/prompt.fish
 delete mode 100644 .config/fish/conf.d/semantic-prompt.fish
 delete mode 100644 .config/fish/conf.d/task.fish
 delete mode 100644 .config/fish/conf.d/zoxide.fish
 delete mode 100644 .config/fish/config.fish
 delete mode 100644 .config/fish/fish_variables
 delete mode 100644 .config/fish/themes/Catppuccin Mocha.theme
 delete mode 100644 .config/git/allowed_signers
 delete mode 100755 .config/git/signing-key.sh
 delete mode 100644 .config/helix/config.toml
 delete mode 100644 .config/helix/languages.toml
 delete mode 100644 .config/helix/themes/sumi-e.toml
 delete mode 100644 .config/k9s/config.yaml
 delete mode 100644 .config/k9s/plugins.yaml
 delete mode 100644 .config/k9s/skins/dieter.yaml
 delete mode 100644 .config/nerdctl/nerdctl.toml
 delete mode 100644 .config/nvim/lazyvim.json
 delete mode 100644 .config/nvim/lua/plugins/editor.lua
 delete mode 100644 .config/nvim/lua/plugins/overseer.lua
 delete mode 100644 .config/nvim/spell/en.utf-8.add
 delete mode 100644 .config/nvim/spell/en.utf-8.add.spl
 delete mode 100644 .config/paru/paru.conf
 delete mode 100644 .config/rg/rg.conf
 delete mode 100644 .config/sapling/sapling.conf
 delete mode 100644 .config/starship.toml
 delete mode 100644 .config/systemd/user/opener@.service
 delete mode 100644 .config/systemd/user/tmux.service
 delete mode 100644 .config/vconsole/personal.map
 delete mode 100644 .config/zsh-abbr/user-abbreviations
 create mode 100644 .envrc
 delete mode 100644 .gitconfig
 delete mode 100644 .gitignore
 delete mode 100644 .gnupg/gpg-agent.conf
 delete mode 100644 .gnupg/gpg.conf
 delete mode 100644 .inputrc
 delete mode 100644 .jjconfig.toml
 delete mode 100755 .lessfilter
 delete mode 100644 .local/share/applications/firefox-arity.desktop
 delete mode 100644 .local/share/applications/firefox-work.desktop
 delete mode 100644 .local/share/applications/google-chrome-beta-client.desktop
 delete mode 100644 .local/share/applications/google-chrome-beta-private.desktop
 delete mode 100644 .local/share/applications/google-chrome-beta-work.desktop
 delete mode 100644 .local/share/applications/meet.desktop
 delete mode 100644 .local/share/applications/plex.desktop
 delete mode 100644 .local/share/applications/spotify.desktop
 delete mode 100644 .local/share/applications/wezterm-dev-secondary.desktop
 delete mode 100644 .local/share/applications/wezterm-dev.desktop
 delete mode 100644 .local/share/applications/wezterm-local.desktop
 delete mode 100644 .local/share/applications/wezterm-nemo.desktop
 delete mode 100644 .local/share/applications/youtube-music.desktop
 delete mode 100644 .ssh/config
 delete mode 100755 .ssh/rc
 delete mode 100644 .tmux.conf
 delete mode 100644 .vault
 create mode 100644 README.md
 delete mode 100755 bin/git-st
 delete mode 100755 bin/git-wtf
 delete mode 120000 bin/ktoolbox
 delete mode 100755 bin/pst
 delete mode 100755 bin/starship-sl-status
 delete mode 100755 bin/tmux-build-helper
 delete mode 120000 bin/tmux-edit-helper
 delete mode 100755 bin/tmux-edit-history
 delete mode 100755 bin/tmux-hx-helper
 delete mode 100755 bin/tmux-nvim-helper
 delete mode 100755 bin/tmux-shortcut
 delete mode 100755 bin/tpm2-pkcs11-init-ssh.sh
 delete mode 100755 bin/url-copy
 delete mode 100755 bin/vault-token-helper.sh
 delete mode 100755 bin/wezterm-edit-helper
 delete mode 100755 bin/xdg-open
 create mode 100644 common/atuin.nix
 create mode 100644 common/broot.nix
 create mode 100644 common/default.nix
 create mode 100644 common/devel.nix
 create mode 100644 common/fish.nix
 create mode 100644 common/gnome.nix
 create mode 100644 common/k8s.nix
 create mode 100644 common/nix.nix
 create mode 100644 common/nvim.nix
 create mode 100644 common/scripts.nix
 create mode 100644 common/ssh.nix
 create mode 100644 common/utils.nix
 create mode 100644 common/vcs.nix
 create mode 100644 common/web.nix
 create mode 100644 common/wezterm.nix
 create mode 100644 files/config/fish/config.fish
 create mode 100644 files/config/fish/go-task.fish
 create mode 100644 files/config/fish/jj.fish
 create mode 100644 files/config/fish/semantic-prompt.fish
 create mode 100644 files/config/fish/vcs.fish
 rename {.config => files/config}/nvim/init.lua (100%)
 rename {.config => files/config}/nvim/lua/config/autocmds.lua (100%)
 rename {.config => files/config}/nvim/lua/config/keymaps.lua (100%)
 rename {.config => files/config}/nvim/lua/config/lazy.lua (57%)
 rename {.config => files/config}/nvim/lua/config/options.lua (60%)
 rename {.config => files/config}/nvim/lua/plugins/coding.lua (100%)
 rename {.config => files/config}/nvim/lua/plugins/colorscheme.lua (52%)
 create mode 100644 files/config/nvim/lua/plugins/editor.lua
 rename {.config => files/config}/nvim/lua/plugins/extras.lua (100%)
 rename {.config => files/config}/nvim/lua/plugins/formatting.lua (91%)
 rename {.config => files/config}/nvim/lua/plugins/incline.lua (100%)
 rename {.config => files/config}/nvim/lua/plugins/lsp.lua (100%)
 rename {.config => files/config}/nvim/lua/plugins/treesitter.lua (100%)
 rename {.config => files/config}/nvim/lua/plugins/ui.lua (90%)
 rename {.config => files/config}/wezterm/wezterm.lua (91%)
 create mode 100755 files/scripts/git-signing-key
 rename {bin => files/scripts}/test-term.sh (96%)
 create mode 100755 files/scripts/wezterm-open-url
 create mode 100644 flake.lock
 create mode 100644 flake.nix
 create mode 100644 justfile
 create mode 100644 overlays/default.nix
 create mode 100644 pkgs/default.nix
 create mode 100644 pkgs/gnome-ssh-askpass4/default.nix
 create mode 100644 pkgs/jujutsu-openssh/Cargo.lock
 create mode 100644 pkgs/jujutsu-openssh/default.nix
 create mode 100644 pkgs/lazyjj/default.nix
 create mode 100644 users/dln/desktop.nix
 create mode 100644 users/dln/dinky.nix
 create mode 100644 users/dln/home.nix
 create mode 100644 users/dln/nemo.nix
 create mode 100644 users/lsjostro/home.nix
 create mode 100644 users/lsjostro/nemo.nix

diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml
deleted file mode 100644
index eb8b30f..0000000
--- a/.config/alacritty/alacritty.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-window:
-  decorations: none
-  startup_mode: Maximized
-
-font:
-  normal:
-    family: Iosevka Term SS09
-    style: Regular
-
-  bold:
-    family: Iosevka Term SS09
-    style: Semibold
-
-  italic:
-    family: Iosevka Term Curly Slab
-    style: Light Italic
-
-  bold_italic:
-    family: Iosevka SS15
-    style: Extralight Italic
-
-  size: 10
-
-  offset:
-    x: 0
-    y: 3
-
-  glyph_offset:
-    x: 0
-    y: 2
-
-cursor:
-  # Values for `style`:
-  #   - ▇ Block
-  #   - _ Underline
-  #   - | Beam
-  style: Block
-  vi_mode_style: Beam
-  unfocused_hollow: true
-  thickness: 0.15
-
-mouse:
-  hide_when_typing: true
-  # url:
-  #   launcher:
-  #     program: /home/dln/bin/url-copy
-
-colors:
-  primary:
-    background: '#fcfcfc'
-    foreground: '#000000'
-
-  normal:
-    black:   '#212121'
-    red:     '#b7141e'
-    green:   '#457b23'
-    yellow:  '#f5971d'
-    blue:    '#134eb2'
-    magenta: '#550087'
-    cyan:    '#0e707c'
-    white:   '#eeeeee'
-  bright:
-    black:   '#424242'
-    red:     '#e83a3f'
-    green:   '#7aba39'
-    yellow:  '#fee92e'
-    blue:    '#53a4f3'
-    magenta: '#a94dbb'
-    cyan:    '#26bad1'
-    white:   '#d8d8d8'
-
-key_bindings:
-- { key: V, mods: Alt,       action: Paste }
-- { key: C, mods: Alt,       action: Copy  }
-- { key: V, mods: Shift|Alt, action: Paste }
-- { key: C, mods: Shift|Alt, action: Copy  }
-- { key: Return, mods: Alt, action: ToggleFullscreen  }
diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml
deleted file mode 100644
index 0768eb6..0000000
--- a/.config/atuin/config.toml
+++ /dev/null
@@ -1,205 +0,0 @@
-## where to store your database, default is your system data directory
-## linux/mac: ~/.local/share/atuin/history.db
-## windows: %USERPROFILE%/.local/share/atuin/history.db
-# db_path = "~/.history.db"
-
-## where to store your encryption key, default is your system data directory
-## linux/mac: ~/.local/share/atuin/key
-## windows: %USERPROFILE%/.local/share/atuin/key
-# key_path = "~/.key"
-
-## where to store your auth session token, default is your system data directory
-## linux/mac: ~/.local/share/atuin/session
-## windows: %USERPROFILE%/.local/share/atuin/session
-# session_path = "~/.session"
-
-## date format used, either "us" or "uk"
-# dialect = "us"
-
-## default timezone to use when displaying time
-## either "l", "local" to use the system's current local timezone, or an offset
-## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
-## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
-# timezone = "local"
-
-## enable or disable automatic sync
-# auto_sync = true
-
-## enable or disable automatic update checks
-# update_check = true
-
-## address of the sync server
-# sync_address = "https://api.atuin.sh"
-
-## how often to sync history. note that this is only triggered when a command
-## is ran, so sync intervals may well be longer
-## set it to 0 to sync after every command
-# sync_frequency = "10m"
-
-## which search mode to use
-## possible values: prefix, fulltext, fuzzy, skim
-# search_mode = "fuzzy"
-
-## which filter mode to use
-## possible values: global, host, session, directory
-# filter_mode = "global"
-#filter_mode = "session"
-
-## With workspace filtering enabled, Atuin will filter for commands executed
-## in any directory within a git repository tree (default: false)
-# workspaces = false
-# workspaces = true
-
-## which filter mode to use when atuin is invoked from a shell up-key binding
-## the accepted values are identical to those of "filter_mode"
-## leave unspecified to use same mode set in "filter_mode"
-# filter_mode_shell_up_key_binding = "global"
-filter_mode_shell_up_key_binding = "session"
-
-## which search mode to use when atuin is invoked from a shell up-key binding
-## the accepted values are identical to those of "search_mode"
-## leave unspecified to use same mode set in "search_mode"
-# search_mode_shell_up_key_binding = "fuzzy"
-search_mode_shell_up_key_binding = "prefix"
-
-## which style to use
-## possible values: auto, full, compact
-# style = "auto"
-style = "compact"
-
-## the maximum number of lines the interface should take up
-## set it to 0 to always go full screen
-# inline_height = 0
-inline_height = 6
-
-## Invert the UI - put the search bar at the top , Default to `false`
-# invert = false
-# invert = true
-
-## enable or disable showing a preview of the selected command
-## useful when the command is longer than the terminal width and is cut off
-# show_preview = false
-
-## what to do when the escape key is pressed when searching
-## possible values: return-original, return-query
-# exit_mode = "return-original"
-
-## possible values: emacs, subl
-# word_jump_mode = "emacs"
-
-## characters that count as a part of a word
-# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-
-## number of context lines to show when scrolling by pages
-# scroll_context_lines = 1
-
-## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
-## alt-0 .. alt-9
-# ctrl_n_shortcuts = false
-
-ctrl_n_shortcuts = true
-
-## default history list format - can also be specified with the --format arg
-# history_format = "{time}\t{command}\t{duration}"
-
-## prevent commands matching any of these regexes from being written to history.
-## Note that these regular expressions are unanchored, i.e. if they don't start
-## with ^ or end with $, they'll match anywhere in the command.
-## For details on the supported regular expression syntax, see
-## https://docs.rs/regex/latest/regex/#syntax
-# history_filter = [
-#   "^secret-cmd",
-#   "^innocuous-cmd .*--secret=.+"
-# ]
-
-history_filter = []
-
-## prevent commands run with cwd matching any of these regexes from being written
-## to history. Note that these regular expressions are unanchored, i.e. if they don't
-## start with ^ or end with $, they'll match anywhere in CWD.
-## For details on the supported regular expression syntax, see
-## https://docs.rs/regex/latest/regex/#syntax
-# cwd_filter = [
-#   "^/very/secret/area"
-# ]
-
-cwd_filter = ["^~/media", "^/home/dln/media"]
-
-## Configure the maximum height of the preview to show.
-## Useful when you have long scripts in your history that you want to distinguish
-## by more than the first few lines.
-# max_preview_height = 4
-
-## Configure whether or not to show the help row, which includes the current Atuin
-## version (and whether an update is available), a keymap hint, and the total
-## amount of commands in your history.
-# show_help = true
-show_help = false
-
-## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
-## 1. AWS key id
-## 2. Github pat (old and new)
-## 3. Slack oauth tokens (bot, user)
-## 4. Slack webhooks
-## 5. Stripe live/test keys
-# secrets_filter = true
-
-## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
-# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
-# enter_accept = false
-enter_accept = true
-
-
-## Defaults to "emacs".  This specifies the keymap on the startup of `atuin
-## search`.  If this is set to "auto", the startup keymap mode in the Atuin
-## search is automatically selected based on the shell's keymap where the
-## keybinding is defined.  If this is set to "emacs", "vim-insert", or
-## "vim-normal", the startup keymap mode in the Atuin search is forced to be
-## the specified one.
-# keymap_mode = "auto"
-
-## Cursor style in each keymap mode.  If specified, the cursor style is changed
-## in entering the cursor shape.  Available values are "default" and
-## "{blink,steady}-{block,underilne,bar}".
-# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
-
-# network_connect_timeout = 5
-# network_timeout = 5
-
-## Timeout (in seconds) for acquiring a local database connection (sqlite)
-# local_timeout = 5
-
-## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc. 
-## Alternatively, set env NO_MOTION=true
-# prefers_reduced_motion = false
-
-prefers_reduced_motion = true
-
-#[stats]
-# Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
-#common_subcommands = [
-#  "cargo",
-#  "go",
-#  "git",
-#  "npm",
-#  "yarn",
-#  "pnpm",
-#  "kubectl",
-#]
-
-[stats]
-common_subcommands = [
-  "cargo",
-  "go",
-  "git",
-  "nix",
-  "npm",
-  "yarn",
-  "pnpm",
-  "kubectl",
-  "task",
-]
-# Set commands that should be totally stripped and ignored from stats
-#common_prefix = ["sudo"]
-#
-common_prefix = ["doas", "sudo"]
diff --git a/.config/autostart/gnome-keyring-ssh.desktop b/.config/autostart/gnome-keyring-ssh.desktop
deleted file mode 100644
index d0cbed2..0000000
--- a/.config/autostart/gnome-keyring-ssh.desktop
+++ /dev/null
@@ -1,157 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name[af]=SSH-sleutelagent
-Name[ar]=عميل مفاتيح SSH
-Name[as]=SSH কি সহায়ক
-Name[ast]=Axente de claves SSH
-Name[be]=SSH-агент ключоў
-Name[bg]=Агентът на SSH за ключове
-Name[bn]=SSH কী এজেন্ট
-Name[bn_IN]=SSH কি এজেন্ট
-Name[bs]=Agent za SSH ključeve
-Name[ca]=Agent de claus SSH
-Name[ca@valencia]=Agent de claus SSH
-Name[cs]=Agent klíčů SSH
-Name[da]=SSH-nøgleagent
-Name[de]=SSH-Schlüsselagent
-Name[el]=Πράκτορας κλειδιού SSH
-Name[en_GB]=SSH Key Agent
-Name[eo]=SSH-ŝlosila agento
-Name[es]=Agente de claves SSH
-Name[et]=SSH-võtmete agent
-Name[eu]=SSH gako-agentea
-Name[fa]=عامل کلید SSH
-Name[fi]=SSH-avainten agentti
-Name[fr]=Agent de clés SSH
-Name[fur]=Agjent clâfs SSH
-Name[gd]=Àidseant iuchair SSH
-Name[gl]=Axente de chave SSH
-Name[gu]=SSH કી ઍજન્ટ
-Name[he]=סוכן מפתחות SSH
-Name[hi]=AFS कुँजी प्रतिनिधि
-Name[hr]=Agent SSH ključa
-Name[hu]=SSH-kulcs ügynök
-Name[id]=Agen Kunci SSH
-Name[it]=Agente chiavi SSH
-Name[ja]=SSH 鍵エージェント
-Name[kk]=SSH кілттер агенті
-Name[km]=ភ្នាក់ងារ​សោ SSH
-Name[kn]=SSH ಕೀಲಿ ಮಧ್ಯವರ್ತಿ
-Name[ko]=SSH 키 에이전트
-Name[lt]=SSH raktų tarnyba
-Name[lv]=SSH atslēgu aģents
-Name[mjw]=SSH Key Agent
-Name[mk]=Агент за SSH клучеви
-Name[ml]=എസ്എസ്എച് കീ ഏജന്റ്
-Name[mr]=SSH कि एजंट
-Name[ms]=Ejen Kunci SSH
-Name[nb]=SSH-nøkkelagent
-Name[nl]=SSH-sleutelagent
-Name[nn]=Nøkkelagent for SSH
-Name[oc]=Agent de claus SSH
-Name[or]=SSH କି ସଦସ୍ୟ
-Name[pa]=SSH ਕੁੰਜੀ ਏਜੰਟ
-Name[pl]=Agent kluczy SSH
-Name[pt]=Agente de chaves SSH
-Name[pt_BR]=Agente de chaves SSH
-Name[ro]=Agent pentru chei SSH
-Name[ru]=Агент ключей SSH
-Name[sk]=Agent kľúčov SSH
-Name[sl]=Agent ključev SSH
-Name[sr]=Агент за ССХ кључеве
-Name[sr@latin]=Agent za SSH ključeve
-Name[sv]=SSH-nyckelagent
-Name[ta]=SSH முகவர்
-Name[te]=SSH కీ వాహకము
-Name[th]=เอเจนต์กุญแจ SSH
-Name[tr]=SSH Anahtar Aracı
-Name[ug]=SSH  ئاچقۇچ ياردەمچىسى
-Name[uk]=Агент ключів SSH
-Name[vi]=Đại diện khóa SSH
-Name[zh_CN]=SSH 密钥代理
-Name[zh_HK]=SSH 密碼匙代理程式
-Name[zh_TW]=SSH 金鑰代理程式
-Name=SSH Key Agent
-Comment[af]=GNOME-sleutelring: SSH-agent
-Comment[ar]=حلقة مفاتيح جنوم: عميل SSH
-Comment[as]=GNOME Keyring: SSH সহায়ক
-Comment[ast]=Depósitu de claves de GNOME: axente SSH
-Comment[be]=Вязкі ключоў GNOME: SSH-агент
-Comment[bg]=Ключодържател на GNOME: агент на SSH
-Comment[bn]=GNOME কী রিং: SSH এজেন্ট
-Comment[bn_IN]=GNOME Keyring: SSH এজেন্ট
-Comment[bs]=Gnomovi privjesci: SSH agent
-Comment[ca]=Anell de claus del GNOME: agent SSH
-Comment[ca@valencia]=Anell de claus del GNOME: agent SSH
-Comment[cs]=Klíčenka GNOME: Agent SSH
-Comment[da]=GNOME-nøgleringsdæmon: SSH-agent
-Comment[de]=GNOME-Schlüsselbunddienst: SSH-Agent
-Comment[el]=Κλειδοθήκη GNOME: Πράκτορας SSH
-Comment[en_GB]=GNOME Keyring: SSH Agent
-Comment[eo]=GNOME Ŝlosilaro: SSH-agento
-Comment[es]=Depósito de claves de GNOME: agente SSH
-Comment[et]=GNOME võtmerõngas: SSH-agent
-Comment[eu]=GNOMEren gako-sorta: SSH agentea
-Comment[fa]=دسته‌کلید گنوم: عامل SSH
-Comment[fi]=Gnomen avainnippu: SSH-agentti
-Comment[fr]=Trousseau de clés de GNOME : agent SSH
-Comment[fur]=Puarteclâfs di GNOME: agjent SSH
-Comment[gd]=Dul-iuchrach: Àidseant SSH
-Comment[gl]=GNOME Keyring: Axente SSH
-Comment[gu]=GNOME કીરીંગ: SSH ઍજન્ટ
-Comment[he]=קבוצת מפתחות של GNOME: סוכן SSH
-Comment[hi]=गनोम कीरिंग: SSH प्रतिनिधि
-Comment[hr]=GNOME skup ključeva: SSH agent
-Comment[hu]=GNOME kulcstartó – SSH-ügynök
-Comment[id]=Ring Kunci GNOME: Agen SSH
-Comment[it]=Portachiavi di GNOME: agente SSH
-Comment[ja]=GNOME キーリング: SSH エージェント
-Comment[kk]=GNOME Keyring: SSH агенті
-Comment[km]=GNOME Keyring ៖ ភ្នាក់ងារ SSH
-Comment[kn]=GNOME ಕೀಲಿಗೊಂಚಲು: SSH ಮಧ್ಯವರ್ತಿ
-Comment[ko]=그놈 키 모음: SSH 에이전트
-Comment[lt]=GNOME raktinė: SSH tarnyba
-Comment[lv]=GNOME atslēgu saišķis — SSH aģents
-Comment[mjw]=GNOME Keyring: SSH Agent
-Comment[mk]=Приврзок на GNOME: SSH агент
-Comment[ml]=ഗ്നോം കീറിങ്: എസ്എസ്എച് ഏജന്റ്
-Comment[mr]=GNOME किरिंग: SSH एजंट
-Comment[ms]=Gelang Kunci GNOME: Ejen SSH
-Comment[nb]=GNOME nøkkelring: SSH-agent
-Comment[ne]=जिनोम किरिङ : SSH एजेन्ट
-Comment[nl]=Sleutelbos-service: SSH-agent
-Comment[nn]=GNOME Nøkkelring: SSH-agent
-Comment[oc]=Trossèl de claus GNOME : agent SSH
-Comment[or]=GNOME କି ରିଙ୍ଗ: SSH ସଦସ୍ୟ
-Comment[pa]=ਗਨੋਮ ਕੀਰਿੰਗ: SSH ਏਜੰਟ
-Comment[pl]=Baza kluczy dla środowiska GNOME: agent SSH
-Comment[pt]=GNOME Keyring: agente SSH
-Comment[pt_BR]=Chaveiro do GNOME: Agente SSH
-Comment[ro]=Inelul de chei GNOME: Agent SSH
-Comment[ru]=Связка ключей GNOME: SSH-агент
-Comment[sk]=SSH agent zväzku kľúčov GNOME
-Comment[sl]=Zbirka ključev GNOME: agent SSH
-Comment[sr]=Гномови привесци: ССХ агент
-Comment[sr@latin]=Gnomovi privesci: SSH agent
-Comment[sv]=GNOME-nyckelring: SSH-agent
-Comment[ta]=GNOME கீரிங்: SSH முகவர்
-Comment[te]=GNOME కీరింగ్: SSH వాహకం
-Comment[th]=พวงกุญแจของ GNOME: เอเจนต์ SSH
-Comment[tr]=GNOME Anahtarlığı: SSH Aracı
-Comment[ug]=گىنوم ئاچقۇچ ھالقىسى:SSH  ياردەمچىسى
-Comment[uk]=Служба в'язки ключів GNOME: агент SSH
-Comment[vi]=Chùm chìa khóa GNOME: Đại diện SSH
-Comment[zh_CN]=GNOME 密钥环:SSH 代理
-Comment[zh_HK]=GNOME 密碼匙圈:SSH 代理程式
-Comment[zh_TW]=GNOME 鑰匙圈:SSH 代理程式
-Comment=GNOME Keyring: SSH Agent
-Exec=/usr/bin/gnome-keyring-daemon --start --components=ssh
-OnlyShowIn=GNOME;Unity;MATE;Cinnamon;
-X-GNOME-Autostart-Phase=PreDisplayServer
-X-GNOME-AutoRestart=false
-X-GNOME-Autostart-Notify=true
-X-GNOME-Bugzilla-Bugzilla=GNOME
-X-GNOME-Bugzilla-Product=gnome-keyring
-X-GNOME-Bugzilla-Component=general
-X-GNOME-Bugzilla-Version=42.1
-Hidden=true
diff --git a/.config/bat/config b/.config/bat/config
deleted file mode 100644
index 609fc6e..0000000
--- a/.config/bat/config
+++ /dev/null
@@ -1,3 +0,0 @@
---italic-text=always
---plain
---theme=ansi
diff --git a/.config/bat/themes/Catppuccin Mocha.tmTheme b/.config/bat/themes/Catppuccin Mocha.tmTheme
deleted file mode 100644
index 332cc98..0000000
--- a/.config/bat/themes/Catppuccin Mocha.tmTheme	
+++ /dev/null
@@ -1,2021 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-  <dict>
-    <key>name</key>
-    <string>Catppuccin Mocha</string>
-    <key>semanticClass</key>
-    <string>theme.dark.catppuccin-mocha</string>
-    <key>uuid</key>
-    <string>627ce890-fabb-4d39-9819-7be71f4bdca7</string>
-    <key>author</key>
-    <string>Catppuccin Org</string>
-    <key>colorSpaceName</key>
-    <string>sRGB</string>
-    <key>settings</key>
-    <array>
-      <dict>
-        <key>settings</key>
-        <dict>
-          <key>background</key>
-          <string>#1e1e2e</string>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-          <key>caret</key>
-          <string>#f5e0dc</string>
-          <key>lineHighlight</key>
-          <string>#cdd6f412</string>
-          <key>misspelling</key>
-          <string>#f38ba8</string>
-          <key>accent</key>
-          <string>#cba6f7</string>
-          <key>selection</key>
-          <string>#9399b240</string>
-          <key>activeGuide</key>
-          <string>#45475a</string>
-          <key>findHighlight</key>
-          <string>#3e5767</string>
-          <key>gutterForeground</key>
-          <string>#7f849c</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Basic text &amp; variable names (incl. leading punctuation)</string>
-        <key>scope</key>
-        <string>text, source, variable.other.readwrite, punctuation.definition.variable</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cccccc</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Parentheses, Brackets, Braces</string>
-        <key>scope</key>
-        <string>punctuation</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#9399b2</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Comments</string>
-        <key>scope</key>
-        <string>comment, punctuation.definition.comment</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#6c7086</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>string, punctuation.definition.string</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6e3a1</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>constant.character.escape</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Booleans, constants, numbers</string>
-        <key>scope</key>
-        <string>constant.numeric, variable.other.constant, entity.name.constant, constant.language.boolean, constant.language.false, constant.language.true, keyword.other.unit.user-defined, keyword.other.unit.suffix.floating-point</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>keyword, keyword.operator.word, keyword.operator.new, variable.language.super, support.type.primitive, storage.type, storage.modifier, punctuation.definition.keyword</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>entity.name.tag.documentation</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Punctuation</string>
-        <key>scope</key>
-        <string>keyword.operator, punctuation.accessor, punctuation.definition.generic, meta.function.closure punctuation.section.parameters, punctuation.definition.tag, punctuation.separator.key-value</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>entity.name.function, meta.function-call.method, support.function, support.function.misc, variable.function</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Classes</string>
-        <key>scope</key>
-        <string>entity.name.class, entity.other.inherited-class, support.class, meta.function-call.constructor, entity.name.struct</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Enum</string>
-        <key>scope</key>
-        <string>entity.name.enum</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Enum member</string>
-        <key>scope</key>
-        <string>meta.enum variable.other.readwrite, variable.other.enummember</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Object properties</string>
-        <key>scope</key>
-        <string>meta.property.object</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Types</string>
-        <key>scope</key>
-        <string>meta.type, meta.type-alias, support.type, entity.name.type</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Decorators</string>
-        <key>scope</key>
-        <string>meta.annotation variable.function, meta.annotation variable.annotation.function, meta.annotation punctuation.definition.annotation, meta.decorator, punctuation.decorator</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>variable.parameter, meta.function.parameters</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Built-ins</string>
-        <key>scope</key>
-        <string>constant.language, support.function.builtin</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>entity.other.attribute-name.documentation</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Preprocessor directives</string>
-        <key>scope</key>
-        <string>keyword.control.directive, punctuation.definition.directive</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Type parameters</string>
-        <key>scope</key>
-        <string>punctuation.definition.typeparameters</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89dceb</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Namespaces</string>
-        <key>scope</key>
-        <string>entity.name.namespace</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Property names (left hand assignments in json/yaml/css)</string>
-        <key>scope</key>
-        <string>support.type.property-name.css</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>This/Self keyword</string>
-        <key>scope</key>
-        <string>variable.language.this, variable.language.this punctuation.definition.variable</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Object properties</string>
-        <key>scope</key>
-        <string>variable.object.property</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>String template interpolation</string>
-        <key>scope</key>
-        <string>string.template variable, string variable</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>`new` as bold</string>
-        <key>scope</key>
-        <string>keyword.operator.new</string>
-        <key>settings</key>
-        <dict>
-          <key>fontStyle</key>
-          <string>bold</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>C++ extern keyword</string>
-        <key>scope</key>
-        <string>storage.modifier.specifier.extern.cpp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>C++ scope resolution</string>
-        <key>scope</key>
-        <string>entity.name.scope-resolution.template.call.cpp, entity.name.scope-resolution.parameter.cpp, entity.name.scope-resolution.cpp, entity.name.scope-resolution.function.definition.cpp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>C++ doc keywords</string>
-        <key>scope</key>
-        <string>storage.type.class.doxygen</string>
-        <key>settings</key>
-        <dict>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>C++ operators</string>
-        <key>scope</key>
-        <string>storage.modifier.reference.cpp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>C# Interpolated Strings</string>
-        <key>scope</key>
-        <string>meta.interpolation.cs</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>C# xml-style docs</string>
-        <key>scope</key>
-        <string>comment.block.documentation.cs</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Classes, reflecting the className color in JSX</string>
-        <key>scope</key>
-        <string>source.css entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Operators</string>
-        <key>scope</key>
-        <string>punctuation.separator.operator.css</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Pseudo classes</string>
-        <key>scope</key>
-        <string>source.css entity.other.attribute-name.pseudo-class</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>source.css constant.other.unicode-range</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>source.css variable.parameter.url</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6e3a1</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>CSS vendored property names</string>
-        <key>scope</key>
-        <string>support.type.vendored.property-name</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89dceb</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Less/SCSS right-hand variables (@/$-prefixed)</string>
-        <key>scope</key>
-        <string>source.css meta.property-value variable, source.css meta.property-value variable.other.less, source.css meta.property-value variable.other.less punctuation.definition.variable.less, meta.definition.variable.scss</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>CSS variables (--prefixed)</string>
-        <key>scope</key>
-        <string>source.css meta.property-list variable, meta.property-list variable.other.less, meta.property-list variable.other.less punctuation.definition.variable.less</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>CSS Percentage values, styled the same as numbers</string>
-        <key>scope</key>
-        <string>keyword.other.unit.percentage.css</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>CSS Attribute selectors, styled the same as strings</string>
-        <key>scope</key>
-        <string>source.css meta.attribute-selector</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6e3a1</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>JSON/YAML keys, other left-hand assignments</string>
-        <key>scope</key>
-        <string>keyword.other.definition.ini, punctuation.support.type.property-name.json, support.type.property-name.json, punctuation.support.type.property-name.toml, support.type.property-name.toml, entity.name.tag.yaml, punctuation.support.type.property-name.yaml, support.type.property-name.yaml</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>JSON/YAML constants</string>
-        <key>scope</key>
-        <string>constant.language.json, constant.language.yaml</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>YAML anchors</string>
-        <key>scope</key>
-        <string>entity.name.type.anchor.yaml, variable.other.alias.yaml</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>TOML tables / ini groups</string>
-        <key>scope</key>
-        <string>support.type.property-name.table, entity.name.section.group-title.ini</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>TOML dates</string>
-        <key>scope</key>
-        <string>constant.other.time.datetime.offset.toml</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>YAML anchor puctuation</string>
-        <key>scope</key>
-        <string>punctuation.definition.anchor.yaml, punctuation.definition.alias.yaml</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>YAML triple dashes</string>
-        <key>scope</key>
-        <string>entity.other.document.begin.yaml</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markup Diff</string>
-        <key>scope</key>
-        <string>markup.changed.diff</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Diff</string>
-        <key>scope</key>
-        <string>meta.diff.header.from-file, meta.diff.header.to-file, punctuation.definition.from-file.diff, punctuation.definition.to-file.diff</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Diff Inserted</string>
-        <key>scope</key>
-        <string>markup.inserted.diff</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6e3a1</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Diff Deleted</string>
-        <key>scope</key>
-        <string>markup.deleted.diff</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>dotenv left-hand side assignments</string>
-        <key>scope</key>
-        <string>variable.other.env</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>dotenv reference to existing env variable</string>
-        <key>scope</key>
-        <string>string.quoted variable.other.env</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>GDScript functions</string>
-        <key>scope</key>
-        <string>support.function.builtin.gdscript</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>GDScript constants</string>
-        <key>scope</key>
-        <string>constant.language.gdscript</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Comment keywords</string>
-        <key>scope</key>
-        <string>comment meta.annotation.go</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>go:embed, go:build, etc.</string>
-        <key>scope</key>
-        <string>comment meta.annotation.parameters.go</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Go constants (nil, true, false)</string>
-        <key>scope</key>
-        <string>constant.language.go</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>GraphQL variables</string>
-        <key>scope</key>
-        <string>variable.graphql</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>GraphQL aliases</string>
-        <key>scope</key>
-        <string>string.unquoted.alias.graphql</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f2cdcd</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>GraphQL enum members</string>
-        <key>scope</key>
-        <string>constant.character.enum.graphql</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>GraphQL field in types</string>
-        <key>scope</key>
-        <string>meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f2cdcd</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>HTML/XML DOCTYPE as keyword</string>
-        <key>scope</key>
-        <string>keyword.other.doctype, meta.tag.sgml.doctype punctuation.definition.tag, meta.tag.metadata.doctype entity.name.tag, meta.tag.metadata.doctype punctuation.definition.tag</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>HTML/XML-like &lt;tags/&gt;</string>
-        <key>scope</key>
-        <string>entity.name.tag</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Special characters like &amp;amp;</string>
-        <key>scope</key>
-        <string>text.html constant.character.entity, text.html constant.character.entity punctuation, constant.character.entity.xml, constant.character.entity.xml punctuation, constant.character.entity.js.jsx, constant.charactger.entity.js.jsx punctuation, constant.character.entity.tsx, constant.character.entity.tsx punctuation</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>HTML/XML tag attribute values</string>
-        <key>scope</key>
-        <string>entity.other.attribute-name</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Components</string>
-        <key>scope</key>
-        <string>support.class.component, support.class.component.jsx, support.class.component.tsx, support.class.component.vue</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Annotations</string>
-        <key>scope</key>
-        <string>punctuation.definition.annotation, storage.type.annotation</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Java enums</string>
-        <key>scope</key>
-        <string>constant.other.enum.java</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Java imports</string>
-        <key>scope</key>
-        <string>storage.modifier.import.java</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Javadoc</string>
-        <key>scope</key>
-        <string>comment.block.javadoc.java keyword.other.documentation.javadoc.java</string>
-        <key>settings</key>
-        <dict>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Exported Variable</string>
-        <key>scope</key>
-        <string>meta.export variable.other.readwrite.js</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>JS/TS constants &amp; properties</string>
-        <key>scope</key>
-        <string>variable.other.constant.js, variable.other.constant.ts, variable.other.property.js, variable.other.property.ts</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>JSDoc; these are mainly params, so styled as such</string>
-        <key>scope</key>
-        <string>variable.other.jsdoc, comment.block.documentation variable.other</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>JSDoc keywords</string>
-        <key>scope</key>
-        <string>storage.type.class.jsdoc</string>
-        <key>settings</key>
-        <dict>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>support.type.object.console.js</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Node constants as keywords (module, etc.)</string>
-        <key>scope</key>
-        <string>support.constant.node, support.type.object.module.js</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>implements as keyword</string>
-        <key>scope</key>
-        <string>storage.modifier.implements</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Builtin types</string>
-        <key>scope</key>
-        <string>constant.language.null.js, constant.language.null.ts, constant.language.undefined.js, constant.language.undefined.ts, support.type.builtin.ts</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>variable.parameter.generic</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Arrow functions</string>
-        <key>scope</key>
-        <string>keyword.declaration.function.arrow.js, storage.type.function.arrow.ts</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach)</string>
-        <key>scope</key>
-        <string>punctuation.decorator.ts</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Extra JS/TS keywords</string>
-        <key>scope</key>
-        <string>keyword.operator.expression.in.js, keyword.operator.expression.in.ts, keyword.operator.expression.infer.ts, keyword.operator.expression.instanceof.js, keyword.operator.expression.instanceof.ts, keyword.operator.expression.is, keyword.operator.expression.keyof.ts, keyword.operator.expression.of.js, keyword.operator.expression.of.ts, keyword.operator.expression.typeof.ts</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Julia macros</string>
-        <key>scope</key>
-        <string>support.function.macro.julia</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Julia language constants (true, false)</string>
-        <key>scope</key>
-        <string>constant.language.julia</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Julia other constants (these seem to be arguments inside arrays)</string>
-        <key>scope</key>
-        <string>constant.other.symbol.julia</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>LaTeX preamble</string>
-        <key>scope</key>
-        <string>text.tex keyword.control.preamble</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>LaTeX be functions</string>
-        <key>scope</key>
-        <string>text.tex support.function.be</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89dceb</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>LaTeX math</string>
-        <key>scope</key>
-        <string>constant.other.general.math.tex</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f2cdcd</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Lua docstring keywords</string>
-        <key>scope</key>
-        <string>comment.line.double-dash.documentation.lua storage.type.annotation.lua</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Lua docstring variables</string>
-        <key>scope</key>
-        <string>comment.line.double-dash.documentation.lua entity.name.variable.lua, comment.line.double-dash.documentation.lua variable.lua</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>heading.1.markdown punctuation.definition.heading.markdown, heading.1.markdown, markup.heading.atx.1.mdx, markup.heading.atx.1.mdx punctuation.definition.heading.mdx, markup.heading.setext.1.markdown, markup.heading.heading-0.asciidoc</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>heading.2.markdown punctuation.definition.heading.markdown, heading.2.markdown, markup.heading.atx.2.mdx, markup.heading.atx.2.mdx punctuation.definition.heading.mdx, markup.heading.setext.2.markdown, markup.heading.heading-1.asciidoc</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>heading.3.markdown punctuation.definition.heading.markdown, heading.3.markdown, markup.heading.atx.3.mdx, markup.heading.atx.3.mdx punctuation.definition.heading.mdx, markup.heading.heading-2.asciidoc</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>heading.4.markdown punctuation.definition.heading.markdown, heading.4.markdown, markup.heading.atx.4.mdx, markup.heading.atx.4.mdx punctuation.definition.heading.mdx, markup.heading.heading-3.asciidoc</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6e3a1</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>heading.5.markdown punctuation.definition.heading.markdown, heading.5.markdown, markup.heading.atx.5.mdx, markup.heading.atx.5.mdx punctuation.definition.heading.mdx, markup.heading.heading-4.asciidoc</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>heading.6.markdown punctuation.definition.heading.markdown, heading.6.markdown, markup.heading.atx.6.mdx, markup.heading.atx.6.mdx punctuation.definition.heading.mdx, markup.heading.heading-5.asciidoc</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>markup.bold</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-          <key>fontStyle</key>
-          <string>bold</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>markup.italic</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>markup.strikethrough</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6adc8</string>
-          <key>fontStyle</key>
-          <string>strikethrough</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markdown auto links</string>
-        <key>scope</key>
-        <string>punctuation.definition.link, markup.underline.link</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markdown links</string>
-        <key>scope</key>
-        <string>text.html.markdown punctuation.definition.link.title, string.other.link.title.markdown, markup.link, punctuation.definition.constant.markdown, constant.other.reference.link.markdown, markup.substitution.attribute-reference</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#b4befe</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markdown code spans</string>
-        <key>scope</key>
-        <string>punctuation.definition.raw.markdown, markup.inline.raw.string.markdown, markup.raw.block.markdown</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6e3a1</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markdown triple backtick language identifier</string>
-        <key>scope</key>
-        <string>fenced_code.block.language</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89dceb</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markdown triple backticks</string>
-        <key>scope</key>
-        <string>markup.fenced_code.block punctuation.definition, markup.raw support.asciidoc</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#9399b2</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markdown quotes</string>
-        <key>scope</key>
-        <string>markup.quote, punctuation.definition.quote.begin</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markdown separators</string>
-        <key>scope</key>
-        <string>meta.separator.markdown</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Markdown list bullets</string>
-        <key>scope</key>
-        <string>punctuation.definition.list.begin.markdown, markup.list.bullet</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Nix attribute names</string>
-        <key>scope</key>
-        <string>entity.other.attribute-name.multipart.nix, entity.other.attribute-name.single.nix</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Nix parameter names</string>
-        <key>scope</key>
-        <string>variable.parameter.name.nix</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Nix interpolated parameter names</string>
-        <key>scope</key>
-        <string>meta.embedded variable.parameter.name.nix</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#b4befe</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Nix paths</string>
-        <key>scope</key>
-        <string>string.unquoted.path.nix</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>PHP Attributes</string>
-        <key>scope</key>
-        <string>support.attribute.builtin, meta.attribute.php</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>PHP Parameters (needed for the leading dollar sign)</string>
-        <key>scope</key>
-        <string>meta.function.parameters.php punctuation.definition.variable.php</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>PHP Constants (null, __FILE__, etc.)</string>
-        <key>scope</key>
-        <string>constant.language.php</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>PHP functions</string>
-        <key>scope</key>
-        <string>text.html.php support.function</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89dceb</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>PHPdoc keywords</string>
-        <key>scope</key>
-        <string>keyword.other.phpdoc.php</string>
-        <key>settings</key>
-        <dict>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Python argument functions reset to text, otherwise they inherit blue from function-call</string>
-        <key>scope</key>
-        <string>support.variable.magic.python, meta.function-call.arguments.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Python double underscore functions</string>
-        <key>scope</key>
-        <string>support.function.magic.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89dceb</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Python `self` keyword</string>
-        <key>scope</key>
-        <string>variable.parameter.function.language.special.self.python, variable.language.special.self.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>python keyword flow/logical (for ... in)</string>
-        <key>scope</key>
-        <string>keyword.control.flow.python, keyword.operator.logical.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>python storage type</string>
-        <key>scope</key>
-        <string>storage.type.function.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>python function support</string>
-        <key>scope</key>
-        <string>support.token.decorator.python, meta.function.decorator.identifier.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89dceb</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>python function calls</string>
-        <key>scope</key>
-        <string>meta.function-call.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>python function decorators</string>
-        <key>scope</key>
-        <string>entity.name.function.decorator.python, punctuation.definition.decorator.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>python placeholder reset to normal string</string>
-        <key>scope</key>
-        <string>constant.character.format.placeholder.other.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Python exception &amp; builtins such as exit()</string>
-        <key>scope</key>
-        <string>support.type.exception.python, support.function.builtin.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>entity.name.type</string>
-        <key>scope</key>
-        <string>support.type.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>python constants (True/False)</string>
-        <key>scope</key>
-        <string>constant.language.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Arguments accessed later in the function body</string>
-        <key>scope</key>
-        <string>meta.indexed-name.python, meta.item-access.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Python f-strings/binary/unicode storage types</string>
-        <key>scope</key>
-        <string>storage.type.string.python</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6e3a1</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Python type hints</string>
-        <key>scope</key>
-        <string>meta.function.parameters.python</string>
-        <key>settings</key>
-        <dict>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex string begin/end in JS/TS</string>
-        <key>scope</key>
-        <string>string.regexp punctuation.definition.string.begin, string.regexp punctuation.definition.string.end</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex anchors (^, $)</string>
-        <key>scope</key>
-        <string>keyword.control.anchor.regexp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex regular string match</string>
-        <key>scope</key>
-        <string>string.regexp.ts</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex group parenthesis &amp; backreference (\1, \2, \3, ...)</string>
-        <key>scope</key>
-        <string>punctuation.definition.group.regexp, keyword.other.back-reference.regexp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#a6e3a1</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex character class []</string>
-        <key>scope</key>
-        <string>punctuation.definition.character-class.regexp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex character classes (\d, \w, \s)</string>
-        <key>scope</key>
-        <string>constant.other.character-class.regexp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex range</string>
-        <key>scope</key>
-        <string>constant.other.character-class.range.regexp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5e0dc</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex quantifier</string>
-        <key>scope</key>
-        <string>keyword.operator.quantifier.regexp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex constant/numeric</string>
-        <key>scope</key>
-        <string>constant.character.numeric.regexp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds</string>
-        <key>scope</key>
-        <string>punctuation.definition.group.no-capture.regexp, meta.assertion.look-ahead.regexp, meta.assertion.negative-look-ahead.regexp</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust attribute</string>
-        <key>scope</key>
-        <string>meta.annotation.rust, meta.annotation.rust punctuation, meta.attribute.rust, punctuation.definition.attribute.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust attribute strings</string>
-        <key>scope</key>
-        <string>meta.attribute.rust string.quoted.double.rust, meta.attribute.rust string.quoted.single.char.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust keyword</string>
-        <key>scope</key>
-        <string>entity.name.function.macro.rules.rust, storage.type.module.rust, storage.modifier.rust, storage.type.struct.rust, storage.type.enum.rust, storage.type.trait.rust, storage.type.union.rust, storage.type.impl.rust, storage.type.rust, storage.type.function.rust, storage.type.type.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust u/i32, u/i64, etc.</string>
-        <key>scope</key>
-        <string>entity.name.type.numeric.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-          <key>fontStyle</key>
-          <string/>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust generic</string>
-        <key>scope</key>
-        <string>meta.generic.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust impl</string>
-        <key>scope</key>
-        <string>entity.name.impl.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust module</string>
-        <key>scope</key>
-        <string>entity.name.module.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust trait</string>
-        <key>scope</key>
-        <string>entity.name.trait.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust struct</string>
-        <key>scope</key>
-        <string>storage.type.source.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust union</string>
-        <key>scope</key>
-        <string>entity.name.union.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f9e2af</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust enum member</string>
-        <key>scope</key>
-        <string>meta.enum.rust storage.type.source.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust macro</string>
-        <key>scope</key>
-        <string>support.macro.rust, meta.macro.rust support.function.rust, entity.name.function.macro.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust lifetime</string>
-        <key>scope</key>
-        <string>storage.modifier.lifetime.rust, entity.name.type.lifetime</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust string formatting</string>
-        <key>scope</key>
-        <string>string.quoted.double.rust constant.other.placeholder.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust return type generic</string>
-        <key>scope</key>
-        <string>meta.function.return-type.rust meta.generic.rust storage.type.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust functions</string>
-        <key>scope</key>
-        <string>meta.function.call.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust angle brackets</string>
-        <key>scope</key>
-        <string>punctuation.brackets.angle.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89dceb</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust constants</string>
-        <key>scope</key>
-        <string>constant.other.caps.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust function parameters</string>
-        <key>scope</key>
-        <string>meta.function.definition.rust variable.other.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#eba0ac</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust closure variables</string>
-        <key>scope</key>
-        <string>meta.function.call.rust variable.other.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust self</string>
-        <key>scope</key>
-        <string>variable.language.self.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Rust metavariable names</string>
-        <key>scope</key>
-        <string>variable.other.metavariable.name.rust, meta.macro.metavariable.rust keyword.operator.macro.dollar.rust</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Shell shebang</string>
-        <key>scope</key>
-        <string>comment.line.shebang, comment.line.shebang punctuation.definition.comment, comment.line.shebang, punctuation.definition.comment.shebang.shell, meta.shebang.shell</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Shell shebang command</string>
-        <key>scope</key>
-        <string>comment.line.shebang constant.language</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Shell interpolated command</string>
-        <key>scope</key>
-        <string>meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation, meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f38ba8</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Shell interpolated command variable</string>
-        <key>scope</key>
-        <string>meta.string meta.interpolation.parameter.shell variable.other.readwrite</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#fab387</string>
-          <key>fontStyle</key>
-          <string>italic</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>source.shell punctuation.section.interpolation, punctuation.definition.evaluation.backticks.shell</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#94e2d5</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Shell EOF</string>
-        <key>scope</key>
-        <string>entity.name.tag.heredoc.shell</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>name</key>
-        <string>Shell quoted variable</string>
-        <key>scope</key>
-        <string>string.quoted.double.shell variable.other.normal.shell</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cdd6f4</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>markup.heading.synopsis.man, markup.heading.title.man, markup.heading.other.man, markup.heading.env.man</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#cba6f7</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>markup.heading.commands.man</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#89b4fa</string>
-        </dict>
-      </dict>
-      <dict>
-        <key>scope</key>
-        <string>markup.heading.env.man</string>
-        <key>settings</key>
-        <dict>
-          <key>foreground</key>
-          <string>#f5c2e7</string>
-        </dict>
-      </dict>
-    </array>
-  </dict>
-</plist>
diff --git a/.config/broot/conf.hjson b/.config/broot/conf.hjson
deleted file mode 100644
index c74318c..0000000
--- a/.config/broot/conf.hjson
+++ /dev/null
@@ -1,40 +0,0 @@
-show_selection_mark: true
-true_colors: true
-icon_theme: nerdfont
-
-special_paths: {
-    "/media" : {
-        list: "never"
-        sum: "never"
-    }
-    "~/.config": { "show": "always" }
-    "trav": {
-        show: always
-        list: "always",
-        sum: "never"
-    }
-    # "~/useless": { "show": "never" }
-    # "~/my-link-I-want-to-explore": { "list": "always" }
-}
-
-quit_on_last_cancel: true
-content_search_max_file_size: 10MB
-enable_kitty_keyboard: true
-lines_before_match_in_preview: 1
-lines_after_match_in_preview: 1
-
-imports: [
-    verbs.hjson
-
-    {
-        luma: dark
-        file: skins/dieter-dark.hjson
-    }
-    {
-        luma: [ 
-          light 
-          unknown 
-        ]
-        file: skins/dieter-light.hjson
-    }
-]
diff --git a/.config/broot/launcher/bash/br b/.config/broot/launcher/bash/br
deleted file mode 120000
index c577ca3..0000000
--- a/.config/broot/launcher/bash/br
+++ /dev/null
@@ -1 +0,0 @@
-/home/dln/.local/share/broot/launcher/bash/1
\ No newline at end of file
diff --git a/.config/broot/launcher/installed-v4 b/.config/broot/launcher/installed-v4
deleted file mode 100644
index 3f026af..0000000
--- a/.config/broot/launcher/installed-v4
+++ /dev/null
@@ -1,4 +0,0 @@
-
-This file tells broot the installation of the br function was done.
-If there's a problem and you want to install it again run
-    broot -- install
diff --git a/.config/broot/select.hjson b/.config/broot/select.hjson
deleted file mode 100644
index 20ec81d..0000000
--- a/.config/broot/select.hjson
+++ /dev/null
@@ -1,17 +0,0 @@
-verbs: [
-  {
-    invocation: "ok"
-      key: "enter"
-      leave_broot: true
-      execution: ":print_path"
-      apply_to: "directory"
-  }
-
-  {
-    invocation: "broot_home"
-      keys: ["ctrl-7", "ctrl-g"]
-      execution: "broot -f --conf ~/.config/broot/select.hjson $HOME"
-      leave_broot: true
-  }
-]
-
diff --git a/.config/broot/skins/dieter-light.hjson b/.config/broot/skins/dieter-light.hjson
deleted file mode 100644
index ad61918..0000000
--- a/.config/broot/skins/dieter-light.hjson
+++ /dev/null
@@ -1,84 +0,0 @@
-###############################################################
-# A skin for a terminal with a white background
-#
-# To create your own skin, copy this file, change the entries
-# and import your skin file from the main conf file (look
-# for "imports")
-#
-# Doc at https://dystroy.org/broot/skins/
-###############################################################
-syntax_theme: base16-ocean.light
-
-skin: {
-	default: gray(0) None
-	tree: gray(20) None / gray(18) None
-	file: gray(1) None / gray(8) None
-	directory: gray(4) None Bold / ansi(4) None
-	exe: ansi(130) None
-	link: Magenta None
-	pruning: gray(12) None Italic
-	perm__: gray(5) None
-	perm_r: ansi(94) None
-	perm_w: ansi(132) None
-	perm_x: ansi(65) None
-	owner: ansi(138) None
-	group: ansi(131) None
-	dates: ansi(66) None
-	sparse: ansi(214) None
-	git_branch: ansi(229) None
-	git_insertions: ansi(28) None
-	git_deletions: ansi(160) None
-	git_status_current: gray(5) None
-	git_status_modified: ansi(28) None
-	git_status_new: ansi(94) None Bold
-	git_status_ignored: gray(17) None
-	git_status_conflicted: ansi(88) None
-	git_status_other: ansi(88) None
-  selected_line: None gray(20)
-	char_match: None ansi(226)
-	file_error: Red None
-	flag_label: gray(9) None
-	flag_value: ansi(166) None Bold
-	input: gray(1) None / gray(4) gray(20)
-	status_error: gray(22) ansi(124)
-	status_normal: gray(2) gray(20)
-	status_job: ansi(220) gray(5)
-	status_italic: ansi(166) gray(20)
-	status_bold: ansi(166) gray(20)
-	status_code: ansi(17) gray(20)
-	status_ellipsis: gray(19) gray(15)
-	purpose_normal: gray(20) gray(2)
-	purpose_italic: ansi(178) gray(2)
-	purpose_bold: ansi(178) gray(2) Bold
-	purpose_ellipsis: gray(20) gray(2)
-	scrollbar_track: gray(20) none
-	scrollbar_thumb: ansi(238) none
-	help_paragraph: gray(2) none
-	help_bold: ansi(202) none bold
-	help_italic: ansi(202) none italic
-	help_code: gray(5) gray(22)
-	help_headers: ansi(202) none
-	help_table_border: ansi(239) None
-	preview_title: gray(3) None / gray(5) None
-	preview: gray(5) gray(23) / gray(7) gray(23)
-	preview_line_number: gray(6) gray(20)
-	preview_separator: gray(7) None / gray(18) None
-	preview_match: None ansi(29) Underlined
-	hex_null: gray(15) None
-	hex_ascii_graphic: gray(2) None
-	hex_ascii_whitespace: ansi(143) None
-	hex_ascii_other: ansi(215) None
-	hex_non_ascii: ansi(167) None
-	staging_area_title: gray(8) None / gray(13) None
-	mode_command_mark: gray(15) ansi(204) Bold
-	good_to_bad_0: ansi(28)
-	good_to_bad_1: ansi(29)
-	good_to_bad_2: ansi(29)
-	good_to_bad_3: ansi(29)
-	good_to_bad_4: ansi(29)
-	good_to_bad_5: ansi(100)
-	good_to_bad_6: ansi(136)
-	good_to_bad_7: ansi(172)
-	good_to_bad_8: ansi(166)
-	good_to_bad_9: ansi(196)
-}
diff --git a/.config/broot/verbs.hjson b/.config/broot/verbs.hjson
deleted file mode 100644
index da78ce8..0000000
--- a/.config/broot/verbs.hjson
+++ /dev/null
@@ -1,184 +0,0 @@
-###############################################################
-# This file contains the verb definitions for broot
-#
-# Some verbs here are examples and not enabled by default: you
-#  need to uncomment them if you want to use them.
-#
-# Documentation at https://dystroy.org/broot/verbs/
-###############################################################
-
-verbs: [
-  {
-      invocation: edit
-      key: enter
-      shortcut: e
-      execution: "wezterm-edit-helper {file}"
-      apply_to: text_file
-      leave_broot: true
-  }
-
-    {
-        invocation: nvim
-        key: enter
-        apply_to: text_file
-        execution: "wezterm-edit-helper {file}"
-        leave_broot: true
-    }
-
-    {
-        invocation: broot_home
-        key: ctrl-7
-        execution: br $HOME
-        leave_broot: true
-    }
-
-    # You should customize this standard opening of text files.
-    # If you edit text files in your terminal (vi, emacs, helix, eg.), then
-    #  you'll find it convenient to change the 'key' from 'ctrl-e' to 'enter'.
-    #
-    # If $EDITOR isn't set on your computer, you should either set it using
-    #  something similar to
-    #    export EDITOR=/usr/local/bin/nvim
-    #  or just replace it with your editor of choice in the 'execution'
-    #  pattern.
-    # If your editor is able to open a file on a specific line, use {line}
-    #  so that you may jump directly at the right line from a preview or
-    #  a content search.
-    # Examples depending on your favourite editor:
-    #    execution: "nvim +{line} {file}"
-    #    execution: "helix {file}:{line}"
-    {
-        invocation: edit
-        shortcut: e
-        key: ctrl-e
-        apply_to: text_file
-        execution: "$EDITOR {file}"
-        leave_broot: false
-    }
-
-    # Example 1: launching `tail -n` on the selected file (leaving broot)
-    # {
-    #     name: tail_lines
-    #     invocation: tl {lines_count}
-    #     execution: "tail -f -n {lines_count} {file}"
-    # }
-
-    # Example 2: creating a new file without leaving broot
-    # {
-    #     name: touch
-    #     invocation: touch {new_file}
-    #     execution: "touch {directory}/{new_file}"
-    #     leave_broot: false
-    # }
-
-    # A convenient shortcut to create new text files in
-    #  the current directory or below
-    {
-        invocation: create {subpath}
-        execution: "$EDITOR {directory}/{subpath}"
-        leave_broot: false
-    }
-
-    {
-        invocation: git_diff
-        shortcut: gd
-        leave_broot: false
-        execution: "git difftool -y {file}"
-    }
-
-    # On ctrl-b, propose the creation of a copy of the selection.
-    # While this might occasionally be useful, this verb is mostly here
-    # as an example to demonstrate rare standard groups like {file-stem}
-    # and {file-dot-extension} and the auto_exec verb property which
-    # allows verbs to stay unexecuted until you hit enter
-    {
-        invocation: "backup {version}"
-        key: ctrl-b
-        leave_broot: false
-        auto_exec: false
-        execution: "cp -r {file} {parent}/{file-stem}-{version}{file-dot-extension}"
-    }
-
-    # By default, `rm` does the system rm, and completely removes
-    # the file. If you prefer to have the file moved to the system
-    # trash, you may use the ':trash' internal with the verb below:
-    # {
-    #     invocation: "rm"
-    #     internal: "trash"
-    #     leave_broot: false
-    # }
-
-    # This verb lets you launch a terminal on ctrl-T
-    # (on exit you'll be back in broot)
-    {
-        invocation: terminal
-        key: ctrl-t
-        execution: "$SHELL"
-        set_working_dir: true
-        leave_broot: false
-    }
-
-    # Here's an example of a verb needing the shell capabilities.
-    # It copies all children of the currently selected directory
-    #  to a destination you type.
-    # It uses a star, which needs the shell for expansion. That's
-    #  why such verb must have the `from_shell: true` parameter.
-    # {
-    #     invocation: "cpa {dest}"
-    #     external: "cp -r {directory}/* {dest}"
-    #     from_shell: true
-    # }
-
-    # Here's an example of a shortcut bringing you to your home directory
-    # {
-    #     invocation: home
-    #     key: ctrl-home
-    #     execution: ":focus ~"
-    # }
-
-    # Here's going to the work-dir root of the current git repository
-    # {
-    #     invocation: gtr
-    #     execution: ":focus {git-root}"
-    # }
-
-    # A popular set of shortcuts for going up and down:
-    #
-    # {
-    #     key: ctrl-k
-    #     execution: ":line_up"
-    # }
-    # {
-    #     key: ctrl-j
-    #     execution: ":line_down"
-    # }
-    # {
-    #     key: ctrl-u
-    #     execution: ":page_up"
-    # }
-    # {
-    #     key: ctrl-d
-    #     execution: ":page_down"
-    # }
-
-    # If you develop using git, you might like to often switch
-    # to the git status filter:
-    # {
-    #     key: alt-g
-    #     execution: ":toggle_git_status"
-    # }
-
-    # You can reproduce the bindings of Norton Commander
-    # on copying or moving to the other panel:
-    # {
-    #     key: F5
-    #     external: "cp -r {file} {other-panel-directory}"
-    #     leave_broot: false
-    # }
-    # {
-    #     key: F6
-    #     external: "mv {file} {other-panel-directory}"
-    #     leave_broot: false
-    # }
-]
-
diff --git a/.config/buildkit/buildkitd.toml b/.config/buildkit/buildkitd.toml
deleted file mode 100644
index b273b2b..0000000
--- a/.config/buildkit/buildkitd.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[worker.oci]
-  enabled = false
-
-[worker.containerd]
-  enabled = true
-  rootless = true
-  address = "/run/user/1000/containerd/containerd.sock"
diff --git a/.config/chrome-beta-flags.conf b/.config/chrome-beta-flags.conf
deleted file mode 100644
index e77a043..0000000
--- a/.config/chrome-beta-flags.conf
+++ /dev/null
@@ -1 +0,0 @@
---enable-features=OzonePlatform --ozone-platform=wayland
diff --git a/.config/contour/contour.yml b/.config/contour/contour.yml
deleted file mode 100644
index 8955087..0000000
--- a/.config/contour/contour.yml
+++ /dev/null
@@ -1,769 +0,0 @@
-# Default Contour Configuration File.
-
-# Overrides the auto-detected platform plugin to be loaded.
-#
-# Possible (incomplete list of) values are:
-# - auto        The platform will be auto-detected.
-# - xcb         Uses XCB plugin (for X11 environment).
-# - cocoa       Used to be run on Mac OS/X.
-# - direct2d    Windows platform plugin using Direct2D.
-# - winrt       Windows platform plugin using WinRT.
-#
-# Default: auto
-platform_plugin: auto
-
-# VT Renderer configuration.
-# ADVANCED! Do not touch unless you know what you are doing.
-renderer:
-  # Backend to use for rendering the terminal onto the screen
-  #
-  # Possible values are:
-  # - default     Uses the default rendering option as decided by the terminal.
-  # - software    Uses software-based rendering.
-  # - OpenGL      Use (possibly) hardware accelerated OpenGL
-  backend: OpenGL
-
-  # Number of hashtable slots to map to the texture tiles.
-  # Larger values may increase performance, but too large may also decrease.
-  # This value is rounded up to a value equal to the power of two.
-  #
-  # Default: 4096
-  tile_hashtable_slots: 4096
-
-  # Number of tiles that must fit at lest into the texture atlas.
-  #
-  # This does not include direct mapped tiles (US-ASCII glyphs,
-  # cursor shapes and decorations), if tile_direct_mapping is set to true).
-  #
-  # Value must be at least as large as grid cells available in the terminal view.
-  # This value is automatically adjusted if too small.
-  #
-  # Default: 4000
-  tile_cache_count: 4000
-
-  # Enables/disables the use of direct-mapped texture atlas tiles for
-  # the most often used ones (US-ASCII, cursor shapes, underline styles)
-  # You most likely do not want to touch this.
-  #
-  # Default: true
-  tile_direct_mapping: true
-
-# Word delimiters when selecting word-wise.
-word_delimiters: " /\\()\"'-.,:;<>~!@#$%^&*+=[]{}~?|│"
-
-# Default PTY read buffer size.
-#
-# This is an advance option. Use with care!
-# Default: 16384
-read_buffer_size: 16384
-
-# Size in bytes per PTY Buffer Object.
-#
-# This is an advanced option of an internal storage. Only change with care!
-pty_buffer_size: 1048576
-
-default_profile: main
-
-# Flag to determine whether to spawn new process or not when creating new terminal
-# Default: false
-spawn_new_process: false
-
-# Whether or not to reflow the lines on terminal resize events.
-# Default: true
-reflow_on_resize: true
-
-# Section of experimental features.
-# All experimental features are disabled by default and must be explicitly enabled here.
-# NOTE: Contour currently has no experimental features behind this configuration wall.
-# experimental:
-#     # Enables experimental support for feature X/Y/Z
-#     feature_xyz: true
-
-# This keyboard modifier can be used to bypass the terminal's mouse protocol,
-# which can be used to select screen content even if the an application
-# mouse protocol has been activated (Default: Shift).
-#
-# The same modifier values apply as with input modifiers (see below).
-bypass_mouse_protocol_modifier: Shift
-
-# Modifier to be pressed in order to initiate block-selection
-# using the left mouse button.
-#
-# This is usually the Control modifier, but on OS/X that is not possible,
-# so Alt or Meta would be recommended instead.
-#
-# Supported modifiers:
-# - Alt
-# - Control
-# - Shift
-# - Meta
-#
-# Default: Control
-mouse_block_selection_modifier: Control
-
-# Selects an action to perform when a text selection has been made.
-#
-# Possible values are:
-#
-# - None                        Does nothing
-# - CopyToClipboard             Copies the selection to the primary clipboard.
-# - CopyToSelectionClipboard    Copies the selection to the selection clipboard.
-#                               This is not supported on all platforms.
-#
-# Default: CopyToSelectionClipboard
-on_mouse_select: CopyToSelectionClipboard
-
-# Determines whether the instance is reloading the configuration files whenever it is changing or not.
-#
-# Default: false
-live_config: false
-
-# Inline image related default configuration and limits
-# -----------------------------------------------------
-images:
-  # Enable or disable sixel scrolling (SM/RM ?80 default)
-  sixel_scrolling: true
-  # Configures the maximum number of color registers available when rendering Sixel graphics.
-  sixel_register_count: 4096
-  # maximum width in pixels of an image to be accepted (0 defaults to system screen pixel width)
-  max_width: 0
-  # maximum height in pixels of an image to be accepted (0 defaults to system screen pixel height)
-  max_height: 0
-
-# Terminal Profiles
-# -----------------
-#
-# Dominates how your terminal visually looks like. You will need at least one terminal profile.
-profiles:
-  main:
-    # You can override the process to be started inside the terminal.
-    # If nothing is specified, the users' default login shell will be used.
-    # But you may as well log in to a remote host.
-    # shell: "ssh ubuntu-vm"
-    # shell: "/bin/bash"
-    # arguments: ["some", "optional", "arguments", "for", "the", "shell"]
-
-    # If this terminal is being executed from within Flatpak, enforces sandboxing
-    # then this boolean indicates whether or not that sandbox should be escaped or not.
-    #
-    # Default value is true.
-    #
-    # It only makes sense to set this value to false if you really know what you are doing.
-    escape_sandbox: true
-
-    # Advanced value that is useful when CopyPreviousMarkRange is used
-    # with multiline-prompts. This offset value is being added to the
-    # current cursor's line number minus 1 (i.e. the line above the current cursor).
-    #
-    # Default value is 0.
-    copy_last_mark_range_offset: 0
-
-    # Sets initial working directory when spawning a new terminal.
-    # A leading ~ is expanded to the user's home directory.
-    # Default value is the user's home directory.
-    initial_working_directory: "~"
-
-    # When this profile is *activated*, this flag decides
-    # whether or not the title bar will be shown
-    show_title_bar: false
-    # When this profile is being *activated*, this flag decides
-    # whether or not to put the terminal's screen into fullscreen mode.
-    #
-    # It is activated during startup as well as when switching from another profile to this one.
-    fullscreen: false
-
-    # When this profile is *activated*, this flag decides
-    # whether or not to put the window into maximized mode.
-    maximized: false
-
-    # Defines the class part of the WM_CLASS property of the window.
-    wm_class: "contour"
-
-    # Environment variables to be passed to the shell.
-    # environment:
-    #     TERM: contour
-    #     COLORTERM: truecolor
-
-    # Determines the terminal type that is being advertised.
-    # Possible values are:
-    #   - VT100
-    #   - VT220
-    #   - VT240
-    #   - VT330
-    #   - VT340
-    #   - VT320
-    #   - VT420
-    #   - VT510
-    #   - VT520
-    #   - VT525
-    # Default: VT525
-    terminal_id: VT525
-
-    # Determines the initial terminal size in characters.
-    terminal_size:
-      columns: 80
-      lines: 25
-
-    history:
-      # Number of lines to preserve (-1 for infinite).
-      limit: 1000
-      # Boolean indicating whether or not to scroll down to the bottom on screen updates.
-      auto_scroll_on_update: true
-      # Number of lines to scroll on ScrollUp & ScrollDown events.
-      # Default: 3
-      scroll_multiplier: 3
-
-    # visual scrollbar support
-    scrollbar:
-      # scroll bar position: Left, Right, Hidden (ignore-case)
-      position: Hidden
-      # whether or not to hide the scrollbar when in alt-screen.
-      hide_in_alt_screen: true
-
-    # mouse setting
-    mouse:
-      # whether or not to hide mouse when typing
-      #
-      # Default value: true
-      hide_while_typing: true
-
-    # Some VT sequences should need access permissions.
-    #
-    # These can be to:
-    # - allow     Allows the given functionality
-    # - deny      Denies the given functionality
-    # - ask       Asks the user interactively via popup dialog for permission of the given action.
-    #
-    # Default for all of these entries should be: "ask".
-    permissions:
-      # Allows changing the font via `OSC 50 ; Pt ST`.
-      change_font: ask
-      # Allows capturing the screen buffer via `CSI > Pm ; Ps ; Pc ST`.
-      # The response can be read from stdin as sequence `OSC 314 ; <screen capture> ST`
-      capture_buffer: ask
-      # Allows displaying the "Host Writable Statusline" programmatically using `DECSSDT 2`.
-      display_host_writable_statusline: ask
-
-    # If enabled, and you double-click on a word in the primary screen,
-    # all other words matching this word will be highlighted as well.
-    # So the double-clicked word will be selected as well as highlighted, along with
-    # all other words being simply highlighted.
-    #
-    # This is currently implemented by initiating a search on the double-clicked word.
-    # Therefore one can even use FocusNextSearchMatch and FocusPreviousSearchMatch to
-    # jump to the next/previous same word, also outside of the current viewport.
-    #
-    # Default: true
-    highlight_word_and_matches_on_double_click: true
-
-    # Font related configuration (font face, styles, size, rendering mode).
-    font:
-      # Initial font size in pixels.
-      size: 20
-
-      # DPI scaling factor applied on top of the system configured on (default: 1.0).
-      dpi_scale: 1.0
-
-      # Font Locator API
-      # Selects an engine to use for locating font files on the system.
-      # This is implicitly also responsible for font fallback
-      # Possible values are:
-      # - native          : automatically choose the best available on the current platform
-      # - fontconfig      : uses fontconfig to select fonts
-      # - CoreText        : uses OS/X CoreText to select fonts.
-      # - DirectWrite     : selects DirectWrite engine (Windows only)
-      locator: native
-
-      # Text shaping related settings
-      text_shaping:
-        # Selects which text shaping and font rendering engine to use.
-        # Supported values are:
-        # - native      : automatically choose the best available on the current platform.
-        # - DirectWrite : selects DirectWrite engine (Windows only)
-        # - CoreText    : selects CoreText engine (Mac OS/X only) (currently not implemented)
-        # - OpenShaper  : selects OpenShaper (harfbuzz/freetype/fontconfig, available on all
-        #                 platforms)
-        engine: native
-
-      # Uses builtin textures for pixel-perfect box drawing.
-      # If disabled, the font's provided box drawing characters
-      # will be used (Default: true).
-      builtin_box_drawing: true
-
-      # Font render modes tell the font rasterizer engine what rendering technique to use.
-      #
-      # Modes available are:
-      # - lcd          Uses a subpixel rendering technique optimized for LCD displays.
-      # - light        Uses a subpixel rendering technique in gray-scale.
-      # - gray         Uses standard gray-scaled anti-aliasing.
-      # - monochrome   Uses pixel-perfect bitmap rendering.
-      render_mode: gray
-
-      # Indicates whether or not to include *only* monospace fonts in the font and
-      # font-fallback list (Default: true).
-      strict_spacing: false
-
-      # Font family to use for displaying text.
-      #
-      # A font can be either described in detail as below or as a
-      # simple string value (e.g. "monospace" with the appropriate
-      # weight/slant applied automatically).
-      regular:
-        # Font family defines the font family name, such as:
-        # Fira Code", "Courier New", or "monospace" (default).
-        family: "Iosevka Term SS09 Light"
-
-        # Font weight can be one of:
-        #   thin, extra_light, light, demilight, book, normal,
-        #   medium, demibold, bold, extra_bold, black, extra_black.
-        weight: light
-
-        # Font slant can be one of: normal, italic, oblique.
-        slant: normal
-
-        # Set of optional font features to be enabled. This
-        # is usually a 4-letter code, such as ss01 or ss02 etc.
-        #
-        # Please see your font's documentation to find out what it
-        # supports.
-        #
-        # Default: []
-        features: [ss09]
-
-      # If bold/italic/bold_italic are not explicitly specified, the regular font with
-      # the respective weight and slant will be used.
-      bold:
-        family: "Iosevka Term SS09"
-        features: [ss09]
-        weight: demibold
-      italic:
-        family: "Iosevka Term Curly Slab"
-        weight: light
-        slant: italic
-      bold_italic:
-        family: "Iosevka Term Curly Slab Ex"
-        weight: regular
-        slant: italic
-      #bold: "Hack"
-      #italic: "Hack"
-      #bold_italic: "Hack"
-
-      # This is a special font to be used for displaying unicode symbols
-      # that are to be rendered in emoji presentation.
-      # Defaults to "emoji".
-      emoji: "Noto Color Emoji"
-
-    # Indicates whether or not bold text should be rendered in bright colors,
-    # for indexed colors.
-    #
-    # If disabled, normal color will be used instead.
-    #
-    # Default: false
-    draw_bold_text_with_bright_colors: false
-
-    # Terminal cursor display configuration
-    cursor:
-      # Supported shapes are:
-      #
-      # - block         a filled rectangle
-      # - rectangle     just the outline of a block
-      # - underscore    a line under the text
-      # - bar:          the well known i-Beam
-      shape: "bar"
-      # Determines whether or not the cursor will be blinking over time.
-      blinking: false
-      # Blinking interval (in milliseconds) to use when cursor is blinking.
-      blinking_interval: 500
-
-    # vi-like normal-mode specific settings.
-    # Note, currently only the cursor can be customized.
-    normal_mode:
-      cursor:
-        shape: block
-        blinking: false
-        blinking_interval: 500
-
-    # vi-like visual/visual-line/visual-block mode specific settings.
-    # Note, currently only the cursor can be customized.
-    visual_mode:
-      cursor:
-        shape: block
-        blinking: false
-        blinking_interval: 500
-
-    # Time duration in milliseconds for which yank highlight is shown.
-    vi_mode_highlight_timeout: 300
-
-    # Configures a `scrolloff` for cursor movements in normal and visual (block) modes.
-    #
-    # Default: 8
-    vi_mode_scrolloff: 8
-
-    status_line:
-      # Either none or indicator.
-      # This only reflects the initial state of the status line, as it can
-      # be changed at any time during runtime by the user or by an application.
-      display: none
-
-      # Position to place the status line to, if it is to be shown.
-      # This can be either value `top` or value `bottom`.
-      # Default: bottom
-      position: bottom
-
-      # Synchronize the window title with the Host Writable status_line if
-      # and only if the host writable status line was denied to be shown.
-      # Default: false
-      sync_to_window_title: false
-
-    # Background configuration
-    background:
-      # Background opacity to use. A value of 1.0 means fully opaque whereas 0.0 means fully
-      # transparent. Only values between 0.0 and 1.0 are allowed.
-      opacity: 1.0
-      # Some platforms can blur the transparent background (currently only Windows 10 is supported).
-      blur: false
-
-    # Specifies a colorscheme to use (alternatively the colors can be inlined).
-    colors: "default"
-
-    # Hyperlinks (via OSC-8) can be stylized and colorized on hover.
-    hyperlink_decoration:
-      normal: dotted
-      hover: underline
-
-# Color Profiles
-# --------------
-#
-# Here you can configure your color profiles, whereas a color can be expressed in standard web format,
-# with a leading # followed by red/green/blue values, 7 characters in total.
-# You may alternatively use 0x as prefix instead of #.
-# For example 0x102030 is equal to '#102030'.
-color_schemes:
-  default:
-    # Default colors
-    default:
-      # Default background color (this can be made transparent, see above).
-      background: "#11171d"
-      # Default foreground text color.
-      foreground: "#e3e0cd"
-
-    # Background image support.
-    background_image:
-      # Full path to the image to use as background.
-      #
-      # Default: empty string (disabled)
-      # path: '/Users/trapni/Pictures/bg.png'
-
-      # Image opacity to be applied to make the image not look to intense
-      # and not get too distracted by the background image.
-      # Default: 0.5
-      opacity: 0.5
-
-      # Optionally blurs background image to make it less distracting
-      # and keep the focus on the actual terminal contents.
-      #
-      # Default: false
-      blur: false
-
-    # Mandates the color of the cursor and potentially overridden text.
-    #
-    # The color can be specified in RGB as usual, plus
-    # - CellForeground: Selects the cell's foreground color.
-    # - CellBackground: Selects the cell's background color.
-    cursor:
-      # Specifies the color to be used for the actual cursor shape.
-      #
-      # Default: CellForeground
-      default: "#00d992"
-      # Specifies the color to be used for the characters that would
-      # be covered otherwise.
-      #
-      # Default: CellBackground
-      text: CellBackground
-
-    # color to pick for hyperlinks decoration, when hovering
-    hyperlink_decoration:
-      normal: "#f0f000"
-      hover: "#ff0000"
-
-    # Color to pick for vi_mode highlights.
-    # The value format is equivalent to how selection colors and alpha contribution is defined.
-    vi_mode_highlight:
-      foreground: CellForeground
-      foreground_alpha: 1.0
-      background: "#ffa500"
-      background_alpha: 0.5
-
-    # Color override for the current cursor's line when in vi_mode:
-    # The value format is equivalent to how selection colors and alpha contribution is defined.
-    # To disable cursorline in vi_mode, set foreground to CellForeground and background to CellBackground.
-    vi_mode_cursorline:
-      foreground: "#ffffff"
-      foreground_alpha: 0.2
-      background: "#808080"
-      background_alpha: 0.4
-
-    # The text selection color can be customized here.
-    # Leaving a value empty will default to the inverse of the content's color values.
-    #
-    # The color can be specified in RGB as usual, plus
-    # - CellForeground: Selects the cell's foreground color.
-    # - CellBackground: Selects the cell's background color.
-    selection:
-      # Specifies the color to be used for the selected text.
-      #
-      # Default: CellBackground
-      foreground: CellForeground
-      # Specifies the alpha value (between 0.0 and 1.0) the configured foreground color
-      # will contribute to the original color.
-      #
-      # A value of 1.0 will paint over, whereas a value of 0.5 will give
-      # a look of a half-transparently painted grid cell.
-      foreground_alpha: 1.0
-      # Specifies the color to be used for the selected background.
-      #
-      # Default: CellForeground
-      background: "#4040f0"
-      # Specifies the alpha value (between 0.0 and 1.0) the configured background color
-      # will contribute to the original color.
-      #
-      # A value of 1.0 will paint over, whereas a value of 0.5 will give
-      # a look of a half-transparently painted grid cell.
-      background_alpha: 0.5
-
-    # Search match highlighting. Similar to selection highlighting.
-    search_highlight:
-      foreground: CellBackground
-      background: CellForeground
-      foreground_alpha: 1.0
-      background_alpha: 1.0
-
-    # Search match highlighting (focused term). Similar to selection highlighting.
-    search_highlight_focused:
-      foreground: CellBackground
-      background: CellForeground
-      foreground_alpha: 1.0
-      background_alpha: 1.0
-
-    # Coloring for the word that is highlighted due to double-clicking it.
-    #
-    # The format is similar to selection highlighting.
-    word_highlight_current:
-      foreground: CellForeground
-      background: "#909090"
-      foreground_alpha: 1.0
-      background_alpha: 0.5
-
-    # Coloring for the word that is highlighted due to double-clicking
-    # another word that matches this word.
-    #
-    # The format is similar to selection highlighting.
-    word_highlight_other:
-      foreground: CellForeground
-      background: "#909090"
-      foreground_alpha: 1.0
-      background_alpha: 0.5
-
-    # Defines the colors to be used for the Indicator status line.
-    # Values must be in RGB form.
-    indicator_statusline:
-      # Default: default background
-      foreground: "#808080"
-      # Default: default foreground
-      background: "#000000"
-
-    # Alternate colors to be used for the indicator status line when
-    # this terminal is currently not in focus.
-    indicator_statusline_inactive:
-      # Default: default background
-      foreground: "#808080"
-      # Default: default foreground
-      background: "#000000"
-
-    # Colors for the IME (Input Method Editor) area.
-    input_method_editor:
-      # Default: default #FFFFFF
-      foreground: "#FFFFFF"
-      # Default: default #FF0000
-      background: "#FF0000"
-
-    # Normal colors
-    normal:
-      black: "#000000"
-      red: "#ff0035"
-      green: "#85ff00"
-      yellow: "#ffc900"
-      blue: "#00a7ff"
-      magenta: "#cb01ff"
-      cyan: "#00e0ff"
-      white: "#f0f0f0"
-
-    # Bright colors
-    bright:
-      black: "#000000"
-      red: "#ffb4af"
-      green: "#d2ffba"
-      yellow: "#ffebb7"
-      blue: "#b1deff"
-      magenta: "#edb5ff"
-      cyan: "#bdf4ff"
-      white: "#ffffff"
-    # Dim (faint) colors, if not set, they're automatically computed based on normal colors.
-    # dim:
-    #     black:   '#1d1f21'
-    #     red:     '#cc342b'
-    #     green:   '#198844'
-    #     yellow:  '#fba922'
-    #     blue:    '#3971ed'
-    #     magenta: '#a36ac7'
-    #     cyan:    '#3971ed'
-    #     white:   '#c5c8c6'
-
-# Key Bindings
-# ------------
-#
-# In this section you can customize key bindings.
-# Each array element in `input_mapping` represents one key binding,
-# whereas `mods` represents an array of keyboard modifiers that must be pressed - as well as
-# the `key` or `mouse` -  in order to activate the corresponding action,
-#
-# Additionally one can filter input mappings based on special terminal modes using the `modes` option:
-# - Alt       : The terminal is currently in alternate screen buffer, otherwise it is in primary screen buffer.
-# - AppCursor : The application key cursor mode is enabled (otherwise it's normal cursor mode).
-# - AppKeypad : The application keypad mode is enabled (otherwise it's the numeric keypad mode).
-# - Select    : The terminal has currently an active grid cell selection (such as selected text).
-# - Insert    : The Insert input mode is active, that is the default and one way to test
-#               that the input mode is not in normal mode or any of the visual select modes.
-# - Search    : There is a search term currently being edited or already present.
-# - Trace     : The terminal is currently in trace-mode, i.e., each VT sequence can be interactively
-#               single-step executed using custom actions. See TraceEnter/TraceStep/TraceLeave actions.
-#
-# You can combine these modes by concatenating them via | and negate a single one
-# by prefixing with ~.
-#
-# The `modes` option defaults to not filter at all (the input mappings always
-# match based on modifier and key press / mouse event).
-#
-# `key` represents keys on your keyboard, and `mouse` represents buttons
-# as well as the scroll wheel.
-#
-# Modifiers:
-# - Alt
-# - Control
-# - Shift
-# - Meta (this is the Windows key on Windows OS, and the Command key on OS/X, and Meta on anything else)
-#
-# Keys can be expressed case-insensitively symbolic:
-#   APOSTROPHE, ADD, BACKSLASH, COMMA, DECIMAL, DIVIDE, EQUAL, LEFT_BRACKET,
-#   MINUS, MULTIPLY, PERIOD, RIGHT_BRACKET, SEMICOLON, SLASH, SUBTRACT, SPACE
-#   Enter, Backspace, Tab, Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
-#   DownArrow, LeftArrow, RightArrow, UpArrow, Insert, Delete, Home, End, PageUp, PageDown,
-#   Numpad_NumLock, Numpad_Divide, Numpad_Multiply, Numpad_Subtract, Numpad_CapsLock,
-#   Numpad_Add, Numpad_Decimal, Numpad_Enter, Numpad_Equal,
-#   Numpad_0, Numpad_1, Numpad_2, Numpad_3, Numpad_4,
-#   Numpad_5, Numpad_6, Numpad_7, Numpad_8, Numpad_9
-# or in case of standard characters, just the character.
-#
-# Mouse buttons can be one of the following self-explanatory ones:
-#   Left, Middle, Right, WheelUp, WheelDown
-#
-# Actions:
-# - CancelSelection   Cancels currently active selection, if any.
-# - ChangeProfile     Changes the profile to the given profile `name`.
-# - ClearHistoryAndReset    Clears the history, performs a terminal hard reset and attempts to force a redraw of the currently running application.
-# - CopyPreviousMarkRange   Copies the most recent range that is delimited by vertical line marks into clipboard.
-# - CopySelection     Copies the current selection into the clipboard buffer.
-# - DecreaseFontSize  Decreases the font size by 1 pixel.
-# - DecreaseOpacity   Decreases the default-background opacity by 5%.
-# - FocusNextSearchMatch     Focuses the next search match (if any).
-# - FocusPreviousSearchMatch Focuses the next previous match (if any).
-# - FollowHyperlink   Follows the hyperlink that is exposed via OSC 8 under the current cursor position.
-# - IncreaseFontSize  Increases the font size by 1 pixel.
-# - IncreaseOpacity   Increases the default-background opacity by 5%.
-# - NewTerminal       Spawns a new terminal at the current terminals current working directory.
-# - NoSearchHighlight Disables current search highlighting, if anything is still highlighted due to a prior search.
-# - OpenConfiguration Opens the configuration file.
-# - OpenFileManager   Opens the current working directory in a system file manager.
-# - PasteClipboard    Pastes clipboard to standard input. Pass boolean parameter 'strip' to indicate whether or not to strip repetitive whitespaces down to one and newlines to whitespaces.
-# - PasteSelection    Pastes current selection to standard input.
-# - Quit              Quits the application.
-# - ReloadConfig      Forces a configuration reload.
-# - ResetConfig       Overwrites current configuration with builtin default configuration and loads it. Attention, all your current configuration will be lost due to overwrite!
-# - ResetFontSize     Resets font size to what is configured in the config file.
-# - ScreenshotVT      Takes a screenshot in form of VT escape sequences.
-# - ScrollDown        Scrolls down by the multiplier factor.
-# - ScrollMarkDown    Scrolls one mark down (if none present, bottom of the screen)
-# - ScrollMarkUp      Scrolls one mark up
-# - ScrollOneDown     Scrolls down by exactly one line.
-# - ScrollOneUp       Scrolls up by exactly one line.
-# - ScrollPageDown    Scrolls a page down.
-# - ScrollPageUp      Scrolls a page up.
-# - ScrollToBottom    Scrolls to the bottom of the screen buffer.
-# - ScrollToTop       Scrolls to the top of the screen buffer.
-# - ScrollUp          Scrolls up by the multiplier factor.
-# - SearchReverse     Initiates search mode (starting to search at current cursor position, moving upwards).
-# - SendChars         Writes given characters in `chars` member to the applications input.
-# - ToggleAllKeyMaps  Disables/enables responding to all keybinds (this keybind will be preserved when disabling all others).
-# - ToggleFullScreen  Enables/disables full screen mode.
-# - ToggleInputProtection Enables/disables terminal input protection.
-# - ToggleStatusLine  Shows/hides the VT320 compatible Indicator status line.
-# - ToggleTitleBar    Shows/Hides titlebar
-# - TraceBreakAtEmptyQueue Executes any pending VT sequence from the VT sequence buffer in trace mode, then waits.
-# - TraceEnter        Enables trace mode, suspending execution until explicitly requested to continue (See TraceLeave and TraceStep).
-# - TraceLeave        Disables trace mode. Any pending VT sequence will be flushed out and normal execution will be resumed.
-# - TraceStep         Executes a single VT sequence that is to be executed next.
-# - ViNormalMode      Enters/Leaves Vi-like normal mode. The cursor can then be moved via h/j/k/l movements in normal mode and text can be selected via v, yanked via y, and clipboard pasted via p.
-# - WriteScreen       Writes VT sequence in `chars` member to the screen (bypassing the application).
-
-input_mapping:
-  - { mods: [Control], mouse: Left, action: FollowHyperlink }
-  - { mods: [], mouse: Middle, action: PasteSelection }
-  - { mods: [], mouse: WheelDown, action: ScrollDown }
-  - { mods: [], mouse: WheelUp, action: ScrollUp }
-  - { mods: [Alt], key: Enter, action: ToggleFullscreen }
-  - { mods: [Alt], mouse: WheelDown, action: DecreaseOpacity }
-  - { mods: [Alt], mouse: WheelUp, action: IncreaseOpacity }
-  - { mods: [Control, Alt], key: S, action: ScreenshotVT }
-  - { mods: [Control, Shift], key: Plus, action: IncreaseFontSize }
-  - { mods: [Control], key: "0", action: ResetFontSize }
-  - { mods: [Control, Shift], key: Minus, action: DecreaseFontSize }
-  - { mods: [Control, Shift], key: "_", action: DecreaseFontSize }
-  - { mods: [Control, Shift], key: N, action: NewTerminal }
-  - { mods: [Control, Shift], key: V, action: PasteClipboard, strip: false }
-  - { mods: [Control, Alt], key: V, action: PasteClipboard, strip: true }
-  - { mods: [Control], key: C, action: CopySelection, mode: "Select|Insert" }
-  - { mods: [Control], key: C, action: CancelSelection, mode: "Select|Insert" }
-  - {
-      mods: [Control],
-      key: V,
-      action: PasteClipboard,
-      strip: false,
-      mode: "Select|Insert",
-    }
-  - { mods: [Control], key: V, action: CancelSelection, mode: "Select|Insert" }
-  - { mods: [], key: Escape, action: CancelSelection, mode: "Select|Insert" }
-  - { mods: [Control, Shift], key: Space, action: ViNormalMode, mode: "Insert" }
-  - { mods: [Control, Shift], key: Comma, action: OpenConfiguration }
-  - { mods: [Control, Shift], key: Q, action: Quit }
-  - { mods: [Control], mouse: WheelDown, action: DecreaseFontSize }
-  - { mods: [Control], mouse: WheelUp, action: IncreaseFontSize }
-  - { mods: [Shift], key: DownArrow, action: ScrollOneDown }
-  - { mods: [Shift], key: End, action: ScrollToBottom }
-  - { mods: [Shift], key: Home, action: ScrollToTop }
-  - { mods: [Shift], key: PageDown, action: ScrollPageDown }
-  - { mods: [Shift], key: PageUp, action: ScrollPageUp }
-  - { mods: [Shift], key: UpArrow, action: ScrollOneUp }
-  - { mods: [Control, Alt], key: K, action: ScrollMarkUp, mode: "~Alt" }
-  - { mods: [Control, Alt], key: J, action: ScrollMarkDown, mode: "~Alt" }
-  - { mods: [Shift], mouse: WheelDown, action: ScrollPageDown }
-  - { mods: [Shift], mouse: WheelUp, action: ScrollPageUp }
-  - { mods: [Control, Alt], key: O, action: OpenFileManager }
-  - { mods: [Control, Alt], key: ".", action: ToggleStatusLine }
-  - { mods: [Control, Shift], key: "F", action: SearchReverse }
-  - { mods: [Control, Shift], key: "H", action: NoSearchHighlight }
-  - { mods: [], key: "F3", action: FocusNextSearchMatch }
-  - { mods: [Shift], key: "F3", action: FocusPreviousSearchMatch }
-#   - { mods: [Control, Meta],  key: 'E',           action: TraceEnter,             mode: "~Trace" }
-#   - { mods: [Control, Meta],  key: 'E',           action: TraceLeave,             mode: "Trace" }
-#   - { mods: [Control, Meta],  key: 'N',           action: TraceStep,              mode: "Trace" }
-#   - { mods: [Control, Meta],  key: 'F',           action: TraceBreakAtEmptyQueue, mode: "Trace" }
diff --git a/.config/efm-langserver/config.yaml b/.config/efm-langserver/config.yaml
deleted file mode 100644
index a7b4c56..0000000
--- a/.config/efm-langserver/config.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-version: 2
-root-markers:
-- .git/
-
-tools:
-  clang-format: &clang-format
-    format-command: 'clang-format -style="{BasedOnStyle: Google, IndentWidth: 2, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}"'
-    format-stdin: true
-
-languages:
-  proto:
-    - <<: *clang-format
-
-
diff --git a/.config/environment.d/difftastic.conf b/.config/environment.d/difftastic.conf
deleted file mode 100644
index b58731b..0000000
--- a/.config/environment.d/difftastic.conf
+++ /dev/null
@@ -1 +0,0 @@
-DFT_BACKGROUND=light
diff --git a/.config/environment.d/docker.conf b/.config/environment.d/docker.conf
deleted file mode 100644
index 1747f14..0000000
--- a/.config/environment.d/docker.conf
+++ /dev/null
@@ -1 +0,0 @@
-DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/podman/podman.sock
diff --git a/.config/environment.d/golang.conf b/.config/environment.d/golang.conf
deleted file mode 100644
index ecea26b..0000000
--- a/.config/environment.d/golang.conf
+++ /dev/null
@@ -1 +0,0 @@
-GOPROXY=https://athens.aarn.shelman.io
diff --git a/.config/environment.d/mozilla.conf b/.config/environment.d/mozilla.conf
deleted file mode 100644
index e165145..0000000
--- a/.config/environment.d/mozilla.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-MOZ_ENABLE_WAYLAND=1
-MOZ_DISABLE_RDD_SANDBOX=1
diff --git a/.config/environment.d/otel.conf b/.config/environment.d/otel.conf
deleted file mode 100644
index 08d9968..0000000
--- a/.config/environment.d/otel.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.aarn.shelman.io
-OTEL_RESOURCE_ATTRIBUTES=instance=dln-dev
-OTEL_LOG_LEVEL=debug
diff --git a/.config/environment.d/ssh.conf b/.config/environment.d/ssh.conf
deleted file mode 100644
index cae7205..0000000
--- a/.config/environment.d/ssh.conf
+++ /dev/null
@@ -1 +0,0 @@
-SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gcr/ssh
diff --git a/.config/fish/conf.d/abbr.fish b/.config/fish/conf.d/abbr.fish
deleted file mode 100644
index 0eaf442..0000000
--- a/.config/fish/conf.d/abbr.fish
+++ /dev/null
@@ -1,6 +0,0 @@
-abbr --add b git branch -va
-abbr --add d git diff --stat -p -C --color-words
-abbr --add new git checkout --detach main
-abbr --add s git status -sb
-abbr --add sl git branchless smartlog
-abbr --add sw git branchless switch --interactive
diff --git a/.config/fish/conf.d/aliases.fish b/.config/fish/conf.d/aliases.fish
deleted file mode 100644
index d2d3ddb..0000000
--- a/.config/fish/conf.d/aliases.fish
+++ /dev/null
@@ -1,10 +0,0 @@
-alias e='wezterm-edit-helper'
-alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
-alias git='git-branchless wrap --'
-alias l='bat --wrap=never --pager="less -S"'
-alias ls=eza
-alias tail='tail -n $LINES'
-alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"'
-alias top='btm --basic --enable_cache_memory --enable_gpu_memory --battery'
-alias w="history -1 | sed -e 's/[0-9]*  //' | xargs viddy -n1"
-alias xc=fish_clipboard_copy
diff --git a/.config/fish/conf.d/prompt.fish b/.config/fish/conf.d/prompt.fish
deleted file mode 100644
index c246201..0000000
--- a/.config/fish/conf.d/prompt.fish
+++ /dev/null
@@ -1,91 +0,0 @@
-function fish_prompt
-    switch "$fish_key_bindings"
-        case fish_hybrid_key_bindings fish_vi_key_bindings
-            set STARSHIP_KEYMAP "$fish_bind_mode"
-        case '*'
-            set STARSHIP_KEYMAP insert
-    end
-    set STARSHIP_CMD_PIPESTATUS $pipestatus
-    set STARSHIP_CMD_STATUS $status
-    # Account for changes in variable name between v2.7 and v3.0
-    set STARSHIP_DURATION "$CMD_DURATION$cmd_duration"
-    set STARSHIP_JOBS (count (jobs -p))
-    if test "$TRANSIENT" = 1
-        # Clear from cursor to end of screen as `commandline -f repaint` does not do this
-        # See https://github.com/fish-shell/fish-shell/issues/8418
-        printf \e\[0J
-        if type -q starship_transient_prompt_func
-            starship_transient_prompt_func
-        else
-            printf "\n\e[1;32m%%\e[0m "
-        end
-    else
-        starship prompt --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
-    end
-end
-
-function fish_right_prompt
-    switch "$fish_key_bindings"
-        case fish_hybrid_key_bindings fish_vi_key_bindings
-            set STARSHIP_KEYMAP "$fish_bind_mode"
-        case '*'
-            set STARSHIP_KEYMAP insert
-    end
-    set STARSHIP_CMD_PIPESTATUS $pipestatus
-    set STARSHIP_CMD_STATUS $status
-    # Account for changes in variable name between v2.7 and v3.0
-    set STARSHIP_DURATION "$CMD_DURATION$cmd_duration"
-    set STARSHIP_JOBS (count (jobs -p))
-    if test "$TRANSIENT" = 1
-        if type -q starship_transient_rprompt_func
-            starship_transient_rprompt_func
-        else
-            printf ""
-        end
-    else
-        starship prompt --right --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS
-    end
-end
-
-# Disable virtualenv prompt, it breaks starship
-set -g VIRTUAL_ENV_DISABLE_PROMPT 1
-
-# Remove default mode prompt
-builtin functions -e fish_mode_prompt
-
-set -gx STARSHIP_SHELL fish
-
-# Transience related functions
-function reset-transient --on-event fish_postexec
-    set -g TRANSIENT 0
-end
-
-function transient_execute
-    if commandline --is-valid
-        set -g TRANSIENT 1
-        commandline -f repaint
-    else
-        set -g TRANSIENT 0
-    end
-    commandline -f execute
-end
-
-# --user is the default, but listed anyway to make it explicit.
-function enable_transience --description 'enable transient prompt keybindings'
-    bind --user \r transient_execute
-    bind --user -M insert \r transient_execute
-end
-
-# Erase the transient prompt related key bindings.
-# --user is the default, but listed anyway to make it explicit.
-# Erasing a user binding will revert to the preset.
-function disable_transience --description 'remove transient prompt keybindings'
-    bind --user -e \r
-    bind --user -M insert -e \r
-end
-
-# Set up the session key that will be used to store logs
-# We don't use `random [min] [max]` because it is unavailable in older versions of fish shell
-set -gx STARSHIP_SESSION_KEY (string sub -s1 -l16 (random)(random)(random)(random)(random)0000000000000000)
-
-enable_transience
diff --git a/.config/fish/conf.d/semantic-prompt.fish b/.config/fish/conf.d/semantic-prompt.fish
deleted file mode 100644
index 23947c4..0000000
--- a/.config/fish/conf.d/semantic-prompt.fish
+++ /dev/null
@@ -1,56 +0,0 @@
-# SPDX-License-Identifier: CC0-1.0
-if status --is-interactive
-    set _fishprompt_aid "fish"$fish_pid
-    set _fishprompt_started 0
-    # empty if running; or a numeric exit code; or CANCEL
-    set _fishprompt_postexec ""
-
-    functions -c fish_prompt _fishprompt_saved_prompt
-    set _fishprompt_prompt_count 0
-    set _fishprompt_disp_count 0
-    function _fishprompt_start --on-event fish_prompt
-        set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1)
-        # don't use post-exec, because it is called *before* omitted-newline output
-        if [ -n "$_fishprompt_postexec" ]
-            printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid
-        end
-        printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid
-    end
-
-    function fish_prompt
-        set _fishprompt_disp_count (math $_fishprompt_disp_count + 1)
-        printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt))
-        set _fishprompt_started 1
-        set _fishprompt_postexec ""
-    end
-
-    function _fishprompt_preexec --on-event fish_preexec
-        if [ "$_fishprompt_started" = 1 ]
-            printf "\033]133;C;\007"
-        end
-        set _fishprompt_started 0
-    end
-
-    function _fishprompt_postexec --on-event fish_postexec
-        set _fishprompt_postexec $status
-        _fishprompt_start
-    end
-
-    function __fishprompt_cancel --on-event fish_cancel
-        set _fishprompt_postexec CANCEL
-        _fishprompt_start
-    end
-
-    function _fishprompt_exit --on-process %self
-        if [ "$_fishprompt_started" = 1 ]
-            printf "\033]133;Z;aid=%s\007" $_fishprompt_aid
-        end
-    end
-
-    if functions -q fish_right_prompt
-        functions -c fish_right_prompt _fishprompt_saved_right_prompt
-        function fish_right_prompt
-            printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt))
-        end
-    end
-end
diff --git a/.config/fish/conf.d/task.fish b/.config/fish/conf.d/task.fish
deleted file mode 100644
index ee2d0a5..0000000
--- a/.config/fish/conf.d/task.fish
+++ /dev/null
@@ -1,37 +0,0 @@
-set GO_TASK_PROGNAME task
-
-function __task_get_tasks --description "Prints all available tasks with their description"
-  # Read the list of tasks (and potential errors)
-  $GO_TASK_PROGNAME --list-all 2>&1 | read -lz rawOutput
-
-  # Return on non-zero exit code (for cases when there is no Taskfile found or etc.)
-  if test $status -ne 0
-    return
-  end
-
-  # Grab names and descriptions (if any) of the tasks
-  set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s*\(.*\)\s*(aliases.*/\1\t\2/' -e 's/\* \(.*\):\s*\(.*\)/\1\t\2/'| string split0)
-  if test $output
-    echo $output
-  end
-end
-
-complete -c $GO_TASK_PROGNAME -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was
-specified.' -xa "(__task_get_tasks)"
-
-complete -c $GO_TASK_PROGNAME -s c -l color     -d 'colored output (default true)'
-complete -c $GO_TASK_PROGNAME -s d -l dir       -d 'sets directory of execution'
-complete -c $GO_TASK_PROGNAME      -l dry       -d 'compiles and prints tasks in the order that they would be run, without executing them'
-complete -c $GO_TASK_PROGNAME -s f -l force     -d 'forces execution even when the task is up-to-date'
-complete -c $GO_TASK_PROGNAME -s h -l help      -d 'shows Task usage'
-complete -c $GO_TASK_PROGNAME -s i -l init      -d 'creates a new Taskfile.yml in the current folder'
-complete -c $GO_TASK_PROGNAME -s l -l list      -d 'lists tasks with description of current Taskfile'
-complete -c $GO_TASK_PROGNAME -s o -l output    -d 'sets output style: [interleaved|group|prefixed]' -xa "interleaved group prefixed"
-complete -c $GO_TASK_PROGNAME -s p -l parallel  -d 'executes tasks provided on command line in parallel'
-complete -c $GO_TASK_PROGNAME -s s -l silent    -d 'disables echoing'
-complete -c $GO_TASK_PROGNAME      -l status    -d 'exits with non-zero exit code if any of the given tasks is not up-to-date'
-complete -c $GO_TASK_PROGNAME      -l summary   -d 'show summary about a task'
-complete -c $GO_TASK_PROGNAME -s t -l taskfile  -d 'choose which Taskfile to run. Defaults to "Taskfile.yml"'
-complete -c $GO_TASK_PROGNAME -s v -l verbose   -d 'enables verbose mode'
-complete -c $GO_TASK_PROGNAME      -l version   -d 'show Task version'
-complete -c $GO_TASK_PROGNAME -s w -l watch     -d 'enables watch of the given task'
diff --git a/.config/fish/conf.d/zoxide.fish b/.config/fish/conf.d/zoxide.fish
deleted file mode 100644
index fa10e76..0000000
--- a/.config/fish/conf.d/zoxide.fish
+++ /dev/null
@@ -1,100 +0,0 @@
-# =============================================================================
-#
-# Utility functions for zoxide.
-#
-
-# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
-function __zoxide_pwd
-    builtin pwd -L
-end
-
-# A copy of fish's internal cd function. This makes it possible to use
-# `alias cd=z` without causing an infinite loop.
-if ! builtin functions --query __zoxide_cd_internal
-    if builtin functions --query cd
-        builtin functions --copy cd __zoxide_cd_internal
-    else
-        alias __zoxide_cd_internal='builtin cd'
-    end
-end
-
-# cd + custom logic based on the value of _ZO_ECHO.
-function __zoxide_cd
-    __zoxide_cd_internal $argv
-end
-
-# =============================================================================
-#
-# Hook configuration for zoxide.
-#
-
-# Initialize hook to add new entries to the database.
-function __zoxide_hook --on-variable PWD
-    test -z "$fish_private_mode"
-    and command zoxide add -- (__zoxide_pwd)
-end
-
-# =============================================================================
-#
-# When using zoxide with --no-cmd, alias these internal functions as desired.
-#
-
-if test -z $__zoxide_z_prefix
-    set __zoxide_z_prefix 'z!'
-end
-set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix)
-
-# Jump to a directory using only keywords.
-function __zoxide_z
-    set -l argc (count $argv)
-    if test $argc -eq 0
-        __zoxide_cd $HOME
-    else if test "$argv" = -
-        __zoxide_cd -
-    else if test $argc -eq 1 -a -d $argv[1]
-        __zoxide_cd $argv[1]
-    else if set -l result (string replace --regex $__zoxide_z_prefix_regex '' $argv[-1]); and test -n $result
-        __zoxide_cd $result
-    else
-        set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv)
-        and __zoxide_cd $result
-    end
-end
-
-# Completions.
-function __zoxide_z_complete
-    set -l tokens (commandline --current-process --tokenize)
-    set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize)
-
-    if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1
-        # If there are < 2 arguments, use `cd` completions.
-        complete --do-complete "'' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$'
-    else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1]
-        # If the last argument is empty and the one before doesn't start with
-        # $__zoxide_z_prefix, use interactive selection.
-        set -l query $tokens[2..-1]
-        set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query)
-        and echo $__zoxide_z_prefix$result
-        commandline --function repaint
-    end
-end
-complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)'
-
-# Jump to a directory using interactive search.
-function __zoxide_zi
-    set -l result (command zoxide query --interactive -- $argv)
-    and __zoxide_cd $result
-end
-
-# =============================================================================
-#
-# Commands for zoxide. Disable these using --no-cmd.
-#
-
-abbr --erase cd &>/dev/null
-alias cd=__zoxide_z
-
-abbr --erase cdi &>/dev/null
-alias cdi=__zoxide_zi
-
-set -gx _ZO_EXCLUDE_DIRS "$HOME/media:$HOME/media/*"
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
deleted file mode 100644
index 00991a5..0000000
--- a/.config/fish/config.fish
+++ /dev/null
@@ -1,71 +0,0 @@
-set fish_greeting
-set fish_emoji_width 2
-
-fish_add_path $HOME/.cargo/bin
-fish_add_path $HOME/bin
-
-if status is-interactive
-
-    ## Pager
-    set -gx LESS "--mouse --wheel-lines=1 -nRXF"
-    set -gx LESSCOLORIZER bat
-    set -gx LESSOPEN "|lesspipe.sh %s"
-    set -gx PAGER bat
-    set -gx BAT_PAGER "less -r"
-
-    ## OpenTelemetry
-    set -gx OTEL_EXPORTER_OTLP_ENDPOINT https://otel.aarn.shelman.io
-    set -gx OTEL_RESOURCE_ATTRIBUTES instance=dln-dev
-    set -gx OTEL_LOG_LEVEL debug
-
-    ## Utilities
-
-    set -gx EDITOR (which nvim)
-    set -gx VISUAL $EDITOR
-    set -gx SUDO_EDITOR $EDITOR
-
-    function tree
-        eza --tree --color=always $argv | bat --wrap=never
-    end
-
-    bind \cg __zoxide_zi
-
-    function git_jump
-        set _dir $(git rev-parse --show-toplevel 2>/dev/null || pwd)
-        if [ "$_dir" = "$PWD" ]
-            #set _dir $(br -f --conf ~/.config/broot/select.hjson)
-            set _dir $(br -f --conf "$HOME/.config/broot/conf.hjson")
-        end
-        [ -n "$_dir" ] && pushd $_dir >>/dev/null
-        commandline -f repaint
-    end
-    bind \c_ git_jump
-
-    function git_broot
-        br $(git rev-parse --show-toplevel 2>/dev/null || pwd)
-        commandline -f repaint
-    end
-
-    bind \ee git_broot
-    bind \eg gitui
-
-
-    ## Kubernetes
-    fish_add_path $HOME/.krew/bin
-    # function kubectl --wraps kubectl
-    #     command kubecolor $argv
-    # end
-
-    ## History
-
-    # FIXME: how to use autin history for these?
-    bind \cn history-prefix-search-forward
-    bind \cp history-prefix-search-backward
-    # bind \cP _atuin_bind_up
-    bind \cJ forward-char
-
-    atuin init fish | source
-end
-
-## Direnv
-direnv hook fish | source
diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
deleted file mode 100644
index 10b98ea..0000000
--- a/.config/fish/fish_variables
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file contains fish universal variable definitions.
-# VERSION: 3.0
-SETUVAR __fish_initialized:3400
-SETUVAR fish_color_autosuggestion:\x2d\x2ditalics\x1e\x2d\x2dbold\x1ered
-SETUVAR fish_color_cancel:\x1d
-SETUVAR fish_color_command:\x2d\x2dbold
-SETUVAR fish_color_comment:\x2d\x2ditalic\x1e\x2d\x2ddim
-SETUVAR fish_color_cwd:normal
-SETUVAR fish_color_cwd_root:normal
-SETUVAR fish_color_end:\x1d
-SETUVAR fish_color_error:\x1d
-SETUVAR fish_color_escape:\x1d
-SETUVAR fish_color_gray:6c7086
-SETUVAR fish_color_history_current:\x1d
-SETUVAR fish_color_host:normal
-SETUVAR fish_color_host_remote:yellow
-SETUVAR fish_color_keyword:\x1d
-SETUVAR fish_color_match:\x1d
-SETUVAR fish_color_normal:normal
-SETUVAR fish_color_operator:\x1d
-SETUVAR fish_color_option:\x1d
-SETUVAR fish_color_param:normal
-SETUVAR fish_color_quote:\x2d\x2ditalics
-SETUVAR fish_color_redirection:\x1d
-SETUVAR fish_color_search_match:\x2dr
-SETUVAR fish_color_selection:\x2dr
-SETUVAR fish_color_status:normal
-SETUVAR fish_color_string:\x2d\x2ditalics
-SETUVAR fish_color_user:normal
-SETUVAR fish_color_valid_path:\x1d
-SETUVAR fish_cursor_default:line
-SETUVAR fish_cursor_normal:line
-SETUVAR fish_key_bindings:fish_default_key_bindings
-SETUVAR fish_pager_color_background:\x1d
-SETUVAR fish_pager_color_completion:normal
-SETUVAR fish_pager_color_description:brblack
-SETUVAR fish_pager_color_prefix:\x2d\x2dunderline
-SETUVAR fish_pager_color_progress:brblack
-SETUVAR fish_pager_color_secondary_background:\x1d
-SETUVAR fish_pager_color_secondary_completion:\x1d
-SETUVAR fish_pager_color_secondary_description:\x1d
-SETUVAR fish_pager_color_secondary_prefix:\x1d
-SETUVAR fish_pager_color_selected_background:\x2dr
-SETUVAR fish_pager_color_selected_completion:\x1d
-SETUVAR fish_pager_color_selected_description:\x1d
-SETUVAR fish_pager_color_selected_prefix:\x1d
-SETUVAR fish_user_paths:/home/dln/\x2enix\x2dprofile/bin\x1e/home/dln/\x2ekrew/bin\x1e/home/dln/bin\x1e/home/dln/\x2ecargo/bin
-SETUVAR --export theme:Catppuccin\x20Latte
diff --git a/.config/fish/themes/Catppuccin Mocha.theme b/.config/fish/themes/Catppuccin Mocha.theme
deleted file mode 100644
index 104281b..0000000
--- a/.config/fish/themes/Catppuccin Mocha.theme	
+++ /dev/null
@@ -1,30 +0,0 @@
-# name: 'Catppuccin mocha'
-# url: 'https://github.com/catppuccin/fish'
-# preferred_background: 1e1e2e
-
-fish_color_normal cdd6f4
-fish_color_command 89b4fa
-fish_color_param f2cdcd
-fish_color_keyword f38ba8
-fish_color_quote a6e3a1
-fish_color_redirection f5c2e7
-fish_color_end fab387
-fish_color_comment 7f849c --italics --dim
-fish_color_error f38ba8
-fish_color_gray 6c7086
-fish_color_selection --background=313244
-fish_color_search_match --background=313244
-fish_color_option a6e3a1
-fish_color_operator f5c2e7
-fish_color_escape eba0ac
-fish_color_autosuggestion 6c7086
-fish_color_cancel f38ba8
-fish_color_cwd f9e2af
-fish_color_user 94e2d5
-fish_color_host 89b4fa
-fish_color_host_remote a6e3a1
-fish_color_status f38ba8
-fish_pager_color_progress 6c7086
-fish_pager_color_prefix f5c2e7
-fish_pager_color_completion cdd6f4
-fish_pager_color_description 6c7086
diff --git a/.config/git/allowed_signers b/.config/git/allowed_signers
deleted file mode 100644
index 42c52d6..0000000
--- a/.config/git/allowed_signers
+++ /dev/null
@@ -1,3 +0,0 @@
-dln@arity.se sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
-daniel@arity.se sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
-dln@shelman.io sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo=
diff --git a/.config/git/signing-key.sh b/.config/git/signing-key.sh
deleted file mode 100755
index aed9246..0000000
--- a/.config/git/signing-key.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-ssh-add -L | awk '/^sk-ssh/ { print "key::" $1 " " $2 }'
diff --git a/.config/helix/config.toml b/.config/helix/config.toml
deleted file mode 100644
index c789a38..0000000
--- a/.config/helix/config.toml
+++ /dev/null
@@ -1,52 +0,0 @@
-theme = "sumi-e"
-# theme = "github_light"
-
-[editor]
-true-color = true
-undercurl = true
-cursorline = true
-color-modes = true
-auto-pairs = false 
-popup-border = "all"
-rulers = [80]
-gutters = ["diagnostics", "line-numbers", "spacer", "diff", "spacer"]
-
-[editor.cursor-shape]
-insert = "bar"
-normal = "block"
-select = "underline"
-
-[editor.indent-guides]
-character = "│" # "╎"
-render = true
-skip-levels = 1
-
-[editor.statusline]
-separator = "│"
-mode.normal = "  "
-mode.insert = " "
-mode.select = "󰒅 "
-left = ["spinner", "mode", "diagnostics"]
-center = ["file-name", "file-encoding"]
-right = ["version-control", "separator", "selections", "register", "separator", "position"]
-
-[editor.lsp]
-display-inlay-hints = true
-display-messages = true
-
-[keys.normal]
-backspace = "delete_char_backward"
-C-h = "delete_char_backward"
-C = ["select_mode", "goto_line_end", "normal_mode", "change_selection_noyank"]
-H = ":toggle lsp.display-inlay-hints"
-Z = { Z = ":write-quit-all" }
-esc = ["keep_primary_selection", "collapse_selection"]
-"`" = ["goto_last_accessed_file"]
-tab = ["buffer_picker"]
-C-r = ":config-reload"
-C-f = [":new", ":insert-output lf -selection-path=/dev/stdout", "split_selection_on_newline", "goto_file", "goto_last_modification", "goto_last_modified_file", ":buffer-close!", ":redraw"]
-V = ["goto_first_nonwhitespace", "extend_to_line_end"]
-x = "extend_line"
-
-[keys.select]
-x = "extend_line"
diff --git a/.config/helix/languages.toml b/.config/helix/languages.toml
deleted file mode 100644
index 1193075..0000000
--- a/.config/helix/languages.toml
+++ /dev/null
@@ -1,46 +0,0 @@
-[[language]]
-name = "rust"
-auto-format = true
-roots = [
-  "Cargo.toml",
-  "Cargo.lock"
-]
-language-servers = [
-    "rust-analyzer",
-    "gpt",
-]
-
-[[language]]
-name = "go"
-language-servers = [
-    "gopls",
-    "gpt",
-]
-
-[language.auto-pairs]
-'(' = ')'
-'{' = '}'
-'[' = ']'
-'"' = '"'
-'`' = '`'
-
-[language-server.rust-analyzer]
-command = "rust-analyzer"
-
-[language-server.rust-analyzer.config.inlayHints]
-bindingModeHints.enable = false
-chainingHints.enable = false
-# closingBraceHints.enable = false
-closingBraceHints.minLines = 10
-closureReturnTypeHints.enable = "with_block"
-# discriminantHints.enable = "fieldless"
-discriminantHints.enable = "always"
-lifetimeElisionHints.enable = "skip_trivial"
-parameterHints.enable = true
-typeHints.enable = true
-typeHints.hideClosureInitialization = false
-
-[language-server.gpt]
-command = "helix-gpt"
-args = ["--handler", "copilot", "--logFile", "/home/dln/.cache/helix/helix-gpt.log"]
-
diff --git a/.config/helix/themes/sumi-e.toml b/.config/helix/themes/sumi-e.toml
deleted file mode 100644
index d7a73c7..0000000
--- a/.config/helix/themes/sumi-e.toml
+++ /dev/null
@@ -1,193 +0,0 @@
-
-# GENERAL ==============================
-
-warning = { fg = "#ff7700", bg = "#221100", modifierd = [ "italic" ] }
-error = { fg = "#ff0038", bg = "#220000", modifiers = [ "italic" ] }
-hint = { fg = "#00d992", bg = "#002211", modifierd = [ "italic" ]  }
-info = { fg = "#ffcc00", bg = "#222200", modifiers = ["italic"] }
-diagnostic = { fg = "#c49848"}
-"diagnostic.info" = { underline = { color = "#ffcc00", style = "curl" } }
-"diagnostic.hint" = { fg = "#00d992", underline = { color = "#00d992", style = "curl" } }
-"diagnostic.warning" = { fg = "#ff7700", underline = { color = "#ff7700", style = "curl" } }
-"diagnostic.error" = { fg = "#ff0038", underline = { color = "#ff0038", style = "curl" } }
-"diagnostic.unnecessary" = { fg = "#ffcc00", modifiers = ["dim", "italic"], underline = { style = "curl" } }
-"diagnostic.deprecated" = { modifiers = ["crossed_out"] }
-
-
-# UI ==============================
-# For styling helix itself.
-
-'ui.background' = { bg="background" }
-'ui.background.separator' = { fg="#00a171" } 
-'ui.window' = { bg="#224466" }
-'ui.gutter' = { bg="#11171d" }
-
-'ui.text' = { fg = "#cccccc" }
-'ui.text.focus' = { bg = "#294467" }
-'ui.text.info' = { }
-
-'ui.cursor' = { bg = "#00a171", fg = "#000000" }
-'ui.cursor.primary' = { bg ="#23fdb6", fg = "#000000" }
-'ui.cursor.insert' = { fg = "#ff0000" }
-'ui.cursor.select' = { fg = "#3399ff" }
-'ui.cursor.match' = { fg = "#000000", bg = "#ffd54f" }
-'ui.cursorline.primary' = { bg = "#141b23" }
-
-'ui.selection' = { bg = "#294467" }
-'ui.selection.primary' = { bg = "#294467" }
-
-'ui.linenr' = { fg = "#374351", modifiers = [ "bold", "italic" ] }
-'ui.linenr.selected' = { fg = "#617d9d", bg = "#14202e" }
-
-'ui.virtual' = {  }
-"ui.virtual.indent-guide" = { fg = "#273341" }
-"ui.virtual.inlay-hint" = { fg = "#51a0cf", modifiers = ["italic", "bold"] }
-'ui.virtual.ruler' = { bg = "#11171d" }
-'ui.virtual.whitespace' = { }
-'ui.virtual.wrap' = { fg = "#ffd54f" }
-"ui.virtual.jump-label" = { fg = "#96ffe6", bg = "#051e33", modifiers = ["bold", "italic"] }
-
-# 'ui.statusline' = { bg = "#151920", fg = "#4d5a6c" }
-'ui.statusline' = { bg = "#11171d", fg = "#637184", modifiers = ["italic", "bold"] }
-'ui.statusline.inactive' = { }
-"ui.statusline.normal" = { }
-"ui.statusline.insert" = { fg = "#d7b640" }
-"ui.statusline.select" = { fg = "#3dc9ff" }
-
-'ui.help' = { }
-
-'ui.highlight' = { bg="#224466" }
-"ui.highlight.frameline" = { }
-
-'ui.menu' = { bg = "#242d38", fg="#bfd5e2" }
-'ui.menu.selected' = { bg = "#135d7e" }
-
-'ui.popup' = { bg = "#253d6b", fg="#b2c6e9" }
-'ui.popup.info' = { }
-
-
-# SYNTAX HIGHLIGHTING ==============================
-# All the keys here are Treesitter scopes.
-
-'property' = { }
-'special' = { fg="#ffecd3" }
-'attribute' = { }
-
-'type' = { }
-'type.builtin' = { }
-'type.enum.variant' = { }
-
-'constructor' = { }
-
-'constant' = { }
-'constant.builtin' = { }
-'constant.builtin.boolean' = { }
-'constant.character' = { }
-'constant.character.escape' = { }
-'constant.numeric'  = { }
-'constant.numeric.integer' = { }
-'constant.numeric.float' = { }
-
-'string' = { fg="#88ab8a", modifiers=["italic"] }
-'string.regexp' = { }
-'string.special' = { }
-'string.special.path' = { }
-'string.special.url' = { }
-'string.special.symbol' = { }
-
-'comment' = { fg = "#e57373", modifiers = ["bold", "italic"] }
-'comment.line' = { }
-'comment.block' = { }
-'comment.block.documentation' = { }
-
-'variable' = { fg="#999999", modifiers = [ "italic" ] }
-# 'variable.builtin' = { }
-'variable.parameter' = { fg = "#eeccaa", modifiers = [ "italic" ] }
-# 'variable.other.member' = { }
-
-'label' = { }
-
-'punctuation' = { fg = "#b0bec5" }
-'punctuation.delimiter' = { fg = "#b0bec5" }
-'punctuation.bracket' = { fg = "#b0bec5" }
-
-'keyword' = { fg = "#d5d5d5" }
-# 'keyword.control' = { }
-# 'keyword.control.conditional' = { }
-# 'keyword.control.repeat' = { }
-# 'keyword.control.import' = { }
-# 'keyword.control.return' = { }
-# 'keyword.control.exception' = { }
-# 'keyword.operator' = { }
-# 'keyword.directive' = { }
-# 'keyword.function' = { }
-
-'operator' = { }
-
-'function' = { fg = "#f7f7f7" }
-'function.builtin' = { }
-'function.method' = { }
-'function.macro' = { }
-'function.special' = { }
-
-'tag' = { }
-'tag.error' = { }
-
-'namespace' = { fg = "#b0bec5" }
-
-
-# Markup ==============================
-# Colors for markup languages, like Markdown or XML.
-
-'markup.heading.1' = { }
-'markup.heading.2' = { }
-'markup.heading.3' = { }
-'markup.heading.4' = { }
-'markup.heading.5' = { }
-'markup.heading.6' = { }
-'markup.heading.marker' = { }
-
-'markup.list' = { }
-'markup.list.numbered' = { }
-'markup.list.unnumbered' = { }
-
-'markup.bold' = { }
-'markup.italic' = { }
-
-'markup.link' = { }
-'markup.link.url' = { }
-'markup.link.label' = { }
-'markup.link.text' = { }
-
-'markup.quote' = { }
-
-
-# Markup - Interface ==============================
-# "These scopes are used for theming the editor interface."
-
-'markup.normal' = { }
-'markup.normal.completion' = { }
-'markup.normal.raw' = { }
-
-'markup.heading.completion' = { }
-'markup.heading.raw' = { }
-
-'markup.raw' = { }
-'markup.raw.block' = { }
-'markup.raw.inline' = { }
-'markup.raw.inline.completion' = { }
-'markup.raw.inline.hover' = { }
-
-# Diff ==============================
-# Version control changes.
-
-'diff.plus' = { fg = "#678350" }
-'diff.minus' = { fg = "#ff0038" }
-'diff.delta' = { fg = "#897a21" }
-'diff.delta.gutter' = { fg = "#ffff00" }
-# 'diff.delta.moved' = { }
-
-
-[palette] # Define your custom colors here.
-white = '#ffffff'
-
diff --git a/.config/k9s/config.yaml b/.config/k9s/config.yaml
deleted file mode 100644
index f80e58d..0000000
--- a/.config/k9s/config.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-k9s:
-  liveViewAutoRefresh: false
-  screenDumpDir: /home/dln/.local/state/k9s/screen-dumps
-  refreshRate: 2
-  maxConnRetry: 5
-  readOnly: false
-  noExitOnCtrlC: false
-  ui:
-    enableMouse: false
-    headless: true
-    logoless: true
-    crumbsless: true
-    reactive: false
-    noIcons: false
-    defaultsToFullScreen: true
-    skin: dieter
-  skipLatestRevCheck: false
-  disablePodCounting: false
-  shellPod:
-    image: busybox:1.35.0
-    namespace: default
-    limits:
-      cpu: 100m
-      memory: 100Mi
-  imageScans:
-    enable: false
-    exclusions:
-      namespaces: []
-      labels: {}
-  logger:
-    tail: 100
-    buffer: 5000
-    sinceSeconds: -1
-    textWrap: false
-    showTime: false
-  thresholds:
-    cpu:
-      critical: 90
-      warn: 70
-    memory:
-      critical: 90
-      warn: 70
diff --git a/.config/k9s/plugins.yaml b/.config/k9s/plugins.yaml
deleted file mode 100644
index 59b9f8c..0000000
--- a/.config/k9s/plugins.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-plugins:
-  raw-logs-follow:
-    shortCut: Shift-L
-    description: kubectl logs
-    scopes:
-      - po
-    command: bash
-    background: false
-    args:
-      - -c
-      - |
-        kubectl logs $NAME -n $NAMESPACE --context $CONTEXT | bat --wrap=never --pager="less" --force-colorization
-  toolbox:
-    shortCut: Shift-K
-    description: ktoolbox in current namespace
-    scopes:
-      - all
-    command: ktoolbox
-    background: false
-    args:
-      - -n
-      - $NAMESPACE
diff --git a/.config/k9s/skins/dieter.yaml b/.config/k9s/skins/dieter.yaml
deleted file mode 100644
index 46c9a99..0000000
--- a/.config/k9s/skins/dieter.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-# Dieter
-
-k9s:
-  body:
-    fgColor: default
-    bgColor: default
-    logoColor: default
-  prompt:
-    fgColor: default
-    bgColor: default
-    suggestColor: default
-  info:
-    fgColor: default
-    sectionColor: default
-  dialog:
-    fgColor: default
-    bgColor: default
-    buttonFgColor: default
-    buttonBgColor: default
-    buttonFocusFgColor: white
-    buttonFocusBgColor: darkblue
-    labelFgColor: default
-    fieldFgColor: default
-  frame:
-    border:
-      fgColor: default
-      focusColor: default
-    menu:
-      fgColor: default
-      keyColor: default
-      numKeyColor: default
-    crumbs:
-      fgColor: default
-      bgColor: default
-      activeColor: default
-    status:
-      newColor: default
-      modifyColor: default
-      addColor: default
-      errorColor: red
-      highlightColor: default
-      killColor: default
-      completedColor: default
-    title:
-      fgColor: default
-      bgColor: default
-      highlightColor: default
-      counterColor: default
-      filterColor: default
-  views:
-    table:
-      fgColor: default
-      bgColor: default
-      cursorFgColor: teal
-      cursorBgColor: darkblue
-      header:
-        fgColor: default
-        bgColor: default
-        sorterColor: blue
-    xray:
-      fgColor: default
-      bgColor: default
-      cursorColor: blue
-      graphicColor: blue
-    yaml:
-      keyColor: default
-      colonColor: default
-      valueColor: default
-    logs:
-      fgColor: default
-      bgColor: default
-      indicator:
-        fgColor: default
-        bgColor: default
-        toggleOnColor: default
-        toggleOffColor: default
diff --git a/.config/nerdctl/nerdctl.toml b/.config/nerdctl/nerdctl.toml
deleted file mode 100644
index 6bbbda3..0000000
--- a/.config/nerdctl/nerdctl.toml
+++ /dev/null
@@ -1,3 +0,0 @@
-debug_full = false
-snapshotter = "native"
-insecure_registry = false
diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json
deleted file mode 100644
index 05f524f..0000000
--- a/.config/nvim/lazyvim.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "extras": [
-    "lazyvim.plugins.extras.dap.core",
-    "lazyvim.plugins.extras.formatting.prettier",
-    "lazyvim.plugins.extras.lang.go",
-    "lazyvim.plugins.extras.lang.json",
-    "lazyvim.plugins.extras.lang.markdown",
-    "lazyvim.plugins.extras.lang.nix",
-    "lazyvim.plugins.extras.lang.rust",
-    "lazyvim.plugins.extras.lang.toml",
-    "lazyvim.plugins.extras.lang.typescript",
-    "lazyvim.plugins.extras.lang.yaml",
-    "lazyvim.plugins.extras.lsp.none-ls",
-    "lazyvim.plugins.extras.test.core",
-    "lazyvim.plugins.extras.ui.edgy",
-    "lazyvim.plugins.extras.ui.treesitter-context",
-    "lazyvim.plugins.extras.util.gitui",
-    "lazyvim.plugins.extras.util.project"
-  ],
-  "news": {
-    "NEWS.md": "6077"
-  },
-  "version": 6
-}
\ No newline at end of file
diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua
deleted file mode 100644
index 1185b23..0000000
--- a/.config/nvim/lua/plugins/editor.lua
+++ /dev/null
@@ -1,71 +0,0 @@
-return {
-  {
-    "folke/flash.nvim",
-    enabled = false,
-  },
-
-  {
-    "danielfalk/smart-open.nvim",
-    branch = "0.2.x",
-    dependencies = {
-      "kkharji/sqlite.lua",
-      { "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
-      { "nvim-telescope/telescope-fzy-native.nvim" },
-    },
-    config = function()
-      local util = require("lazyvim.util")
-      util.on_load("telescope.nvim", function()
-        local telescope = require("telescope")
-        telescope.load_extension("smart_open")
-      end)
-    end,
-  },
-
-  {
-    "telescope.nvim",
-    keys = {
-      {
-        "<leader><leader>",
-        function()
-          require("telescope").extensions.smart_open.smart_open({
-            filename_first = false,
-          })
-        end,
-        desc = "Telescope smart open",
-      },
-    },
-    opts = function(_, opts)
-      local actions = require("telescope.actions")
-      opts.defaults = {
-        layout_strategy = "horizontal",
-        layout_config = {
-          anchor = "top",
-          horizontal = {
-            prompt_position = "top",
-            mirror = false,
-            preview_width = 0.49,
-            -- preview_height = 0.5,
-          },
-          width = 0.9,
-          height = 0.9,
-          preview_cutoff = 10,
-        },
-        mappings = {
-          i = {
-            ["<esc>"] = actions.close, -- <Esc> close popup
-            ["<C-u>"] = false,         -- <C-u> clear prompt
-            ["<C-w>"] = false,         -- <C-u> clear prompt
-          },
-        },
-        -- path_display = { "filename_first" },
-        -- previewer = false,
-        preview = {
-          -- hide_on_startup = true,
-        },
-        sorting_strategy = "ascending",
-        winblend = 0,
-        wrap_results = true,
-      }
-    end,
-  },
-}
diff --git a/.config/nvim/lua/plugins/overseer.lua b/.config/nvim/lua/plugins/overseer.lua
deleted file mode 100644
index fb545a8..0000000
--- a/.config/nvim/lua/plugins/overseer.lua
+++ /dev/null
@@ -1,90 +0,0 @@
-return {
-	{
-		"folke/which-key.nvim",
-		opts = function(_, opts)
-			if LazyVim.has("noice.nvim") then
-				opts.defaults["<leader>o"] = { name = "+overseer" }
-			end
-		end,
-	},
-
-	{
-		"folke/edgy.nvim",
-		optional = true,
-		opts = function(_, opts)
-			opts.right = opts.right or {}
-			table.insert(opts.right, {
-				title = "Overseer",
-				ft = "OverseerList",
-				open = function()
-					require("overseer").open()
-				end,
-			})
-		end,
-	},
-
-	{
-		"nvim-neotest/neotest",
-		dependencies = "stevearc/overseer.nvim",
-		opts = function(_, opts)
-			local consumers = opts.consumers or {}
-			consumers.overseer = require("neotest.consumers.overseer")
-		end,
-	},
-
-	{
-		"stevearc/overseer.nvim",
-		cmd = {
-			"OverseerOpen",
-			"OverseerClose",
-			"OverseerToggle",
-			"OverseerSaveBundle",
-			"OverseerLoadBundle",
-			"OverseerDeleteBundle",
-			"OverseerRunCmd",
-			"OverseerRun",
-			"OverseerInfo",
-			"OverseerBuild",
-			"OverseerQuickAction",
-			"OverseerTaskAction",
-			"OverseerClearCache",
-		},
-		dependencies = "nvim-telescope/telescope.nvim",
-		opts = {
-			dap = false,
-			task_list = {
-				bindings = {
-					["<C-h>"] = false,
-					["<C-j>"] = false,
-					["<C-k>"] = false,
-					["<C-l>"] = false,
-				},
-			},
-			form = {
-				win_opts = {
-					winblend = 0,
-				},
-			},
-			confirm = {
-				win_opts = {
-					winblend = 0,
-				},
-			},
-			task_win = {
-				win_opts = {
-					winblend = 0,
-				},
-			},
-		},
-    -- stylua: ignore
-    keys = {
-      { "<leader>ow", "<cmd>OverseerToggle<cr>",      desc = "Task list" },
-      { "<leader>oo", "<cmd>OverseerRun<cr>",         desc = "Run task" },
-      { "<leader>oq", "<cmd>OverseerQuickAction<cr>", desc = "Action recent task" },
-      { "<leader>oi", "<cmd>OverseerInfo<cr>",        desc = "Overseer Info" },
-      { "<leader>ob", "<cmd>OverseerBuild<cr>",       desc = "Task builder" },
-      { "<leader>ot", "<cmd>OverseerTaskAction<cr>",  desc = "Task action" },
-      { "<leader>oc", "<cmd>OverseerClearCache<cr>",  desc = "Clear cache" },
-    },
-	},
-}
diff --git a/.config/nvim/spell/en.utf-8.add b/.config/nvim/spell/en.utf-8.add
deleted file mode 100644
index ab924f2..0000000
--- a/.config/nvim/spell/en.utf-8.add
+++ /dev/null
@@ -1,10 +0,0 @@
-#rytographically
-crytographically/!
-OIDC
-Kubernetes
-auth
-JWT
-PKCE
-OPA
-#askfile
-Taskfile/!
diff --git a/.config/nvim/spell/en.utf-8.add.spl b/.config/nvim/spell/en.utf-8.add.spl
deleted file mode 100644
index b8cee884173101bb32cd424d8b1775876e9c6e10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 144
zcmWIZ^erw(&B-zP&%nTt$)1>;m7QNu!dS{!!kEFxz*xjs$ymae&zR0w#F)rfz?i|9
z$(YQT$e6>J!&u44B*0kCSi;D}!dS|f#F)xh#F)pJ%2>jf%2>?E#Ke?Yz?j0w$iQHd
h3?>s9vl$_*RK`TcV#aL7G{#KE9L7{eCLsnG001$*8x#Nl

diff --git a/.config/paru/paru.conf b/.config/paru/paru.conf
deleted file mode 100644
index 23800b5..0000000
--- a/.config/paru/paru.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-Include = /etc/paru.conf
-
-[options]
-RemoveMake = ask
-SkipReview
-
-[bin]
-Sudo = doas
diff --git a/.config/rg/rg.conf b/.config/rg/rg.conf
deleted file mode 100644
index a09bccf..0000000
--- a/.config/rg/rg.conf
+++ /dev/null
@@ -1,10 +0,0 @@
---glob=!/.git/
---glob=!/.terraform/
---pretty
---colors=column:fg:100,181,246
---colors=line:fg:100,181,246
---colors=path:fg:26,35,126
---colors=path:style:bold
---colors=match:style:nobold
---colors=match:bg:255,235,59
---colors=match:fg:0,0,0
diff --git a/.config/sapling/sapling.conf b/.config/sapling/sapling.conf
deleted file mode 100644
index f6bbe26..0000000
--- a/.config/sapling/sapling.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-[ui]
-username =Daniel Lundin <daniel@arity.se>
-
-[alias]
-sw = switch
-switch = !sl sl -M -T ':\033[31m{node|short} \033[1;33m{bookmarks}{if(bookmarks, " ")}{remotenames} {if(github_pull_request_number, "\033[1;37;41m PR #{github_pull_request_number} ")}\033[0;3;32m {date|age} \033[35;1;3mby {author|user} - \033[0;34;3m{desc|firstline}\033[0m' | sed -E -e '/31m[0-9abcdef]{12}/!d' -e 's/.+ ://' | fzf-tmux -p 90%,50% -y 0 --ansi --color=light | sed "s/ .*//" | xargs -r -n1 sl go && sl log -r . -T status
-
-l = ll
-ll = log -G -T '\033[31m{node|short} \033[3;32m{date|age} \033[35;1;3mby {author|person}\n  \033[0;34;3m{desc|firstline}\033[0m\n\n'
-
-[pager]
-pager = delta --hunk-header-style "line-number file" --line-numbers --max-line-distance 0.9 --inspect-raw-lines=false
-
-[color]
-sl.public = color70  bold
-sl.draft = color208 bold
-sl.current = color99 bold
-sl.diff = red bold
-
-[committemplate]
-emptymsg = ""
-
diff --git a/.config/starship.toml b/.config/starship.toml
deleted file mode 100644
index f983e5f..0000000
--- a/.config/starship.toml
+++ /dev/null
@@ -1,77 +0,0 @@
-"$schema" = 'https://starship.rs/config-schema.json'
-
-add_newline = true
-
-format = """\
-$fill\
-${custom.pwd}\
-$line_break\
-$hostname\
-$directory\
-($character)\
-"""
-
-right_format = """\
-$cmd_duration\
-$git_branch$git_commit$git_status$git_state\
-"""
-
-[hostname]
-ssh_only = false
-format = "[$hostname](italic bold)"
-disabled = false
-
-[time]
-disabled = false
-format = '[ $time](italic dimmed inverted)'
-time_format = '%R'
-
-[custom.pwd]
-command = "prompt_pwd -D 100"
-when = true
-format = "[ $output]($style)"
-style = "italic dimmed"
-
-[directory]
-fish_style_pwd_dir_length = 1
-truncation_length = 1
-truncate_to_repo = false
-truncation_symbol = "…"
-style = "italic"
-
-[line_break]
-disabled = false
-
-[fill]
-symbol = '┄'
-style = 'dimmed fg:#888888'
-
-[character]
-success_symbol = "[%](bold)"
-error_symbol = "[✖](bold red)"
-
-[cmd_duration]
-min_time = 500
-format = '[󱦟 $duration ](yellow)'
-
-[git_branch]
-format = "[$symbol$branch]($style)"
-style = "italic bold green"
-symbol = " "
-truncation_length = 16
-truncation_symbol = ""
-
-[git_commit]
-format = "[ $hash$tag]($style) "
-style = "cyan"
-
-[git_state]
-style = ""
-
-[git_status]
-format = '([$all_status$ahead_behind]($style))'
-style = "fg:#00ac73"
-modified = "[ 󰦒](yellow)"
-deleted = "[ ✘](red)"
-untracked = "[ ?](purple)"
-staged = "[ 󰐖](cyan)"
diff --git a/.config/systemd/user/opener@.service b/.config/systemd/user/opener@.service
deleted file mode 100644
index fcd14c9..0000000
--- a/.config/systemd/user/opener@.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Open URL in your local web browser from the SSH-connected remote environment.
-After=graphical-session.target
-
-[Service]
-Restart=always
-Environment=OPENER_CONF=%t/opener.%i.conf
-ExecStart=/bin/sh -c 'echo "address: %t/opener.%i.sock" > $OPENER_CONF && exec %h/bin/opener --config $OPENER_CONF'
-
-[Install]
-WantedBy=graphical-session.target
diff --git a/.config/systemd/user/tmux.service b/.config/systemd/user/tmux.service
deleted file mode 100644
index fc4806c..0000000
--- a/.config/systemd/user/tmux.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Run tmux server
-
-[Service]
-Restart=always
-StartLimitIntervalSec=0
-ExecStart=/usr/bin/tmux -D -u
-
-[Install]
-WantedBy=default.target
diff --git a/.config/vconsole/personal.map b/.config/vconsole/personal.map
deleted file mode 100644
index 1740bb1..0000000
--- a/.config/vconsole/personal.map
+++ /dev/null
@@ -1,3 +0,0 @@
-include "linux-with-two-alt-keys"
-keycode 58 = Control
-
diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations
deleted file mode 100644
index b0d3a00..0000000
--- a/.config/zsh-abbr/user-abbreviations
+++ /dev/null
@@ -1,13 +0,0 @@
-abbr "b"="git branch -va"
-abbr "c"="git commit"
-abbr "d"="git diff --stat -p -C --color-words"
-abbr "g"="git"
-abbr "gsw"="git gerrit-switch"
-abbr "k"="kubectl"
-abbr "new"="git checkout --detach main"
-abbr "p"="git push"
-abbr "rec"="git record"
-abbr "s"="git st"
-abbr "sl"="git branchless smartlog"
-abbr "sw"="git branchless switch --interactive"
-abbr "sy"="git sync --pull"
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..0f94eed
--- /dev/null
+++ b/.envrc
@@ -0,0 +1,2 @@
+# shellcheck shell=bash
+use flake
diff --git a/.gitconfig b/.gitconfig
deleted file mode 100644
index e001475..0000000
--- a/.gitconfig
+++ /dev/null
@@ -1,150 +0,0 @@
-[alias]
-b = branch -va
-cl = clone --filter=blob:none
-co = checkout
-d = diff --stat -p -C --color-words
-ds = diff --staged --stat -p -C --color-words
-dt = difftool
-patch = !git --no-pager diff --no-color
-pullr = pull --rebase --autostash
-sh = show --stat -p -C --color-words --show-signature
-st = status -sb
-t = tag --sort=-v:refname --format='%(color:bold italic)%(objectname:short)%(color:noitalic) %(refname:short)'
-
-new = !git fetch -u origin main:main && git branchless switch -d origin/main
-sl = branchless smartlog
-sync = branchless sync
-sw = branchless switch
-s = branchless switch -i
-
-copr = "!f() { \
-  pr=$1 \
-  && test -n \"$pr\" || pr=`tea pr list -o simple | fzf --bind 'enter:become(echo {+1})'` \
-  && git fetch origin refs/pull/$pr/head \
-  && git checkout --detach FETCH_HEAD \
-  ;};f"
-
-g = graph -S -m simple -s round
-ll = "log --pretty='format:%x1B[0;3;36m%as %G? %x1B[0;95;3m%<(12,trunc)%al %x1B[3;32m• %h%x1B[0;1;92m%(decorate:prefix= [,suffix=]%n)%>|(35)%Creset %s'"
-lla = "log --graph --all --topo-order --pretty='format:\t%x1B[0;3;36m%as %x1B[0;95;3m%<(12)%al %x1B[3;32m• %h%x1B[0;1;92m%d%x1B[0m %s'"
-
-guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"
-serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/
-
-[apply]
-whitespace = nowarn
-
-[blame]
-date = relative
-
-[branch "main"]
-rebase = true
-
-[branch "master"]
-rebase = true
-
-[color]
-branch = auto
-diff = auto
-status = auto
-ui = auto
-
-[column]
-ui = auto
-
-[core]
-compression = 3
-excludesfile = "~/.gitignore"
-looseCompression = 3
-pager = delta
-
-[delta]
-file-added-label =  "[+]"
-file-decoration-style=none
-file-modified-label = "[*]"
-file-removed-label = "[-]"
-file-renamed-label = "[>]"
-file-style = bold reverse 
-file-transformation = "s/$/  ░▒▓/"
-hunk-header-decoration-style=none
-hunk-header-file-style = bold
-hunk-header-line-number-style = bold
-hunk-header-style = line-number bold
-hunk-label = "⯁"
-hunk-label-style = bold
-line-numbers = true
-max-line-distance = 0.9
-
-[http]
-cookiefile = /home/dln/.gitcookies
-
-[hub]
-protocol = git
-
-[interactive]
-diffFilter = delta --color-only --features=interactive
-
-[commit]
-gpgsign = false
-verbose = true
-
-[credential]
-helper = store
-
-[diff]
-algorithm = histogram
-tool = difft
-
-[difftool]
-prompt = false
-
-[difftool "difft"]
-cmd = difft --color=always --display inline "$LOCAL" "$REMOTE" | bat
-
-[fetch]
-prune = true
-prunetags = true
-showForcedUpdates = true
-
-[filter "lfs"]
-clean = git-lfs clean -- %f
-process = git-lfs filter-process
-required = true
-smudge = git-lfs smudge -- %f
-
-[gpg]
-format = ssh
-
-[gpg "ssh"]
-allowedSignersFile = ~/.config/git/allowed_signers
-defaultKeyCommand = /home/dln/.config/git/signing-key.sh
-
-[init]
-defaultBranch = main
-
-[lfs]
-concurrenttransfers = 32
-
-[merge]
-conflictstyle = zdiff3
-
-[pack]
-compression = 3
-threads = 0
-
-[push]
-default = tracking
-
-[rebase]
-autosquash = true
-
-[rerere]
-enabled = true
-
-[tag]
-sort = -v:refname
-
-[user]
-email = dln@arity.se
-name = Daniel Lundin
-useConfigOnly = true
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 4bb6205..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-*~
-*.a
-*.class
-/.idea
-*.iml
-*.ipr
-*.iwr
-*.iws
-*.la
-*.o
-*.pyc
-*.so
-*.swp
-
diff --git a/.gnupg/gpg-agent.conf b/.gnupg/gpg-agent.conf
deleted file mode 100644
index db49aaf..0000000
--- a/.gnupg/gpg-agent.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-enable-ssh-support
-default-cache-ttl 3600
-max-cache-ttl 3600
-extra-socket /run/user/1000/gnupg/S.gpg-agent.extra
diff --git a/.gnupg/gpg.conf b/.gnupg/gpg.conf
deleted file mode 100644
index 50f74df..0000000
--- a/.gnupg/gpg.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-#use-agent
-keyid-format LONG
diff --git a/.inputrc b/.inputrc
deleted file mode 100644
index 062ffe5..0000000
--- a/.inputrc
+++ /dev/null
@@ -1,11 +0,0 @@
-set meta-flag on
-set convert-meta off
-set output-meta on
-set completion-ignore-case on
-set visible-stats on
-set show-all-if-ambiguous on
-set completion-query-items 150
-
-#"\C-p": history-search-backward
-#"\C-n": history-search-forward
-
diff --git a/.jjconfig.toml b/.jjconfig.toml
deleted file mode 100644
index befcefa..0000000
--- a/.jjconfig.toml
+++ /dev/null
@@ -1,21 +0,0 @@
-[user]
-name = "Daniel Lundin"
-email = "dln@arity.se"
-
-[ui]
-default-command = "l"
-diff-editor = ["scm-diff-editor", "--dir-diff", "$left", "$right"]
-pager = ["delta", "--line-numbers", "--max-line-distance=0.9"]
-
-[aliases]
-l = ["log", "--ignore-working-copy", "-r", "(main..@): | (main..@)-"]
-la = ["log", "--ignore-working-copy", "-r", "all()"]
-b = ["branch", "list"]
-n = ["new", "main"]
-d = ["diff"]
-
-[revset-aliases]
-# The `main.. &` bit is an optimization to scan for non-`mine()` commits only
-# among commits that are not in `main`.
-"immutable_heads()" = "main@origin | (main@origin.. & ~mine())"
-
diff --git a/.lessfilter b/.lessfilter
deleted file mode 100755
index 43d2942..0000000
--- a/.lessfilter
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /usr/bin/env bash
-mime=$(file -Lbs --mime-type "$1")
-category=${mime%%/*}
-kind=${mime##*/}
-ext=${1##*.}
-if [ "$kind" = json ]; then
-	if [ "$(command -v jq)" ]; then
-		jq -Cr . "$1"
-	fi
-elif [ "$kind" = vnd.sqlite3 ]; then
-	if [ "$(command -v yes)" ] && [ "$(command -v sqlite3)" ] && [ "$(command -v bat)" ]; then
-		yes .q | sqlite3 "$1" | bat --color=always -plsql
-	fi
-# https://github.com/wofr06/lesspipe/pull/107
-elif [ -d "$1" ]; then
-	if [ "$(command -v exa)" ]; then
-		exa --git -hl --color=always --icons "$1"
-	fi
-# https://github.com/wofr06/lesspipe/pull/110
-elif [ "$kind" = pdf ]; then
-	if [ "$(command -v pdftotext)" ] && [ "$(command -v sed)" ]; then
-		pdftotext -q "$1" - | sed "s/\f/$(hr ─)\n/g"
-	fi
-# https://github.com/wofr06/lesspipe/pull/115
-elif [ "$kind" = rfc822 ]; then
-	if [ "$(command -v bat)" ]; then
-		bat --color=always -lEmail "$1"
-	fi
-# https://github.com/wofr06/lesspipe/pull/106
-elif [ "$category" = image ]; then
-	if [ "$(command -v chafa)" ]; then
-		chafa -f symbols "$1"
-	fi
-	if [ "$(command -v exiftool)" ]; then
-		exiftool "$1" | bat --color=always -plyaml
-	fi
-# https://github.com/wofr06/lesspipe/pull/117
-elif [ "$category" = text ]; then
-	if [ "$(command -v bat)" ]; then
-		bat --color=always "$1"
-	elif [ "$(command -v pygmentize)" ]; then
-		pygmentize "$1" | less
-	fi
-else
-	exit 1
-fi
diff --git a/.local/share/applications/firefox-arity.desktop b/.local/share/applications/firefox-arity.desktop
deleted file mode 100644
index c417974..0000000
--- a/.local/share/applications/firefox-arity.desktop
+++ /dev/null
@@ -1,13 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=Firefox (Arity)
-GenericName=Web Browser
-Comment=Browse the Web
-Exec=firefox %u -P Arity --name firefox-arity
-Icon=firefox
-Terminal=false
-Type=Application
-MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
-StartupWMClass=firefox-arity
-Categories=Network;WebBrowser;
-Keywords=web;browser;internet;
diff --git a/.local/share/applications/firefox-work.desktop b/.local/share/applications/firefox-work.desktop
deleted file mode 100644
index 805a7a9..0000000
--- a/.local/share/applications/firefox-work.desktop
+++ /dev/null
@@ -1,13 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=Firefox (Work)
-GenericName=Web Browser
-Comment=Browse the Web
-Exec=firefox %u -P Work --new-instance --name firefox-work
-Icon=firefox
-Terminal=false
-Type=Application
-MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
-StartupWMClass=firefox-work
-Categories=Network;WebBrowser;
-Keywords=web;browser;internet;
diff --git a/.local/share/applications/google-chrome-beta-client.desktop b/.local/share/applications/google-chrome-beta-client.desktop
deleted file mode 100644
index cd2f598..0000000
--- a/.local/share/applications/google-chrome-beta-client.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=Client Chrome
-StartupWMClass=Google-chrome-beta-client
-Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-client --class=Google-chrome-beta-client
-StartupNotify=true
-Terminal=false
-Icon=google-chrome-beta
-Type=Application
-Categories=Network;WebBrowser;
-MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
diff --git a/.local/share/applications/google-chrome-beta-private.desktop b/.local/share/applications/google-chrome-beta-private.desktop
deleted file mode 100644
index 581a1ba..0000000
--- a/.local/share/applications/google-chrome-beta-private.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=Private Chrome
-StartupWMClass=Google-chrome-beta-private
-Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-private --class=Google-chrome-beta-private
-StartupNotify=true
-Terminal=false
-Icon=google-chrome-beta
-Type=Application
-Categories=Netprivate;WebBrowser;
-MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
diff --git a/.local/share/applications/google-chrome-beta-work.desktop b/.local/share/applications/google-chrome-beta-work.desktop
deleted file mode 100644
index 9912349..0000000
--- a/.local/share/applications/google-chrome-beta-work.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=Work Chrome
-StartupWMClass=Google-chrome-beta-work
-Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-work --class=Google-chrome-beta-work
-StartupNotify=true
-Terminal=false
-Icon=google-chrome-beta
-Type=Application
-Categories=Network;WebBrowser;
-MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
diff --git a/.local/share/applications/meet.desktop b/.local/share/applications/meet.desktop
deleted file mode 100644
index 4dca9eb..0000000
--- a/.local/share/applications/meet.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=Google Meet
-StartupWMClass=meet.google.com
-Exec=/usr/bin/google-chrome-stable --profile-directory='Profile 1' --app=https://meet.google.com
-Terminal=false
-Icon=camera-video
-Type=Application
-Categories=Network;Office
diff --git a/.local/share/applications/plex.desktop b/.local/share/applications/plex.desktop
deleted file mode 100644
index 49d5d49..0000000
--- a/.local/share/applications/plex.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=plex
-StartupWMClass=plex.aarn.shelman.io
-Exec=/usr/bin/google-chrome-stable --profile-directory='Profile 2' --app=https://plex.home:32400/web/index.html
-Terminal=false
-Icon=google-chrome
-Type=Application
-Categories=Audio;
diff --git a/.local/share/applications/spotify.desktop b/.local/share/applications/spotify.desktop
deleted file mode 100644
index 4359bc1..0000000
--- a/.local/share/applications/spotify.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Spotify
-GenericName=Music Player
-Icon=spotify-client
-TryExec=spotify
-Exec=spotify --force-device-scale-factor=2 %U
-Terminal=false
-MimeType=x-scheme-handler/spotify;
-Categories=Audio;Music;Player;AudioVideo;
-StartupWMClass=spotify
diff --git a/.local/share/applications/wezterm-dev-secondary.desktop b/.local/share/applications/wezterm-dev-secondary.desktop
deleted file mode 100644
index 9c1905b..0000000
--- a/.local/share/applications/wezterm-dev-secondary.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=wezterm-dev-secondary
-GenericName=wezterm-dev-secondary
-StartupWMClass=org.wezfurlong.wezterm-dev-secondary
-Type=Application
-TryExec=/usr/bin/wezterm
-Icon=org.wezfurlong.wezterm
-Terminal=false
-Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-dev-secondary --domain=dev
diff --git a/.local/share/applications/wezterm-dev.desktop b/.local/share/applications/wezterm-dev.desktop
deleted file mode 100644
index 9cff6ce..0000000
--- a/.local/share/applications/wezterm-dev.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=wezterm-dev
-GenericName=wezterm-dev
-StartupWMClass=org.wezfurlong.wezterm-dev
-Type=Application
-TryExec=/usr/bin/wezterm
-Icon=org.wezfurlong.wezterm
-Terminal=false
-Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-dev --domain=dev
diff --git a/.local/share/applications/wezterm-local.desktop b/.local/share/applications/wezterm-local.desktop
deleted file mode 100644
index 773565d..0000000
--- a/.local/share/applications/wezterm-local.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=wezterm-local
-GenericName=wezterm-local
-StartupWMClass=wezterm-local
-Type=Application
-TryExec=/usr/bin/wezterm
-Icon=org.wezfurlong.wezterm
-Terminal=false
-Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"tmux", "-u", "new", "-As0"}' start --class=wezterm-local
diff --git a/.local/share/applications/wezterm-nemo.desktop b/.local/share/applications/wezterm-nemo.desktop
deleted file mode 100644
index 392778e..0000000
--- a/.local/share/applications/wezterm-nemo.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=wezterm-nemo
-GenericName=wezterm-nemo
-StartupWMClass=org.wezfurlong.wezterm-nemo
-Type=Application
-TryExec=/usr/bin/wezterm
-Icon=org.wezfurlong.wezterm
-Terminal=false
-Categories=System;TerminalEmulator;
-Exec=/usr/bin/wezterm --config 'default_prog={"fish"}' start --class=org.wezfurlong.wezterm-nemo --domain=nemo
diff --git a/.local/share/applications/youtube-music.desktop b/.local/share/applications/youtube-music.desktop
deleted file mode 100644
index a6d0926..0000000
--- a/.local/share/applications/youtube-music.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=YouTube Music (provar)
-StartupWMClass=music.youtube.com
-Exec=/usr/bin/google-chrome-stable --user-data-dir=$HOME/.config/google-chrome --profile-directory='Profile 2' --app=https://music.youtube.com --class=music.youtube.com
-Terminal=false
-Icon=google-chrome
-Type=Application
-Categories=Audio;
diff --git a/.ssh/config b/.ssh/config
deleted file mode 100644
index 50a9bcc..0000000
--- a/.ssh/config
+++ /dev/null
@@ -1,35 +0,0 @@
-ServerAliveInterval 15
-ServerAliveCountMax 3
-ControlMaster auto
-ControlPath ${XDG_RUNTIME_DIR}/ssh_control:%h:%p:%r
-ControlPersist 1200
-Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
-
-AddressFamily inet
-PreferredAuthentications=publickey
-
-Include ~/.ssh/private_config
-
-Host 10.1.100.16
-Host dln-dev
-Host dev
-Hostname 10.1.100.16
- #Hostname aarn.shelman.io
- #Port 2022
-ForwardAgent yes
-ExitOnForwardFailure yes
-Compression no
-#RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.dln-dev.sock
-
-Host nemo
-Hostname 10.1.100.20
-ForwardAgent yes
-ExitOnForwardFailure yes
-Compression no
-RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.nemo.sock
-#LocalForward localhost:3000 localhost:3000
-LocalForward localhost:8000 localhost:8000
-LocalForward localhost:8080 localhost:8080
-
-Host *
-ForwardAgent no
diff --git a/.ssh/rc b/.ssh/rc
deleted file mode 100755
index eb38e90..0000000
--- a/.ssh/rc
+++ /dev/null
@@ -1,4 +0,0 @@
-if [[ -S "$SSH_AUTH_SOCK" && ! -h "$SSH_AUTH_SOCK" ]]; then
-  mkdir -p "${XDG_RUNTIME_DIR}/gcr";
-  ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/gcr/ssh";
-fi
diff --git a/.tmux.conf b/.tmux.conf
deleted file mode 100644
index 3ef1c7d..0000000
--- a/.tmux.conf
+++ /dev/null
@@ -1,96 +0,0 @@
-set -g prefix ^o
-
-set -g base-index 1
-set -g display-panes-time 3000
-set -s escape-time 10
-set -g status on
-set -g status-interval 30
-set -g focus-events on
-set -g allow-passthrough on
-setw -g alternate-screen on
-setw -g aggressive-resize on
-setw -g automatic-rename off
-setw -g mode-keys vi
-set-option -g mouse on
-
-# clipboard
-set -g set-clipboard on
-bind-key ] paste-buffer -p
-
-set-environment -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/gcr/ssh"
-set -g update-environment "BUILD_COMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION"
-#set -g default-command "$SHELL"
-set -g history-limit 10000
-#
-set -g default-terminal "wezterm"
-set -ga terminal-features '*:clipboard:ccolor:hyperlinks:osc7:overline:sixel:strikethrough:title:usstyle:RGB'
-set -ga terminal-overrides ',wezterm:cnorm=\E[?12h\E[?25h'
-
-# Key bindings
-bind -n M-Tab if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window'
-bind -n M-h select-pane -L
-bind -n M-l select-pane -R
-bind -n M-Left select-pane -L
-bind -n M-Right select-pane -R
-# bind -n M-j select-pane -U
-# bind -n M-k select-pane -D
-bind -T copy-mode-vi M-k send-keys -X cursor-up \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
-bind -T copy-mode-vi M-j send-keys -X cursor-down \; send-keys -X next-prompt -o \; send-keys -X cursor-up
-bind -n M-k copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
-bind -n M-j copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
-bind -n M-Up select-pane -U
-bind -n M-Down select-pane -D
-bind -n M-1 select-window -t 42
-bind -n M-2 select-window -t 2
-bind -n M-3 select-window -t 3
-bind -n M-4 select-window -t 4
-bind -n M-5 select-window -t 5
-bind -n M-6 select-window -t 6
-bind -n M-7 select-window -t 7
-bind -n M-8 select-window -t 8
-bind -n M-9 select-window -t 9
-bind -n M-0 select-window -t 10
-
-bind -n M-m send-keys -t 9 q C-u "clear; tmux clear-history -t 9" C-m C-p C-p C-p C-m
-bind C-o send-keys C-o
-bind r source-file ~/.tmux.conf
-bind -n C-Right next-window
-bind -n C-Left previous-window
-bind C-s set-option -g status
-bind K confirm kill-server
-bind C-k clear-history
-bind -n C-l send-keys C-l \; clear-history
-bind-key -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 1 scroll-up
-bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-down
-bind-key / copy-mode \; send-key ?
-bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
-bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
-
-setw -g window-status-format ""
-setw -g window-status-current-format ""
-setw -g window-status-separator ""
-set -g status-style "bg=#444444,fg=#dddddd,italics"
-set -g popup-border-style "fg=#77fecc"
-set -g pane-border-style "fg=#334455"
-set -g pane-active-border-style "fg=#334455"
-set -g status-position bottom
-set -g status-left-length 0
-set -g status-right-length 0
-set -g status-left '[#I] #{pane_current_path}'
-set -g status-right '%F |  %R'
-set -g status off
-set -g set-titles on
-set -g set-titles-string "#H - #T"
-
-new -s0 -n 1
-new-window -n 2
-new-window -n 3
-new-window -n 4
-new-window -n 5
-new-window -n 6
-new-window -n 7
-new-window -n 8
-new-window -n 9
-new-window -n 0
-
-# vim:set ft=tmux:
diff --git a/.vault b/.vault
deleted file mode 100644
index 6f129db..0000000
--- a/.vault
+++ /dev/null
@@ -1,2 +0,0 @@
-#token_helper = "/home/dln/bin/vault-token-helper"
-
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a989f47
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# Home Manager
+
+IT in a box!
diff --git a/bin/git-st b/bin/git-st
deleted file mode 100755
index 764d628..0000000
--- a/bin/git-st
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-
-if git branchless query HEAD >/dev/null 2>&1; then
-	printf '\n ● \e[1m'
-	git branchless query HEAD
-	printf '\e[2;38;5;242m%*s\e[0m\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' '-'
-fi
-
-awk -vOFS='' '
-    NR==FNR {
-        all[i++] = $0;
-        difffiles[$1] = $0;
-        next;
-    }
-    ! ($2 in difffiles) {
-        print; next;
-    }
-    {
-        gsub($2, difffiles[$2]);
-        print;
-    }
-    END {
-        if (NR != FNR) {
-            # Had diff output
-            exit;
-        }
-        # Had no diff output, just print lines from git status -sb
-        for (i in all) {
-            print all[i];
-        }
-    }
-' \
-	<(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') \
-	<(git -c color.status=always status -sb)
-
-printf '\n'
diff --git a/bin/git-wtf b/bin/git-wtf
deleted file mode 100755
index e407eae..0000000
--- a/bin/git-wtf
+++ /dev/null
@@ -1,364 +0,0 @@
-#!/usr/bin/env ruby
-
-HELP = <<EOS
-git-wtf displays the state of your repository in a readable, easy-to-scan
-format. It's useful for getting a summary of how a branch relates to a remote
-server, and for wrangling many topic branches.
-
-git-wtf can show you:
-- How a branch relates to the remote repo, if it's a tracking branch.
-- How a branch relates to integration branches, if it's a feature branch.
-- How a branch relates to the feature branches, if it's an integration
-  branch.
-
-git-wtf is best used before a git push, or between a git fetch and a git
-merge. Be sure to set color.ui to auto or yes for maximum viewing pleasure.
-EOS
-
-KEY = <<EOS
-KEY:
-() branch only exists locally
-{} branch only exists on a remote repo
-[] branch exists locally and remotely
-
-x merge occurs both locally and remotely
-~ merge occurs only locally
-  (space) branch isn't merged in
-
-(It's possible for merges to occur remotely and not locally, of course, but
-that's a less common case and git-wtf currently doesn't display anything
-special for it.)
-EOS
-
-USAGE = <<EOS
-Usage: git wtf [branch+] [options]
-
-If [branch] is not specified, git-wtf will use the current branch. The possible
-[options] are:
-
-  -l, --long          include author info and date for each commit
-  -a, --all           show all branches across all remote repos, not just
-                      those from origin
-  -A, --all-commits   show all commits, not just the first 5
-  -s, --short         don't show commits
-  -k, --key           show key
-  -r, --relations     show relation to features / integration branches
-      --dump-config   print out current configuration and exit
-
-git-wtf uses some heuristics to determine which branches are integration
-branches, and which are feature branches. (Specifically, it assumes the
-integration branches are named "master", "next" and "edge".) If it guesses
-incorrectly, you will have to create a .git-wtfrc file.
-
-To start building a configuration file, run "git-wtf --dump-config >
-.git-wtfrc" and edit it. The config file is a YAML file that specifies the
-integration branches, any branches to ignore, and the max number of commits to
-display when --all-commits isn't used.  git-wtf will look for a .git-wtfrc file
-starting in the current directory, and recursively up to the root.
-
-IMPORTANT NOTE: all local branches referenced in .git-wtfrc must be prefixed
-with heads/, e.g. "heads/master". Remote branches must be of the form
-remotes/<remote>/<branch>.
-EOS
-
-COPYRIGHT = <<EOS
-git-wtf Copyright 2008--2009 William Morgan <wmorgan at the masanjin dot nets>.
-This program is free software: you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the Free
-Software Foundation, either version 3 of the License, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-more details.
-
-You can find the GNU General Public License at: http://www.gnu.org/licenses/
-EOS
-
-require 'yaml'
-CONFIG_FN = ".git-wtfrc"
-
-class Numeric; def pluralize s; "#{to_s} #{s}" + (self != 1 ? "s" : "") end end
-
-if ARGV.delete("--help") || ARGV.delete("-h")
-  puts USAGE
-  exit
-end
-
-## poor man's trollop
-$long = ARGV.delete("--long") || ARGV.delete("-l")
-$short = ARGV.delete("--short") || ARGV.delete("-s")
-$all = ARGV.delete("--all") || ARGV.delete("-a")
-$all_commits = ARGV.delete("--all-commits") || ARGV.delete("-A")
-$dump_config = ARGV.delete("--dump-config")
-$key = ARGV.delete("--key") || ARGV.delete("-k")
-$show_relations = ARGV.delete("--relations") || ARGV.delete("-r")
-ARGV.each { |a| abort "Error: unknown argument #{a}." if a =~ /^--/ }
-
-## search up the path for a file
-def find_file fn
-  while true
-    return fn if File.exist? fn
-    fn2 = File.join("..", fn)
-    return nil if File.expand_path(fn2) == File.expand_path(fn)
-    fn = fn2
-  end
-end
-
-want_color = `git config color.wtf`
-want_color = `git config color.ui` if want_color.empty?
-$color = case want_color.chomp
-  when "true"; true
-  when "auto"; $stdout.tty?
-end
-
-def red s; $color ? "\033[31m#{s}\033[0m" : s end
-def green s; $color ? "\033[32m#{s}\033[0m" : s end
-def yellow s; $color ? "\033[33m#{s}\033[0m" : s end
-def cyan s; $color ? "\033[36m#{s}\033[0m" : s end
-def grey s; $color ? "\033[1;30m#{s}\033[0m" : s end
-def purple s; $color ? "\033[35m#{s}\033[0m" : s end
-
-## the set of commits in 'to' that aren't in 'from'.
-## if empty, 'to' has been merged into 'from'.
-def commits_between from, to
-  if $long
-    `git log --pretty=format:"- %s [#{yellow "%h"}] (#{purple "%ae"}; %ar)" #{from}..#{to}`
-  else
-    `git log --pretty=format:"- %s [#{yellow "%h"}]" #{from}..#{to}`
-  end.split(/[\r\n]+/)
-end
-
-def show_commits commits, prefix="    "
-  if commits.empty?
-    puts "#{prefix} none"
-  else
-    max = $all_commits ? commits.size : $config["max_commits"]
-    max -= 1 if max == commits.size - 1 # never show "and 1 more"
-    commits[0 ... max].each { |c| puts "#{prefix}#{c}" }
-    puts grey("#{prefix}... and #{commits.size - max} more (use -A to see all).") if commits.size > max
-  end
-end
-
-def ahead_behind_string ahead, behind
-  [ahead.empty? ? nil : "#{ahead.size.pluralize 'commit'} ahead",
-   behind.empty? ? nil : "#{behind.size.pluralize 'commit'} behind"].
-   compact.join("; ")
-end
-
-def widget merged_in, remote_only=false, local_only=false, local_only_merge=false
-  left, right = case
-    when remote_only; %w({ })
-    when local_only; %w{( )}
-    else %w([ ])
-  end
-  middle = case
-    when merged_in && local_only_merge; green("~")
-    when merged_in; green("x")
-    else " "
-  end
-  print left, middle, right
-end
-
-def show b
-  have_both = b[:local_branch] && b[:remote_branch]
-
-  pushc, pullc, oosync = if have_both
-    [x = commits_between(b[:remote_branch], b[:local_branch]),
-     y = commits_between(b[:local_branch], b[:remote_branch]),
-     !x.empty? && !y.empty?]
-  end
-
-  if b[:local_branch]
-    puts "Local branch: " + green(b[:local_branch].sub(/^heads\//, ""))
-
-    if have_both
-      if pushc.empty?
-        puts "#{widget true} in sync with remote"
-      else
-        action = oosync ? "push after rebase / merge" : "push"
-        puts "#{widget false} NOT in sync with remote (you should #{action})"
-        show_commits pushc unless $short
-      end
-    end
-  end
-
-  if b[:remote_branch]
-    puts "Remote branch: #{cyan b[:remote_branch]} (#{b[:remote_url]})"
-
-    if have_both
-      if pullc.empty?
-        puts "#{widget true} in sync with local"
-      else
-        action = pushc.empty? ? "merge" : "rebase / merge"
-        puts "#{widget false} NOT in sync with local (you should #{action})"
-        show_commits pullc unless $short
-      end
-    end
-  end
-
-  puts "\n#{red "WARNING"}: local and remote branches have diverged. A merge will occur unless you rebase." if oosync
-end
-
-def show_relations b, all_branches
-  ibs, fbs = all_branches.partition { |name, br| $config["integration-branches"].include?(br[:local_branch]) || $config["integration-branches"].include?(br[:remote_branch]) }
-  if $config["integration-branches"].include? b[:local_branch]
-    puts "\nFeature branches:" unless fbs.empty?
-    fbs.each do |name, br|
-      next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
-      next if br[:ignore]
-      local_only = br[:remote_branch].nil?
-      remote_only = br[:local_branch].nil?
-      name = if local_only
-        purple br[:name]
-      elsif remote_only
-        cyan br[:name]
-      else
-        green br[:name]
-      end
-
-      ## for remote_only branches, we'll compute wrt the remote branch head. otherwise, we'll
-      ## use the local branch head.
-      head = remote_only ? br[:remote_branch] : br[:local_branch]
-
-      remote_ahead = b[:remote_branch] ? commits_between(b[:remote_branch], head) : []
-      local_ahead = b[:local_branch] ? commits_between(b[:local_branch], head) : []
-
-      if local_ahead.empty? && remote_ahead.empty?
-        puts "#{widget true, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is merged in"
-      elsif local_ahead.empty?
-        puts "#{widget true, remote_only, local_only, true} #{name} merged in (only locally)"
-      else
-        behind = commits_between head, (br[:local_branch] || br[:remote_branch])
-        ahead = remote_only ? remote_ahead : local_ahead
-        puts "#{widget false, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is NOT merged in (#{ahead_behind_string ahead, behind})"
-        show_commits ahead unless $short
-      end
-    end
-  else
-    puts "\nIntegration branches:" unless ibs.empty? # unlikely
-    ibs.sort_by { |v, br| v }.each do |v, br|
-      next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
-      next if br[:ignore]
-      local_only = br[:remote_branch].nil?
-      remote_only = br[:local_branch].nil?
-      name = remote_only ? cyan(br[:name]) : green(br[:name])
-
-      ahead = commits_between v, (b[:local_branch] || b[:remote_branch])
-      if ahead.empty?
-        puts "#{widget true, local_only} merged into #{name}"
-      else
-        #behind = commits_between b[:local_branch], v
-        puts "#{widget false, local_only} NOT merged into #{name} (#{ahead.size.pluralize 'commit'} ahead)"
-        show_commits ahead unless $short
-      end
-    end
-  end
-end
-
-#### EXECUTION STARTS HERE ####
-
-## find config file and load it
-$config = { "integration-branches" => %w(heads/master heads/next heads/edge), "ignore" => [], "max_commits" => 5 }.merge begin
-  fn = find_file CONFIG_FN
-  if fn && (h = YAML::load_file(fn)) # yaml turns empty files into false
-    h["integration-branches"] ||= h["versions"] # support old nomenclature
-    h
-  else
-    {}
-  end
-end
-
-if $dump_config
-  puts $config.to_yaml
-  exit
-end
-
-## first, index registered remotes
-remotes = `git config --get-regexp ^remote\.\*\.url`.split(/[\r\n]+/).inject({}) do |hash, l|
-  l =~ /^remote\.(.+?)\.url (.+)$/ or next hash
-  hash[$1] ||= $2
-  hash
-end
-
-## next, index followed branches
-branches = `git config --get-regexp ^branch\.`.split(/[\r\n]+/).inject({}) do |hash, l|
-  case l
-  when /branch\.(.*?)\.remote (.+)/
-    name, remote = $1, $2
-
-    hash[name] ||= {}
-    hash[name].merge! :remote => remote, :remote_url => remotes[remote]
-  when /branch\.(.*?)\.merge ((refs\/)?heads\/)?(.+)/
-    name, remote_branch = $1, $4
-    hash[name] ||= {}
-    hash[name].merge! :remote_mergepoint => remote_branch
-  end
-  hash
-end
-
-## finally, index all branches
-remote_branches = {}
-`git show-ref`.split(/[\r\n]+/).each do |l|
-  sha1, ref = l.chomp.split " refs/"
-
-  if ref =~ /^heads\/(.+)$/ # local branch
-    name = $1
-    next if name == "HEAD"
-    branches[name] ||= {}
-    branches[name].merge! :name => name, :local_branch => ref
-  elsif ref =~ /^remotes\/(.+?)\/(.+)$/ # remote branch
-    remote, name = $1, $2
-    remote_branches["#{remote}/#{name}"] = true
-    next if name == "HEAD"
-    ignore = !($all || remote == "origin")
-
-    branch = name
-    if branches[name] && branches[name][:remote] == remote
-      # nothing
-    else
-      name = "#{remote}/#{branch}"
-    end
-
-    branches[name] ||= {}
-    branches[name].merge! :name => name, :remote => remote, :remote_branch => "#{remote}/#{branch}", :remote_url => remotes[remote], :ignore => ignore
-  end
-end
-
-## assemble remotes
-branches.each do |k, b|
-  next unless b[:remote] && b[:remote_mergepoint]
-  b[:remote_branch] = if b[:remote] == "."
-    b[:remote_mergepoint]
-  else
-    t = "#{b[:remote]}/#{b[:remote_mergepoint]}"
-    remote_branches[t] && t # only if it's still alive
-  end
-end
-
-show_dirty = ARGV.empty?
-targets = if ARGV.empty?
-  [`git symbolic-ref HEAD`.chomp.sub(/^refs\/heads\//, "")]
-else
-  ARGV.map { |x| x.sub(/^heads\//, "") }
-end.map { |t| branches[t] or abort "Error: can't find branch #{t.inspect}." }
-
-targets.each do |t|
-  show t
-  show_relations t, branches if $show_relations || t[:remote_branch].nil?
-end
-
-modified = show_dirty && `git ls-files -m` != ""
-uncommitted = show_dirty &&  `git diff-index --cached HEAD` != ""
-
-if $key
-  puts
-  puts KEY
-end
-
-puts if modified || uncommitted
-puts "#{red "NOTE"}: working directory contains modified files." if modified
-puts "#{red "NOTE"}: staging area contains staged but uncommitted files." if uncommitted
-
-# the end!
diff --git a/bin/ktoolbox b/bin/ktoolbox
deleted file mode 120000
index fcc985d..0000000
--- a/bin/ktoolbox
+++ /dev/null
@@ -1 +0,0 @@
-/home/dln/src/github.com/dln/ktoolbox/ktoolbox
\ No newline at end of file
diff --git a/bin/pst b/bin/pst
deleted file mode 100755
index 3239f28..0000000
--- a/bin/pst
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-set -eo pipefail
-
-URL="https://paste.aarn.shelman.io"
-
-FILEPATH="$1"
-FILENAME=$(basename -- "$FILEPATH")
-EXTENSION="${FILENAME##*.}"
-
-RESPONSE=$(curl -s --data-binary "@${FILEPATH:-/dev/stdin}" --url $URL)
-PASTELINK="$URL$RESPONSE"
-
-[ -z "$EXTENSION" ] &&
-	echo "$PASTELINK" ||
-	echo "$PASTELINK.$EXTENSION"
diff --git a/bin/starship-sl-status b/bin/starship-sl-status
deleted file mode 100755
index 8a80026..0000000
--- a/bin/starship-sl-status
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env bash
-set -xfeuo pipefail
-
-state="${XDG_RUNTIME_DIR}/starship-sl-status"
-checkout="${state}.checkout"
-status="${state}.data"
-
-if [[ "$PWD" != $(readlink -f "$state")* ]]; then
-	rm -f "$state"
-	root="$(sl root 2>/dev/null || true)"
-	ln -s "$root" "$state"
-	if [[ -z "${root}" ]]; then
-		echo >"${status}"
-		echo >"${checkout}"
-		exit 0
-	fi
-fi
-
-saved_cid=$(cat "${checkout}" 2>/dev/null || true)
-root_cid=$(cat "${state}/.sl/checkoutidentifier" || true)
-if [[ ${root_cid} != "${saved_cid}" ]]; then
-	echo "${root_cid}" >"${checkout}"
-	sl log -r . -T '{if(github_pull_request_number, "#{github_pull_request_number} @ ", if(bookmarks, "{bookmarks} @ "))}{node|short}{if(remotenames, ":{remotenames}")}' >"${status}"
-fi
-
-cat "$status" || true
diff --git a/bin/tmux-build-helper b/bin/tmux-build-helper
deleted file mode 100755
index e27347c..0000000
--- a/bin/tmux-build-helper
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-set -ef -o pipefail
-eval "$(direnv export bash)"
-eval "${BUILD_COMMAND:-echo 'BUILD_COMMAND not set'}" | bat --paging=always
diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper
deleted file mode 120000
index cdf7994..0000000
--- a/bin/tmux-edit-helper
+++ /dev/null
@@ -1 +0,0 @@
-tmux-nvim-helper
\ No newline at end of file
diff --git a/bin/tmux-edit-history b/bin/tmux-edit-history
deleted file mode 100755
index 6631110..0000000
--- a/bin/tmux-edit-history
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-set -eo pipefail
-_file=$(fre --store_name edit-history --sorted | exec fzf --no-sort --preview "bat {}" --preview-window=down,70%,wrap,border-top --color=bg+:16,fg+:49,pointer:49 --layout=reverse "--bind=alt-e:become(tmux-edit-helper)")
-[ -n "$_file" ] && exec tmux-edit-helper "$_file"
diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper
deleted file mode 100755
index 633150e..0000000
--- a/bin/tmux-hx-helper
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env bash
-set -eo pipefail
-
-eval "$(direnv export bash 2>/dev/null)"
-
-PATH="$HOME/bin:$PATH"
-
-if [ -n "$1" ]; then
-	_file=$(readlink -f "$@")
-else
-	FZF=${FZF:-"fzf-tmux -p 90%,90% -y 0"}
-	_root=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
-	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
-	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort --preview "bat {}" --preview-window=bottom,70%,border-top --color=bg+:16,fg+:49,pointer:49 --layout=reverse "--bind=alt-e:become(tmux-edit-history)")
-	_file="${_root}/${_file}"
-	fre --store_name "$_store" --add "$_file"
-fi
-
-fre --store_name "edit-history" --add "$_file"
-
-tmux-shortcut 1 env \
-	"AR=$AR" \
-	"AS=$AS" \
-	"BUILD_COMMAND=$BUILD_COMMAND" \
-	"CC=$CC" \
-	"CXX=$CXX" \
-	"GOFLAGS=$GOFLAGS" \
-	"GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
-	"LC_ALL=$LC_ALL" \
-	"LD=$LD" \
-	"NM=$NM" \
-	"NM=$NM" \
-	"OBJCOPY=$OBJCOPY" \
-	"OBJDUMP=$OBJDUMP" \
-	"PATH=$PATH" \
-	"RANLIB=$RANLIB" \
-	"READELF=$READELF" \
-	"RUST_SRC_PATH=$RUST_SRC_PATH" \
-	"SIZE=$SIZE" \
-	"STRIP=$STRIP" \
-	helix "${_file}"
-sleep 0.1
-tmux send-keys Escape &&
-	tmux send-keys ":open ${_file}" Enter ":reload" Enter
diff --git a/bin/tmux-nvim-helper b/bin/tmux-nvim-helper
deleted file mode 100755
index 68f1e9e..0000000
--- a/bin/tmux-nvim-helper
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env bash
-set -fe -o pipefail
-
-eval "$(direnv export bash 2>/dev/null)"
-
-PATH="$HOME/bin:$PATH"
-
-if [ -n "$1" ]; then
-	_file=$(readlink -f "$@")
-else
-	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0 --layout=reverse"}
-	_root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
-	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
-	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
-	_file="${_root}/${_file}"
-	fre --store_name "$_store" --add "$_file"
-fi
-
-fre --store_name "edit-history" --add "$_file"
-
-_nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock"
-
-(tmux select-window -t nvim 2>/dev/null && tmux select-pane -t 0) && exec nvim --server "$_nvim_socket" --remote "$_file"
-
-# nvim is not running/listening on remote socket, so start it.
-tmux new-window -S -t 42 -n nvim \
-	-e "AR=$AR" \
-	-e "AS=$AS" \
-	-e "BUILD_COMMAND=$BUILD_COMMAND" \
-	-e "CC=$CC" \
-	-e "CXX=$CXX" \
-	-e "GOFLAGS=$GOFLAGS" \
-	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
-	-e "LC_ALL=$LC_ALL" \
-	-e "LD=$LD" \
-	-e "NM=$NM" \
-	-e "NM=$NM" \
-	-e "OBJCOPY=$OBJCOPY" \
-	-e "OBJDUMP=$OBJDUMP" \
-	-e "PATH=$PATH" \
-	-e "RANLIB=$RANLIB" \
-	-e "READELF=$READELF" \
-	-e "RUST_SRC_PATH=$RUST_SRC_PATH" \
-	-e "SIZE=$SIZE" \
-	-e "STRIP=$STRIP" \
-	nvim --listen "$_nvim_socket" "$_file"
diff --git a/bin/tmux-shortcut b/bin/tmux-shortcut
deleted file mode 100755
index 536ab54..0000000
--- a/bin/tmux-shortcut
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-set -eo pipefail
-
-nr="@app-${1}"
-shift
-
-pane="$(tmux show -vg ${nr} || true)"
-if [[ -n "${pane}" ]] && tmux has-session -t "${pane}" ; then
-  if tmux list-panes -F "#{pane_id}" | grep "^${pane}\$" >>/dev/null ; then
-    # Pane is on this window. Focus it and exit.
-    exec tmux select-pane -t "${pane}"
-  fi
-else
-  # App pane does not exist, so create a new window.
-  pane=$(tmux new-window -d -P -F '#{pane_id}' "$@")
-  tmux set -g "${nr}" "${pane}"
-fi
-
-# Swap active pane for app
-tmux swap-pane -s "${pane}"
diff --git a/bin/tpm2-pkcs11-init-ssh.sh b/bin/tpm2-pkcs11-init-ssh.sh
deleted file mode 100755
index b66fb8d..0000000
--- a/bin/tpm2-pkcs11-init-ssh.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-set -e
-
-store=$1
-if  [ -z "$store" ]; then
-  echo "Usage: $0 [store-name]"
-  exit 1
-fi
-
-export TPM2_PKCS11_STORE=$HOME/.local/share/tpm2-pkcs11/${store}
-
-echo "=> Initializing store ${TPM2_PKCS11_STORE}"
-mkdir -p $TPM2_PKCS11_STORE
-tpm2_ptool init
-tpm2_ptool addtoken --pid=1 --label=ssh --sopin="$(systemd-ask-password SOPIN)" --userpin="$(systemd-ask-password USERPIN)"
-
-echo
-echo "=> Adding SSH key"
-tpm2_ptool addkey --label=ssh --algorithm=ecc256 --userpin="$(systemd-ask-password USERPIN)"
-
-echo
-echo "Store path: $TPM2_PKCS11_STORE"
-echo "SSH public key:"
-ssh-keygen -D /usr/lib/pkcs11/libtpm2_pkcs11.so 2>>/dev/null
diff --git a/bin/url-copy b/bin/url-copy
deleted file mode 100755
index 281715e..0000000
--- a/bin/url-copy
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-echo "$@" | xclip -selection clipboard
diff --git a/bin/vault-token-helper.sh b/bin/vault-token-helper.sh
deleted file mode 100755
index bac9855..0000000
--- a/bin/vault-token-helper.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env bash
-
-# Vault Token helper for the Linux key retention service.
-#
-# Since version 2.6, the Linux kernel has included a efficiently store
-# authentication data on a per thread, per process, per user, or per session
-# bases.
-#
-# Linux Key Management Utilities (keyutils) provides `keyctl` to control
-# the facility from the shell.
-#
-# see https://www.kernel.org/doc/Documentation/security/keys/core.rst
-# see https://www.kernel.org/doc/Documentation/security/keys.txt
-# see https://lwn.net/Articles/210502/
-# see https://www.ibm.com/developerworks/library/l-key-retention/index.html
-#
-# Vault allows an external programs to be configured as a token helper
-# that can get, store, and erase tokens on behalf of the Vault client.
-#
-# see https://www.vaultproject.io/docs/commands/token-helper.html
-#
-# To use this script, make it executable and set your ~/.vault file to
-# contain:
-#
-# token_helper = "/path/to/vault-token-helper.sh"
-
-# Exit on error.
-set -o errexit
-# Exit on error inside any functions or subshells.
-set -o errtrace
-# Do not allow use of undefined vars.
-set -o nounset
-# Catch the error if any piped command fails.
-set -o pipefail
-
-desc=VAULT_TOKEN:${VAULT_ADDR}
-
-case $1 in
-get)
-    # If the key is not set, keyctl returns "request_key: Required key not available"
-    # on stderr and exits with a non-zero status. The implied
-    key_id=$(keyctl request user ${desc} || echo '')
-    [ -z ${key_id} ] && exit 0
-    keyctl pipe ${key_id}
-;;
-store)
-    # Vault sends the token on stdin but there is no linebreak, so EOF is reached
-    # which causes read to return a non-zero status.
-    read -r token || true
-    echo -n ${token} | keyctl padd user ${desc} @u
-;;
-erase)
-    keyctl purge user ${desc}
-;;
-esac
diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper
deleted file mode 100755
index 7c93727..0000000
--- a/bin/wezterm-edit-helper
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-set -fe -o pipefail
-
-eval "$(direnv export bash 2>/dev/null)"
-
-PATH="$HOME/bin:$PATH"
-
-if [ -n "$1" ]; then
-	_file=$(readlink -f "$@")
-else
-	FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0 --layout=reverse"}
-	_root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd)
-	_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
-	_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
-	_file="${_root}/${_file}"
-	fre --store_name "$_store" --add "$_file"
-fi
-
-fre --store_name "edit-history" --add "$_file"
-
-rm -f "$XDG_RUNTIME_DIR/nvim-persistent.sock"
-nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote "$_file" &>/dev/null
-
-# Wezterm: switch tab to nvim
-printf "\033]1337;SetUserVar=%s=%s\007" nvim_activate $(date +%s | base64)
diff --git a/bin/xdg-open b/bin/xdg-open
deleted file mode 100755
index 801d576..0000000
--- a/bin/xdg-open
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env sh
-set -e
-
-# Use local xdg-open if not in an ssh session
-[ -n "$SSH_TTY" ] || exec xdg-open "$@"
-
-if [ -p /dev/stdin ]; then
-	exec nc -U "$XDG_RUNTIME_DIR/opener.sock" </dev/stdin
-else
-	echo "$@" | nc -U "$XDG_RUNTIME_DIR/opener.sock"
-fi
diff --git a/common/atuin.nix b/common/atuin.nix
new file mode 100644
index 0000000..6e7f79f
--- /dev/null
+++ b/common/atuin.nix
@@ -0,0 +1,40 @@
+{ pkgs, ... }:
+{
+  programs.atuin = {
+    enable = true;
+    enableFishIntegration = true;
+    settings = {
+      ctrl_n_shortcuts = true;
+      enter_accept = true;
+      filter_mode_shell_up_key_binding = "session";
+      history_filter = [ ];
+      inline_height = 8;
+      prefers_reduced_motion = true;
+      search_mode_shell_up_key_binding = "prefix";
+      show_help = false;
+      style = "compact";
+      sync_address = "https://atuin.aarn.shelman.io";
+      sync.records = true;
+
+      stats.common_subcommands = [
+        "cargo"
+        "git"
+        "go"
+        "jj"
+        "just"
+        "kubectl"
+        "nix"
+        "npm"
+        "pnpm"
+        "talosctl"
+        "task"
+        "yarn"
+      ];
+
+      stats.common_prefix = [
+        "doas"
+        "sudo"
+      ];
+    };
+  };
+}
diff --git a/common/broot.nix b/common/broot.nix
new file mode 100644
index 0000000..133b3e7
--- /dev/null
+++ b/common/broot.nix
@@ -0,0 +1,63 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+{
+  programs.broot = {
+    enable = true;
+    enableFishIntegration = true;
+    settings = {
+      content_search_max_file_size = "10MB";
+      enable_kitty_keyboard = lib.mkForce true;
+      icon_theme = "nerdfont";
+      lines_before_match_in_preview = 1;
+      lines_after_match_in_preview = 1;
+      quit_on_last_cancel = true;
+      show_selection_mark = true;
+      special_paths = {
+        "~/media" = {
+          list = "never";
+          sum = "never";
+        };
+        "~/.config" = {
+          show = "always";
+        };
+        "trav" = {
+          show = "always";
+          list = "always";
+          sum = "never";
+        };
+      };
+      true_colors = true;
+
+      verbs = [
+        {
+          invocation = "broot_home";
+          key = "ctrl-7";
+          external = "br $HOME";
+          from_shell = true;
+          leave_broot = true;
+        }
+        {
+          invocation = "edit";
+          key = "enter";
+          shortcut = "e";
+          external = "edit {file}";
+          apply_to = "text_file";
+          from_shell = true;
+          leave_broot = true;
+        }
+        {
+          invocation = "nvim";
+          key = "enter";
+          apply_to = "text_file";
+          external = "edit {file}";
+          from_shell = true;
+          leave_broot = true;
+        }
+      ];
+    };
+  };
+}
diff --git a/common/default.nix b/common/default.nix
new file mode 100644
index 0000000..d36eaaa
--- /dev/null
+++ b/common/default.nix
@@ -0,0 +1,21 @@
+{ lib, ... }:
+{
+  imports = [
+    ./atuin.nix
+    ./broot.nix
+    ./devel.nix
+    ./fish.nix
+    ./gnome.nix
+    ./k8s.nix
+    ./nix.nix
+    ./nvim.nix
+    ./scripts.nix
+    ./ssh.nix
+    ./utils.nix
+    ./vcs.nix
+    ./web.nix
+    ./wezterm.nix
+  ];
+
+  options.shelman.desktop.enable = lib.mkEnableOption "Desktop environment";
+}
diff --git a/common/devel.nix b/common/devel.nix
new file mode 100644
index 0000000..10768d9
--- /dev/null
+++ b/common/devel.nix
@@ -0,0 +1,24 @@
+{ pkgs, ... }:
+{
+  home.packages = with pkgs; [
+    bacon
+    cargo
+    clang
+    codeium
+    gnumake
+    go
+    just
+    ldns
+    nixfmt-rfc-style
+    nodejs_22
+    passage
+    rage
+    prettierd
+    rust-analyzer
+    rustc
+    sqlite
+    stylua
+    tree-sitter
+    zig
+  ];
+}
diff --git a/common/fish.nix b/common/fish.nix
new file mode 100644
index 0000000..5f30a69
--- /dev/null
+++ b/common/fish.nix
@@ -0,0 +1,122 @@
+{ lib, pkgs, ... }:
+{
+
+  programs.fish = {
+    enable = true;
+
+    plugins = [
+      {
+        name = "transient-fish";
+        src = pkgs.fetchFromGitHub {
+          owner = "zzhaolei";
+          repo = "transient.fish";
+          rev = "deb35c4d07ea6acc56b073d7ba84f8ed76356abd";
+          sha256 = "sha256-BQvuqY7D+9fTDeLb7Fz9Ll/7uIlqrmRmn0S+G9v+2Uc=";
+        };
+      }
+    ];
+
+    functions = {
+      edit = {
+        description = "Open a file in already running nvim and switch tab";
+        argumentNames = [ "file" ];
+        body = ''
+          set _file (readlink -f "$file")
+          if test -z "$file"
+              set _root (vcs_root)
+              set _file (fd --type f . "$_root" | sed -e "s#^$_root/##" | fzf --no-sort --layout=reverse)
+              set _file "$_root/$_file"
+          end
+          nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote "$_file" &>/dev/null
+          or return 1
+          # Wezterm: switch tab to nvim
+          printf "\033]1337;SetUserVar=nvim_activate=\007"
+        '';
+      };
+
+      __zoxide_zi_repaint.body = ''
+        __zoxide_zi
+        commandline -f repaint
+      '';
+
+      fish_jj_prompt.body = ''
+        # Is jj installed?
+        if not command -sq jj
+            return 1
+        end
+
+        # Are we in a jj repo?
+        if not jj root --quiet &>/dev/null
+            return 1
+        end
+
+        # Generate prompt
+        jj log --ignore-working-copy --no-graph --color always -r @ -T '
+                separate(
+                    " ",
+                    change_id.shortest(),
+                    coalesce(
+                        surround(
+                            "\"",
+                            "\"",
+                            if(
+                                description.first_line().substr(0, 24).starts_with(description.first_line()),
+                                description.first_line().substr(0, 24),
+                                description.first_line().substr(0, 23) ++ "…"
+                            )
+                        ),
+                        "(no description set)"
+                    ),
+                    branches.join(", "),
+                    commit_id.shortest(),
+                    if(conflict, "(conflict)"),
+                    if(empty, "(empty)"),
+                    if(divergent, "(divergent)"),
+                    if(hidden, "(hidden)"),
+                )
+        '
+      '';
+
+      fish_prompt.body = ''
+        echo
+        string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd) (set_color green) ' ❯ ' (set_color normal)
+      '';
+
+      fish_right_prompt.body = ''
+        fish_jj_prompt || fish_vcs_prompt
+      '';
+
+      transient_prompt_func.body = ''
+        echo
+        string join "" -- (set_color green) '❯ ' (set_color normal)
+      '';
+
+      rg.body = ''
+        if status is-interactive
+          command rg -p $argv | bat
+        else
+          command rg $argv
+        end
+      '';
+    };
+
+    interactiveShellInit = lib.concatStringsSep "\n" [
+      (builtins.readFile ../files/config/fish/config.fish)
+      (builtins.readFile ../files/config/fish/semantic-prompt.fish)
+      (builtins.readFile ../files/config/fish/go-task.fish)
+      (builtins.readFile ../files/config/fish/jj.fish)
+      (builtins.readFile ../files/config/fish/vcs.fish)
+    ];
+
+    shellAbbrs = {
+      e = "edit";
+      l = "bat";
+      ls = "eza";
+      tree = "eza --tree";
+      top = "btm --basic --enable_cache_memory --enable_gpu_memory --battery";
+      ts = "TZ=Z date '+%Y%m%dT%H%M%SZ'";
+      w = "viddy -n1 $history[1]";
+      xc = "fish_clipboard_copy";
+    };
+  };
+}
diff --git a/common/gnome.nix b/common/gnome.nix
new file mode 100644
index 0000000..3aa5800
--- /dev/null
+++ b/common/gnome.nix
@@ -0,0 +1,194 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+with lib.hm.gvariant;
+{
+  config = lib.mkIf config.shelman.desktop.enable {
+    home.packages = with pkgs; [
+      gnome-tweaks
+      gnome-pomodoro
+      gnomeExtensions.desktop-clock
+      gnomeExtensions.just-perfection
+      gnomeExtensions.vitals
+    ];
+
+    dconf.settings = {
+      "org/gnome/desktop/background" = {
+        color-shading-type = "solid";
+        picture-options = "zoom";
+        picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png";
+        picture-uri-dark = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-d.png";
+        primary-color = "#77767B";
+        secondary-color = "#000000";
+      };
+
+      "org/gnome/desktop/screensaver" = {
+        color-shading-type = "solid";
+        picture-options = "zoom";
+        picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png";
+        primary-color = "#77767B";
+        secondary-color = "#000000";
+      };
+
+      "org/gnome/desktop/wm/keybindings" = {
+        close = [ "<Super>q" ];
+        toggle-on-all-workspaces = [ "<Super>s" ];
+        toggle-maximized = [ "<Super>m" ];
+        maximize-vertically = [ "<Super>Up" ];
+        minimize = [ "<Super>comma" ];
+        move-to-center = [ "<Super>c" ];
+        switch-applications = [ "<Super>Tab" ];
+        switch-windows = [ "<Alt>Tab" ];
+        move-to-workspace-1 = [ "<Shift>F1" ];
+        move-to-workspace-2 = [ "<Shift>F2" ];
+        move-to-workspace-3 = [ "<Shift>F3" ];
+        move-to-workspace-4 = [ "<Shift>F4" ];
+        move-to-workspace-5 = [ "<Shift>F5" ];
+        move-to-workspace-6 = [ "<Shift>F6" ];
+        move-to-workspace-7 = [ "<Shift>F7" ];
+        move-to-workspace-8 = [ "<Shift>F8" ];
+        move-to-workspace-9 = [ "<Shift>F9" ];
+        switch-to-workspace-1 = [ "F1" ];
+        switch-to-workspace-2 = [ "F2" ];
+        switch-to-workspace-3 = [ "F3" ];
+        switch-to-workspace-4 = [ "F4" ];
+        switch-to-workspace-5 = [ "F5" ];
+        switch-to-workspace-6 = [ "F6" ];
+        switch-to-workspace-7 = [ "F7" ];
+        switch-to-workspace-8 = [ "F8" ];
+        switch-to-workspace-9 = [ "F9" ];
+      };
+
+      "org/gnome/desktop/input-sources" = {
+        mru-sources = [
+          (mkTuple [
+            "xkb"
+            "us"
+          ])
+        ];
+        sources = [
+          (mkTuple [
+            "xkb"
+            "se+us"
+          ])
+        ];
+        xkb-options = [ "caps:ctrl_modifier" ];
+      };
+
+      "org/gnome/desktop/interface" = {
+        enable-animations = false;
+        enable-hot-corners = false;
+        show-battery-percentage = true;
+        font-antialiasing = "grayscale";
+        font-hinting = "slight";
+        font-name = "Inter Variable 11";
+        document-font-name = "Inter Variable 11";
+        monospace-font-name = "BerkeleyMono Nerd Font 11";
+        toolkit-accessibility = false;
+      };
+
+      "org/gnome/desktop/search-providers" = {
+        disabled = [
+          "org.gnome.Contacts.desktop"
+          "org.gnome.Nautilus.desktop"
+          "org.gnome.Calendar.desktop"
+          "org.gnome.clocks.desktop"
+          "org.gnome.Epiphany.desktop"
+        ];
+        sort-order = [
+          "org.gnome.Contacts.desktop"
+          "org.gnome.Documents.desktop"
+          "org.gnome.Nautilus.desktop"
+          "org.gnome.Settings.desktop"
+          "org.gnome.Calculator.desktop"
+          "org.gnome.Calendar.desktop"
+          "org.gnome.clocks.desktop"
+          "org.gnome.seahorse.Application.desktop"
+          "org.gnome.Weather.desktop"
+          "org.gnome.Characters.desktop"
+        ];
+      };
+
+      "org/gnome/desktop/wm/preferences" = {
+        focus-mode = "sloppy";
+        num-workspaces = 10;
+        resize-with-right-button = true;
+      };
+
+      "org/gnome/GWeather4" = {
+        temperature-unit = "centigrade";
+      };
+
+      "org/gnome/Weather" = {
+        locations = [
+          (mkVariant (mkTuple [
+            (mkUint32 2)
+            (mkVariant (mkTuple [
+              "Stockholm-Arlanda Airport"
+              "ESSA"
+              false
+              [
+                (mkTuple [
+                  1.0410888988146176
+                  0.31328660073298215
+                ])
+              ]
+              [
+                (mkTuple [
+                  1.0410888988146176
+                  0.31328660073298215
+                ])
+              ]
+            ]))
+          ]))
+        ];
+      };
+
+      "org/gnome/desktop/calendar" = {
+        show-weekdate = true;
+      };
+
+      "org/gnome/mutter" = {
+        center-new-windows = true;
+        edge-tiling = true;
+      };
+
+      "org/gnome/settings-daemon/plugins/color" = {
+        night-light-schedule-automatic = false;
+        night-light-schedule-from = 0.0;
+        night-light-schedule-to = 0.0;
+        night-light-temperature = mkUint32 3575;
+      };
+
+      "org/gnome/shell" = {
+        enabled-extensions = [
+          "just-perfection-desktop@just-perfection"
+          "Vitals@CoreCoding.com"
+        ];
+      };
+
+      "org/gnome/shell/extensions/just-perfection" = {
+        animation = 0;
+        notification-banner-position = 2;
+        osd-position = 6;
+        panel = false;
+        panel-in-overview = true;
+        startup-status = 0;
+        switcher-popup-delay = false;
+        top-panel-position = 0;
+      };
+
+      "org/gnome/shell/extensions/vitals" = {
+        update-time = 15;
+      };
+
+      "org/gnome/tweaks" = {
+        show-extensions-notice = false;
+      };
+
+    };
+  };
+}
diff --git a/common/k8s.nix b/common/k8s.nix
new file mode 100644
index 0000000..53820e9
--- /dev/null
+++ b/common/k8s.nix
@@ -0,0 +1,176 @@
+{ pkgs, ... }:
+{
+  home.packages = with pkgs; [
+    kail
+    kapp
+    krew
+    kubectl
+    kubectl-cnpg
+    kubectl-neat
+    kubectl-view-secret
+    kubectx
+    kubelogin-oidc
+    kubernetes-helm
+    kustomize
+  ];
+
+  programs.k9s = {
+    enable = true;
+    settings.k9s = {
+      liveViewAutoRefresh = false;
+      refreshRate = 2;
+      maxConnRetry = 5;
+      readOnly = false;
+      noExitOnCtrlC = false;
+      skipLatestRevCheck = false;
+      disablePodCounting = false;
+      imageScans.enable = false;
+      logger = {
+        tail = 100;
+        buffer = 5000;
+        sinceSeconds = -1;
+        textWrap = false;
+        showTime = false;
+      };
+      shellPod.image = "alpine:3";
+      thresholds = {
+        cpu = {
+          critical = 90;
+          warn = 70;
+        };
+        memory = {
+          critical = 90;
+          warn = 70;
+        };
+      };
+      ui = {
+        crumbsless = true;
+        defaultsToFullScreen = true;
+        enableMouse = false;
+        headless = true;
+        logoless = true;
+        noIcons = false;
+        reactive = false;
+        skin = "dieter";
+      };
+    };
+
+    views = {
+      views = {
+        "v1/pods" = {
+          columns = [
+            "NAME"
+            "PF"
+            "READY"
+            "STATUS"
+            "NODE"
+            "AGE"
+            "RESTARTS"
+            "IP"
+            "CPU"
+            "MEM"
+            "CPU/R:L"
+            "MEM/R:L"
+            "%CPU/R"
+            "%CPU/L"
+            "%MEM/R"
+            "%MEM/L"
+          ];
+        };
+      };
+    };
+
+    skins.dieter.k9s = {
+      body = {
+        fgColor = "default";
+        bgColor = "default";
+        logoColor = "default";
+      };
+      prompt = {
+        fgColor = "default";
+        bgColor = "default";
+        suggestColor = "default";
+      };
+      info = {
+        fgColor = "default";
+        sectionColor = "default";
+      };
+      dialog = {
+        fgColor = "default";
+        bgColor = "default";
+        buttonFgColor = "default";
+        buttonBgColor = "default";
+        buttonFocusFgColor = "white";
+        buttonFocusBgColor = "darkblue";
+        labelFgColor = "default";
+        fieldFgColor = "default";
+      };
+      frame = {
+        border = {
+          fgColor = "default";
+          focusColor = "default";
+        };
+        menu = {
+          fgColor = "default";
+          keyColor = "default";
+          numKeyColor = "default";
+        };
+        crumbs = {
+          fgColor = "default";
+          bgColor = "default";
+          activeColor = "default";
+        };
+        status = {
+          newColor = "default";
+          modifyColor = "default";
+          addColor = "default";
+          errorColor = "red";
+          highlightColor = "default";
+          killColor = "default";
+          completedColor = "default";
+        };
+        title = {
+          fgColor = "default";
+          bgColor = "default";
+          highlightColor = "default";
+          counterColor = "default";
+          filterColor = "default";
+        };
+      };
+      views = {
+        table = {
+          fgColor = "default";
+          bgColor = "default";
+          cursorFgColor = "teal";
+          cursorBgColor = "darkblue";
+          header = {
+            fgColor = "default";
+            bgColor = "default";
+            sorterColor = "blue";
+          };
+        };
+        xray = {
+          fgColor = "default";
+          bgColor = "default";
+          cursorColor = "blue";
+          graphicColor = "blue";
+        };
+        yaml = {
+          keyColor = "default";
+          colonColor = "default";
+          valueColor = "default";
+        };
+        logs = {
+          fgColor = "default";
+          bgColor = "default";
+          indicator = {
+            fgColor = "default";
+            bgColor = "default";
+            toggleOnColor = "default";
+            toggleOffColor = "default";
+          };
+        };
+      };
+    };
+  };
+}
diff --git a/common/nix.nix b/common/nix.nix
new file mode 100644
index 0000000..3b66fd3
--- /dev/null
+++ b/common/nix.nix
@@ -0,0 +1,15 @@
+{ outputs, ... }:
+{
+  nixpkgs = {
+    config.allowUnfree = true;
+    overlays = [
+      outputs.overlays.additions
+      outputs.overlays.modifications
+      outputs.overlays.unstable-packages
+    ];
+  };
+
+  programs.home-manager.enable = true;
+
+  systemd.user.startServices = "sd-switch";
+}
diff --git a/common/nvim.nix b/common/nvim.nix
new file mode 100644
index 0000000..83f255b
--- /dev/null
+++ b/common/nvim.nix
@@ -0,0 +1,19 @@
+{ ... }:
+{
+  programs.neovim = {
+    enable = true;
+    defaultEditor = true;
+    viAlias = true;
+    vimAlias = true;
+    withNodeJs = false;
+    withPython3 = false;
+    withRuby = false;
+  };
+
+  xdg.configFile = {
+    "nvim" = {
+      recursive = true;
+      source = ./../files/config/nvim;
+    };
+  };
+}
diff --git a/common/scripts.nix b/common/scripts.nix
new file mode 100644
index 0000000..4848c39
--- /dev/null
+++ b/common/scripts.nix
@@ -0,0 +1,17 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+{
+  home.file = {
+    ".local/bin" = {
+      recursive = true;
+      source = ./../files/scripts;
+    };
+
+  };
+
+  home.sessionPath = [ "$HOME/.local/bin" ];
+}
diff --git a/common/ssh.nix b/common/ssh.nix
new file mode 100644
index 0000000..1f59463
--- /dev/null
+++ b/common/ssh.nix
@@ -0,0 +1,14 @@
+{ ... }:
+{
+  programs.ssh = {
+    enable = true;
+    addKeysToAgent = "yes";
+    compression = false;
+    controlMaster = "auto";
+    controlPath = "\${XDG_RUNTIME_DIR}/ssh_control:%h:%p:%r";
+    controlPersist = "15m";
+    extraConfig = ''
+      PreferredAuthentications publickey
+    '';
+  };
+}
diff --git a/common/utils.nix b/common/utils.nix
new file mode 100644
index 0000000..ef5f380
--- /dev/null
+++ b/common/utils.nix
@@ -0,0 +1,60 @@
+{ pkgs, ... }:
+{
+  home.packages = with pkgs; [
+    dust
+    jless
+    procs
+    viddy
+  ];
+
+  programs = {
+    bat = {
+      enable = true;
+      config = {
+        italic-text = "always";
+        paging = "auto";
+        style = "plain";
+        theme = "ansi";
+      };
+    };
+
+    bottom.enable = true;
+
+    direnv = {
+      enable = true;
+      nix-direnv.enable = true;
+      silent = false;
+    };
+
+    eza = {
+      enable = true;
+      enableFishIntegration = true;
+    };
+
+    fd.enable = true;
+
+    fzf = {
+      enable = true;
+      enableFishIntegration = true;
+    };
+
+    jq.enable = true;
+    less.enable = true;
+    lesspipe.enable = true;
+    tmux.enable = true;
+
+    ripgrep = {
+      enable = true;
+      arguments = [
+        "--glob=!.git/*"
+        "--glob=!.jj/*"
+      ];
+    };
+
+    zoxide = {
+      enable = true;
+      enableFishIntegration = true;
+      options = [ "--cmd=cd" ];
+    };
+  };
+}
diff --git a/common/vcs.nix b/common/vcs.nix
new file mode 100644
index 0000000..e63f1d3
--- /dev/null
+++ b/common/vcs.nix
@@ -0,0 +1,166 @@
+{ config, pkgs, ... }:
+{
+
+  home.packages = with pkgs; [
+    delta
+    diffedit3
+    difftastic
+    git-graph
+    git-town
+    lazyjj
+    tea
+  ];
+
+  programs.gh = {
+    enable = true;
+  };
+
+  programs.git = {
+    enable = true;
+
+    aliases = {
+      b = "branch -va";
+      cl = "clone --filter=blob:none";
+      co = "checkout";
+      d = "diff --stat -p -C --color-words";
+      ds = "diff --staged --stat -p -C --color-words";
+      g = "graph -S -m simple -s round";
+      guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f";
+      lla = "log --graph --all --topo-order --pretty='format:\t%x1B[0;3;36m%as %x1B[0;95;3m%<(12)%al %x1B[3;32m• %h%x1B[0;1;92m%d%x1B[0m %s'";
+      ll = "log --pretty='format:%x1B[0;3;36m%as %G? %x1B[0;95;3m%<(12,trunc)%al %x1B[3;32m• %h%x1B[0;1;92m%(decorate:prefix= [,suffix=]%n)%>|(35)%Creset %s'";
+      patch = "!git --no-pager diff --no-color";
+      pullr = "pull --rebase --autostash";
+      sh = "show --stat -p -C --color-words --show-signature";
+      st = "status -sb";
+    };
+
+    delta = {
+      enable = true;
+      options = {
+        file-added-label = "[+]";
+        file-decoration-style = "none";
+        file-modified-label = "[*]";
+        file-removed-label = "[-]";
+        file-renamed-label = "[>]";
+        file-style = "bold reverse";
+        file-transformation = "s/$/  ░▒▓/";
+        hunk-header-decoration-style = "none";
+        hunk-header-file-style = "bold";
+        hunk-header-line-number-style = "bold";
+        hunk-header-style = "bold";
+        hunk-label = "⯁";
+        hunk-label-style = "bold";
+        line-numbers = true;
+        max-line-distance = "0.9";
+        navigate = true;
+      };
+    };
+
+    extraConfig = {
+      apply.whitespace = "nowarn";
+      blame.date = "relative";
+      branch.main.rebase = true;
+      color = {
+        branch = "auto";
+        diff = "auto";
+        status = "auto";
+        ui = "auto";
+      };
+      column.ui = "auto";
+      core = {
+        compression = 3;
+        looseCompression = 3;
+        excludesfile = "~/.config/git/ignore";
+      };
+      fetch = {
+        prune = true;
+        prunetags = true;
+        showForcedUpdates = true;
+      };
+      gpg = {
+        format = "ssh";
+        ssh = {
+          allowedSignersFile = "${config.home.homeDirectory}/.ssh/authorized_keys";
+          defaultKeyCommand = "${config.home.homeDirectory}/.local/bin/git-signing-key";
+        };
+      };
+      init.defaultBranch = "main";
+      merge.conflictstyle = "zdiff3";
+      pack = {
+        compression = 3;
+        threads = 0;
+      };
+      pull.rebase = true;
+      push.default = "tracking";
+      rebase.autosquash = true;
+      rerere.enabled = true;
+      tag.sort = "-v:refname";
+      user.useConfigOnly = true;
+    };
+
+    ignores = [
+      "*~"
+      "*.a"
+      "*.class"
+      "*.iml"
+      "*.ipr"
+      "*.iwr"
+      "*.iws"
+      "*.la"
+      "*.o"
+      "*.pyc"
+      "*.so"
+      "*.swp"
+      ".direnv"
+      ".idea"
+      ".null-ls_*"
+    ];
+
+    signing = {
+      key = null;
+      signByDefault = true;
+    };
+  };
+
+  programs.gitui = {
+    enable = true;
+    keyConfig = ''
+      (
+       open_help: Some(( code: F(1), modifiers: "")),
+       move_left: Some(( code: Char('h'), modifiers: "")),
+       move_right: Some(( code: Char('l'), modifiers: "")),
+       move_up: Some(( code: Char('k'), modifiers: "")),
+       move_down: Some(( code: Char('j'), modifiers: "")),
+       popup_up: Some(( code: Char('p'), modifiers: "CONTROL")),
+       popup_down: Some(( code: Char('n'), modifiers: "CONTROL")),
+       page_up: Some(( code: Char('b'), modifiers: "CONTROL")),
+       page_down: Some(( code: Char('f'), modifiers: "CONTROL")),
+       home: Some(( code: Char('g'), modifiers: "")),
+       end: Some(( code: Char('G'), modifiers: "SHIFT")),
+       shift_up: Some(( code: Char('K'), modifiers: "SHIFT")),
+       shift_down: Some(( code: Char('J'), modifiers: "SHIFT")),
+       edit_file: Some(( code: Char('I'), modifiers: "SHIFT")),
+       status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")),
+       diff_reset_lines: Some(( code: Char('u'), modifiers: "")),
+       diff_stage_lines: Some(( code: Char('s'), modifiers: "")),
+       stashing_save: Some(( code: Char('w'), modifiers: "")),
+       stashing_toggle_index: Some(( code: Char('m'), modifiers: "")),
+       stash_open: Some(( code: Char('l'), modifiers: "")),
+       abort_merge: Some(( code: Char('M'), modifiers: "SHIFT")),
+       )
+      	 '';
+    theme = ''
+      (
+       selection_bg: Some(Black),
+       selection_fg: Some(Reset),
+       cmdbar_bg: Some(Reset),
+       cmdbar_extra_lines_bg: Some(Reset),
+      )
+    '';
+  };
+
+  programs.jujutsu = {
+    enable = true;
+    package = pkgs.jujutsu-openssh;
+  };
+}
diff --git a/common/web.nix b/common/web.nix
new file mode 100644
index 0000000..5062a94
--- /dev/null
+++ b/common/web.nix
@@ -0,0 +1,22 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+{
+  config = lib.mkIf config.shelman.desktop.enable {
+
+    home.packages = with pkgs; [ tor-browser ];
+
+    programs.firefox = {
+      enable = true;
+    };
+
+    programs.chromium = {
+      enable = true;
+      package = pkgs.ungoogled-chromium;
+    };
+
+  };
+}
diff --git a/common/wezterm.nix b/common/wezterm.nix
new file mode 100644
index 0000000..6555bdb
--- /dev/null
+++ b/common/wezterm.nix
@@ -0,0 +1,11 @@
+{ config, lib, ... }:
+{
+  config = lib.mkIf config.shelman.desktop.enable {
+
+    programs.wezterm = {
+      enable = true;
+      extraConfig = builtins.readFile ./../files/config/wezterm/wezterm.lua;
+    };
+
+  };
+}
diff --git a/files/config/fish/config.fish b/files/config/fish/config.fish
new file mode 100644
index 0000000..dc30f48
--- /dev/null
+++ b/files/config/fish/config.fish
@@ -0,0 +1,59 @@
+# Bindings
+bind \cg __zoxide_zi_repaint
+bind \cJ forward-char
+bind \cn history-prefix-search-forward
+bind \cp history-prefix-search-backward
+
+# Settings
+set fish_greeting
+set fish_emoji_width 2
+
+# xdg-open support on ssh remotes
+if test -n SSH_TTY; and type -q wezterm-open-url
+    set -x DE generic
+    set -x BROWSER wezterm-open-url
+end
+
+# Colors
+set fish_color_command --bold
+set fish_color_comment --italics --dim
+set fish_color_autosuggestion --italics --bold red
+set fish_color_cancel
+set fish_color_command --bold
+set fish_color_comment --italics --dim
+set fish_color_cwd normal
+set fish_color_cwd_root normal
+set fish_color_end
+set fish_color_error
+set fish_color_escape
+set fish_color_gray 6c7086
+set fish_color_history_current
+set fish_color_host normal
+set fish_color_host_remote yellow
+set fish_color_keyword
+set fish_color_match
+set fish_color_normal normal
+set fish_color_operator
+set fish_color_option
+set fish_color_param normal
+set fish_color_quote --italics
+set fish_color_redirection
+set fish_color_search_match -r
+set fish_color_selection -r
+set fish_color_status normal
+set fish_color_string --italics
+set fish_color_user normal
+set fish_color_valid_path
+set fish_pager_color_background
+set fish_pager_color_completion normal
+set fish_pager_color_description --dim
+set fish_pager_color_prefix --underline
+set fish_pager_color_progress --dim
+set fish_pager_color_secondary_background
+set fish_pager_color_secondary_completion
+set fish_pager_color_secondary_description
+set fish_pager_color_secondary_prefix
+set fish_pager_color_selected_background -r
+set fish_pager_color_selected_completion
+set fish_pager_color_selected_description
+set fish_pager_color_selected_prefix
diff --git a/files/config/fish/go-task.fish b/files/config/fish/go-task.fish
new file mode 100644
index 0000000..6c7e2cf
--- /dev/null
+++ b/files/config/fish/go-task.fish
@@ -0,0 +1,37 @@
+set GO_TASK_PROGNAME task
+
+function __task_get_tasks --description "Prints all available tasks with their description"
+    # Read the list of tasks (and potential errors)
+    $GO_TASK_PROGNAME --list-all 2>&1 | read -lz rawOutput
+
+    # Return on non-zero exit code (for cases when there is no Taskfile found or etc.)
+    if test $status -ne 0
+        return
+    end
+
+    # Grab names and descriptions (if any) of the tasks
+    set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s*\(.*\)\s*(aliases.*/\1\t\2/' -e 's/\* \(.*\):\s*\(.*\)/\1\t\2/'| string split0)
+    if test $output
+        echo $output
+    end
+end
+
+complete -c $GO_TASK_PROGNAME -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was
+    specified.' -xa "(__task_get_tasks)"
+
+complete -c $GO_TASK_PROGNAME -s c -l color -d 'colored output (default true)'
+complete -c $GO_TASK_PROGNAME -s d -l dir -d 'sets directory of execution'
+complete -c $GO_TASK_PROGNAME -l dry -d 'compiles and prints tasks in the order that they would be run, without executing them'
+complete -c $GO_TASK_PROGNAME -s f -l force -d 'forces execution even when the task is up-to-date'
+complete -c $GO_TASK_PROGNAME -s h -l help -d 'shows Task usage'
+complete -c $GO_TASK_PROGNAME -s i -l init -d 'creates a new Taskfile.yml in the current folder'
+complete -c $GO_TASK_PROGNAME -s l -l list -d 'lists tasks with description of current Taskfile'
+complete -c $GO_TASK_PROGNAME -s o -l output -d 'sets output style: [interleaved|group|prefixed]' -xa "interleaved group prefixed"
+complete -c $GO_TASK_PROGNAME -s p -l parallel -d 'executes tasks provided on command line in parallel'
+complete -c $GO_TASK_PROGNAME -s s -l silent -d 'disables echoing'
+complete -c $GO_TASK_PROGNAME -l status -d 'exits with non-zero exit code if any of the given tasks is not up-to-date'
+complete -c $GO_TASK_PROGNAME -l summary -d 'show summary about a task'
+complete -c $GO_TASK_PROGNAME -s t -l taskfile -d 'choose which Taskfile to run. Defaults to "Taskfile.yml"'
+complete -c $GO_TASK_PROGNAME -s v -l verbose -d 'enables verbose mode'
+complete -c $GO_TASK_PROGNAME -l version -d 'show Task version'
+complete -c $GO_TASK_PROGNAME -s w -l watch -d 'enables watch of the given task'
diff --git a/files/config/fish/jj.fish b/files/config/fish/jj.fish
new file mode 100644
index 0000000..78be3e2
--- /dev/null
+++ b/files/config/fish/jj.fish
@@ -0,0 +1,338 @@
+# TODO: passthru other args? E.g.. --at-operation, --repository
+function __jj
+    command jj --ignore-working-copy --color=never --quiet $argv 2>/dev/null
+end
+
+# Aliases
+# Based on https://github.com/fish-shell/fish-shell/blob/cd71359c42f633d9d71a63591ae16d150407a2b2/share/completions/git.fish#L625.
+#
+# Aliases are stored in global variables.
+# `__jj_aliases` is a list of all aliases and `__jj_alias_$alias` is the command line for the alias.
+function __jj_add_alias
+    set -l alias $argv[1]
+    set -l alias_escaped (string escape --style=var -- $alias)
+    set -g __jj_alias_$alias_escaped $argv
+    set --append -g __jj_aliases $alias
+end
+
+__jj config list aliases -T 'concat(name, "\t", value, "\n")' --include-defaults | while read -l config_alias
+    set -l parsed (string match --regex '^aliases\.(.+)\t(.*)$' --groups-only -- $config_alias)
+    set -l alias $parsed[1]
+    set -l command $parsed[2]
+    set -l args $alias
+    # Replace wrapping `[]` if any
+    set -l command (string replace -r --all '^\[|]$' ""  -- $command)
+    while test (string length -- $command) -gt 0
+        set -l parsed (string match -r '^"((?:\\\"|[^"])*?)"(?:,\s)?(.*)$' --groups-only  -- $command)
+        set --append args $parsed[1]
+        set command $parsed[2]
+    end
+    __jj_add_alias $args
+end
+
+__jj_add_alias ci commit
+__jj_add_alias desc describe
+__jj_add_alias op operation
+__jj_add_alias st status
+
+# Resolve aliases that call another alias.
+for alias in $__jj_aliases
+    set -l handled $alias
+
+    while true
+        set -l alias_escaped (string escape --style=var -- $alias)
+        set -l alias_varname __jj_alias_$alias_escaped
+        set -l aliased_command $$alias_varname[1][2]
+        set -l aliased_escaped (string escape --style=var -- $aliased_command)
+        set -l aliased_varname __jj_alias_$aliased_escaped
+        set -q $aliased_varname
+        or break
+
+        # Prevent infinite recursion
+        contains $aliased_escaped $handled
+        and break
+
+        # Expand alias in cmdline
+        set -l aliased_cmdline $$aliased_varname[1][2..-1]
+        set --append aliased_cmdline $$alias_varname[1][3..-1]
+        set -g $alias_varname $$alias_varname[1][1] $aliased_cmdline
+        set --append handled $aliased_escaped
+    end
+end
+
+function __jj_aliases_with_descriptions
+    for alias in $__jj_aliases
+        set -l alias_escaped (string escape --style=var -- $alias)
+        set -l alias_varname __jj_alias_$alias_escaped
+        set -l aliased_cmdline (string join " " -- $$alias_varname[1][2..-1] | string replace -r --all '\\\"' '"')
+        printf "%s\talias: %s\n" $alias $aliased_cmdline
+    end
+end
+
+# Based on https://github.com/fish-shell/fish-shell/blob/2d4e42ee93327b9cfd554a0d809f85e3d371e70e/share/functions/__fish_seen_subcommand_from.fish.
+# Test to see if we've seen a subcommand from a list.
+# This logic may seem backwards, but the commandline will often be much shorter than the list.
+function __jj_seen_subcommand_from
+    set -l cmd (commandline -opc)
+    set -e cmd[1]
+
+    # Check command line arguments first.
+    for i in $cmd
+        if contains -- $i $argv
+            return 0
+        end
+    end
+
+    # Check aliases.
+    set -l alias $cmd[1]
+    set -l alias_escaped (string escape --style=var -- $alias)
+    set -l varname __jj_alias_$alias_escaped
+    set -q $varname
+    or return 1
+
+    for i in $$varname[1][2..-1]
+        if contains -- $i $argv
+            return 0
+        end
+    end
+
+    return 1
+end
+
+function __jj_changes
+    __jj log --no-graph --limit 1000 -r $argv[1] \
+        -T 'separate("\t", change_id.shortest(), if(description, description.first_line(), "(no description set)")) ++ "\n"'
+end
+
+function __jj_branches
+    set -f filter $argv[1]
+    if string length --quiet -- $argv[2]
+        __jj branch list --all-remotes -r "$argv[2]" \
+            -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted branch)\") ++ \"\n\")"
+    else
+        __jj branch list --all-remotes \
+            -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted branch)\") ++ \"\n\")"
+    end
+end
+
+function __jj_all_branches
+    __jj_branches '!remote || !remote.starts_with("git")' $argv[1]
+end
+
+function __jj_local_branches
+    __jj_branches '!remote' ''
+end
+
+function __jj_remote_branches
+    __jj_branches 'remote && !remote.starts_with("git")' ''
+end
+
+function __jj_all_changes
+    if string length --quiet -- $argv[1]
+        set -f REV $argv[1]
+    else
+        set -f REV "all()"
+    end
+    __jj_changes $REV
+    __jj_all_branches $REV
+end
+
+function __jj_mutable_changes
+    set -f REV "mutable()"
+    __jj_changes $REV
+    __jj_all_branches $REV
+end
+
+function __jj_revision_modified_files
+    if test $argv[1] = "@"
+        set -f suffix ""
+    else
+        set -l change_id (__jj log --no-graph --limit 1 -T 'change_id.shortest()')
+        set -f suffix " in $change_id"
+    end
+
+    __jj diff -r $argv[1] --summary | while read -l line
+        set -l file (string split " " -m 1 -- $line)
+        switch $file[1]
+            case M
+                set -f change Modified
+            case D
+                set -f change Deleted
+            case A
+                set -f change Added
+        end
+        printf "%s\t%s%s\n" $file[2] $change $suffix
+    end
+end
+
+function __jj_remotes
+    __jj git remote list | while read -l remote
+        printf "%s\t%s\n" (string split " " -m 1 -- $remote)
+    end
+end
+
+function __jj_operations
+    __jj operation log --no-graph --limit 1000 -T 'separate("\t", id.short(), description) ++ "\n"'
+end
+
+function __jj_parse_revision
+    set -l cmd (commandline -opc)
+    set -e cmd[1]
+    set -l return_next false
+    set -l return_value 1
+
+    # Check aliases.
+    set -l alias $cmd[1]
+    set -l alias_escaped (string escape --style=var -- $alias)
+    set -l varname __jj_alias_$alias_escaped
+
+    if set -q $varname
+        set cmd $$varname[1][2..-1] $cmd[2..-1]
+    end
+
+    # Check command line arguments first.
+    for i in $cmd
+        if $return_next
+            echo $i
+            set return_value 0
+        else if contains -- $i -r --revision --from
+            set return_next true
+        else
+            set -l match (string match --regex '^(?:-r=?|--revision=|--from=)(.+)\s*$' --groups-only -- $i)
+            if set -q match[1]
+                echo $match[1]
+                set return_value 0
+            end
+        end
+    end
+
+    return $return_value
+end
+
+function __jj_revision_files
+    set -l description (__jj log --no-graph --limit 1 -r $argv[1] -T 'change_id.shortest() ++ ": " ++ coalesce(description.first_line().substr(0, 30), "(no description set)")')
+    __jj file list -r $argv[1] | while read -l file
+        printf "%s\t%s\n" $file $description
+    end
+end
+
+function __jj_revision_conflicted_files
+    __jj resolve --list -r $argv[1] | while read -l line
+        set -l file (string split " " -m 1 -- $line)
+        printf "%s\t%s\n" $file[1] $file[2]
+    end
+end
+
+function __jj_parse_revision_files
+    set -l rev (__jj_parse_revision)
+    if test $status -eq 1
+        set rev "@"
+    end
+    __jj_revision_files $rev
+end
+
+function __jj_parse_revision_conflicted_files
+    set -l rev (__jj_parse_revision)
+    if test $status -eq 1
+        set rev "@"
+    end
+    __jj_revision_conflicted_files $rev
+end
+
+function __jj_parse_revision_files_or_wc_modified_files
+    set -l revs (__jj_parse_revision)
+    if test $status -eq 1
+        __jj_revision_modified_files "@"
+    else
+        for rev in $revs
+            __jj_revision_files $rev
+        end
+    end
+end
+
+function __jj_parse_revision_modified_files_or_wc_modified_files
+    set -l revs (__jj_parse_revision)
+    if test $status -eq 1
+        __jj_revision_modified_files "@"
+    else
+        for rev in $revs
+            __jj_revision_modified_files $rev
+        end
+    end
+end
+
+# Aliases.
+complete -f -c jj -n __fish_use_subcommand -a '(__jj_aliases_with_descriptions)'
+
+# Files.
+complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from show' -ka '(__jj_parse_revision_files)'
+complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from chmod' -ka '(__jj_parse_revision_files)'
+complete -f -c jj -n '__jj_seen_subcommand_from commit' -ka '(__jj_revision_modified_files "@")'
+complete -c jj -n '__jj_seen_subcommand_from diff' -ka '(__jj_parse_revision_files_or_wc_modified_files)'
+complete -c jj -n '__jj_seen_subcommand_from interdiff' -ka '(__jj_parse_revision_files)'
+complete -f -c jj -n '__jj_seen_subcommand_from resolve' -ka '(__jj_parse_revision_conflicted_files)'
+complete -f -c jj -n '__jj_seen_subcommand_from restore' -ka '(__jj_parse_revision_files_or_wc_modified_files)'
+complete -f -c jj -n '__jj_seen_subcommand_from split' -ka '(__jj_parse_revision_modified_files_or_wc_modified_files)'
+complete -f -c jj -n '__jj_seen_subcommand_from squash' -ka '(__jj_parse_revision_modified_files_or_wc_modified_files)'
+complete -f -c jj -n '__jj_seen_subcommand_from untrack' -ka '(__jj_parse_revision_files_or_wc_modified_files)'
+
+# Revisions.
+complete -f -c jj -n '__jj_seen_subcommand_from abandon' -ka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from backout' -s r -l revision -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from backout' -s d -l destination -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from show' -s r -l revision -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from chmod' -s r -l revision -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from describe' -ka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from diff' -s r -l revision -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from diff' -l from -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from diff' -l to -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -s r -l revision -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -l from -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -l to -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from duplicate' -ka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from edit' -ka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from list' -s r -l revision -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from interdiff' -l from -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from interdiff' -l to -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from log' -s r -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from new' -ka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from new' -s A -l after -l insert-after -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from new' -s B -l before -l insert-before -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from obslog' -s r -l revision -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from parallelize' -ka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s r -l revisions -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s s -l source -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s b -l branch -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s d -l destination -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s A -l after -l insert-after -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s B -l before -l insert-before -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from resolve' -s r -l revision -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from restore' -l from -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from restore' -l to -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from restore' -s c -l changes-in -rka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from show' -ka '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from split' -s r -l revision -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from squash' -s r -l revision -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from squash' -l from -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from squash' -l to -l into -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from unsquash' -s r -l revision -rka '(__jj_mutable_changes)'
+
+# Branches.
+complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from delete forget rename set d f r s' -ka '(__jj_local_branches)'
+complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from track t' -ka '(__jj_branches "remote && !tracked" "")'
+complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from untrack' -ka '(__jj_branches "remote && tracked && !remote.starts_with(\"git\")" "")'
+complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from create move set c m s' -s r -l revision -kra '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from move' -l from -rka '(__jj_changes "all()")'
+complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from move' -l to -rka '(__jj_changes "all()")'
+
+# Git.
+complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from push' -s c -l change -kra '(__jj_changes "all()")'
+complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from push' -s r -l revisions -kra '(__jj_changes "all()")'
+complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -s b -l branch -rka '(__jj_local_branches)'
+complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -l remote -rka '(__jj_remotes)'
+complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from remote; and __jj_seen_subcommand_from remove rename set-url' -ka '(__jj_remotes)'
+
+# Operations.
+complete -f -c jj -l at-op -l at-operation -rka '(__jj_operations)'
+complete -f -c jj -n '__jj_seen_subcommand_from undo' -ka '(__jj_operations)'
+complete -f -c jj -n '__jj_seen_subcommand_from operation; and __jj_seen_subcommand_from abandon undo restore' -ka '(__jj_operations)'
diff --git a/files/config/fish/semantic-prompt.fish b/files/config/fish/semantic-prompt.fish
new file mode 100644
index 0000000..2656f40
--- /dev/null
+++ b/files/config/fish/semantic-prompt.fish
@@ -0,0 +1,55 @@
+## Semantic prompt (for Wezterm)
+
+set _fishprompt_aid "fish"$fish_pid
+set _fishprompt_started 0
+# empty if running; or a numeric exit code; or CANCEL
+set _fishprompt_postexec ""
+
+functions -c fish_prompt _fishprompt_saved_prompt
+set _fishprompt_prompt_count 0
+set _fishprompt_disp_count 0
+function _fishprompt_start --on-event fish_prompt
+    set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1)
+    # don't use post-exec, because it is called *before* omitted-newline output
+    if [ -n "$_fishprompt_postexec" ]
+        printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid
+    end
+    printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid
+end
+
+function fish_prompt
+    set _fishprompt_disp_count (math $_fishprompt_disp_count + 1)
+    printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt))
+    set _fishprompt_started 1
+    set _fishprompt_postexec ""
+end
+
+function _fishprompt_preexec --on-event fish_preexec
+    if [ "$_fishprompt_started" = 1 ]
+        printf "\033]133;C;\007"
+    end
+    set _fishprompt_started 0
+end
+
+function _fishprompt_postexec --on-event fish_postexec
+    set _fishprompt_postexec $status
+    _fishprompt_start
+end
+
+function __fishprompt_cancel --on-event fish_cancel
+    set _fishprompt_postexec CANCEL
+    _fishprompt_start
+end
+
+function _fishprompt_exit --on-process %self
+    if [ "$_fishprompt_started" = 1 ]
+        printf "\033]133;Z;aid=%s\007" $_fishprompt_aid
+    end
+end
+
+if functions -q fish_right_prompt
+    functions -c fish_right_prompt _fishprompt_saved_right_prompt
+    function fish_right_prompt
+        printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt))
+    end
+end
diff --git a/files/config/fish/vcs.fish b/files/config/fish/vcs.fish
new file mode 100644
index 0000000..d86672a
--- /dev/null
+++ b/files/config/fish/vcs.fish
@@ -0,0 +1,72 @@
+
+function __jj_in_repo
+    jj --ignore-working-copy --quiet root >>/dev/null 2>&1
+end
+
+function vcs_root
+    jj workspace root --ignore-working-copy 2>/dev/null || git rev-parse --show-toplevel 2>/dev/null || pwd
+end
+
+function vcs_broot
+    br (vcs_root)
+    commandline -f repaint
+end
+
+function vcs_jump
+    set _dir (vcs_root)
+    if [ "$_dir" = "$PWD" ]
+        set _dir (br -f --conf "$HOME/.config/broot/conf.toml")
+    end
+    [ -n "$_dir" ] && pushd $_dir >>/dev/null
+    commandline -f repaint
+end
+
+function vcs_status
+    if __jj_in_repo
+        jj status --ignore-working-copy
+    else
+        git status -sb
+    end
+    commandline -f repaint
+end
+
+function vcs_diff
+    if __jj_in_repo
+        jj show $argv
+    else
+        git diff --stat -p -C --color-words $argv
+    end
+    commandline -f repaint
+end
+
+
+function vcs_log
+    if __jj_in_repo
+        jj log --ignore-working-copy $argv
+    else
+        git diff --stat -p -C --color-words $argv
+    end
+    commandline -f repaint
+end
+
+function vcs_ui
+    if __jj_in_repo
+        lazyjj
+    else
+        gitui
+    end
+    commandline -f repaint
+end
+
+# Abbreviations
+
+abbr -a d vcs_diff
+abbr -a s vcs_status
+
+# Bindings
+bind \c_ vcs_jump
+bind \ea vcs_log
+bind \ee vcs_broot
+bind \eg vcs_ui
+bind \eS vcs_diff
+bind \es vcs_status
diff --git a/.config/nvim/init.lua b/files/config/nvim/init.lua
similarity index 100%
rename from .config/nvim/init.lua
rename to files/config/nvim/init.lua
diff --git a/.config/nvim/lua/config/autocmds.lua b/files/config/nvim/lua/config/autocmds.lua
similarity index 100%
rename from .config/nvim/lua/config/autocmds.lua
rename to files/config/nvim/lua/config/autocmds.lua
diff --git a/.config/nvim/lua/config/keymaps.lua b/files/config/nvim/lua/config/keymaps.lua
similarity index 100%
rename from .config/nvim/lua/config/keymaps.lua
rename to files/config/nvim/lua/config/keymaps.lua
diff --git a/.config/nvim/lua/config/lazy.lua b/files/config/nvim/lua/config/lazy.lua
similarity index 57%
rename from .config/nvim/lua/config/lazy.lua
rename to files/config/nvim/lua/config/lazy.lua
index d5db9cc..7d70096 100644
--- a/.config/nvim/lua/config/lazy.lua
+++ b/files/config/nvim/lua/config/lazy.lua
@@ -10,8 +10,26 @@ require("lazy").setup({
 	spec = {
 		-- add LazyVim and import its plugins
 		{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-		-- import any extras modules here
-		-- import/override with your plugins
+		-- extras
+		{ import = "lazyvim.plugins.extras.dap.core" },
+		{ import = "lazyvim.plugins.extras.editor.overseer" },
+		{ import = "lazyvim.plugins.extras.editor.telescope" },
+		{ import = "lazyvim.plugins.extras.formatting.prettier" },
+		{ import = "lazyvim.plugins.extras.lang.go" },
+		{ import = "lazyvim.plugins.extras.lang.json" },
+		{ import = "lazyvim.plugins.extras.lang.markdown" },
+		{ import = "lazyvim.plugins.extras.lang.nix" },
+		{ import = "lazyvim.plugins.extras.lang.rust" },
+		{ import = "lazyvim.plugins.extras.lang.toml" },
+		{ import = "lazyvim.plugins.extras.lang.typescript" },
+		{ import = "lazyvim.plugins.extras.lang.yaml" },
+		{ import = "lazyvim.plugins.extras.lsp.none-ls" },
+		{ import = "lazyvim.plugins.extras.test.core" },
+		{ import = "lazyvim.plugins.extras.ui.edgy" },
+		{ import = "lazyvim.plugins.extras.ui.treesitter-context" },
+		{ import = "lazyvim.plugins.extras.util.gitui" },
+		{ import = "lazyvim.plugins.extras.util.project" },
+		-- plugins
 		{ import = "plugins" },
 	},
 	defaults = {
@@ -23,14 +41,6 @@ require("lazy").setup({
 		version = false, -- always use the latest git commit
 		-- version = "*", -- try installing the latest stable version for plugins that support semver
 	},
-	icons = {
-		overseer = {
-			Canceled = " ",
-			Failure = " ",
-			Success = " ",
-			Running = " ",
-		},
-	},
 	checker = { enabled = false }, -- automatically check for plugin updates
 	performance = {
 		rtp = {
diff --git a/.config/nvim/lua/config/options.lua b/files/config/nvim/lua/config/options.lua
similarity index 60%
rename from .config/nvim/lua/config/options.lua
rename to files/config/nvim/lua/config/options.lua
index 7b694a6..75e6b54 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/files/config/nvim/lua/config/options.lua
@@ -1,27 +1,5 @@
--- Options are automatically loaded before lazy.nvim startup
--- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
--- Add any additional options here
-
 vim.opt.number = true
 vim.opt.relativenumber = false
--- vim.opt.clipboard = ""
-function no_paste(reg)
-	return function(lines)
-		-- Do nothing! We can't paste with OSC52
-	end
-end
-
-vim.g.clipboard = {
-	name = "OSC 52",
-	copy = {
-		["+"] = require("vim.ui.clipboard.osc52").copy("+"),
-		["*"] = require("vim.ui.clipboard.osc52").copy("*"),
-	},
-	paste = {
-		["+"] = no_paste("+"), -- Pasting disabled
-		["*"] = no_paste("*"), -- Pasting disabled
-	},
-}
 
 vim.g.do_filetype_lua = 1
 vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
diff --git a/.config/nvim/lua/plugins/coding.lua b/files/config/nvim/lua/plugins/coding.lua
similarity index 100%
rename from .config/nvim/lua/plugins/coding.lua
rename to files/config/nvim/lua/plugins/coding.lua
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/files/config/nvim/lua/plugins/colorscheme.lua
similarity index 52%
rename from .config/nvim/lua/plugins/colorscheme.lua
rename to files/config/nvim/lua/plugins/colorscheme.lua
index 59cf784..b2967b9 100644
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ b/files/config/nvim/lua/plugins/colorscheme.lua
@@ -1,8 +1,6 @@
 return {
 	{
-		"shelmangroup/dieter.nvim",
-		dir = "/home/dln/src/git.shelman.io/shelmangroup/dieter.nvim",
-		version = false,
+		"https://git.shelman.io/shelmangroup/dieter.nvim.git",
 		lazy = false,
 		priority = 1000,
 	},
diff --git a/files/config/nvim/lua/plugins/editor.lua b/files/config/nvim/lua/plugins/editor.lua
new file mode 100644
index 0000000..e237117
--- /dev/null
+++ b/files/config/nvim/lua/plugins/editor.lua
@@ -0,0 +1,95 @@
+return {
+	{
+		"folke/flash.nvim",
+		enabled = false,
+	},
+
+	{
+		"telescope.nvim",
+		keys = {
+			{
+				"<Leader><Leader>",
+				function()
+					local telescope = require("telescope")
+					local jj_pick_status, jj_res = pcall(telescope.extensions.jj.files, opts)
+					if jj_pick_status then
+						return
+					end
+					local git_files_status, git_res = pcall(telescope.builtin.git_files, opts)
+					if not git_files_status then
+						error("Could not launch jj/git files: \n" .. jj_res .. "\n" .. git_res)
+					end
+				end,
+				desc = "VCS Files",
+			},
+		},
+		opts = function(_, opts)
+			local actions = require("telescope.actions")
+			opts.defaults = {
+				layout_strategy = "horizontal",
+				layout_config = {
+					anchor = "top",
+					horizontal = {
+						prompt_position = "top",
+						mirror = false,
+						preview_width = 0.49,
+						-- preview_height = 0.5,
+					},
+					width = 0.99,
+					height = 0.9,
+					preview_cutoff = 10,
+				},
+				mappings = {
+					i = {
+						["<esc>"] = actions.close, -- <Esc> close popup
+						["<C-u>"] = false, -- <C-u> clear prompt
+						["<C-w>"] = false, -- <C-u> clear prompt
+					},
+				},
+				path_display = { "filename_first" },
+				-- previewer = false,
+				preview = {
+					-- hide_on_startup = true,
+				},
+				sorting_strategy = "ascending",
+				winblend = 0,
+				wrap_results = true,
+			}
+		end,
+	},
+
+	{ "avm99963/vim-jjdescription", lazy = false },
+
+	{
+		"zschreur/telescope-jj.nvim",
+		keys = {
+			{
+				"<Leader>jc",
+				function()
+					require("telescope").extensions.jj.conflicts()
+				end,
+				desc = "jj conflicts",
+			},
+			{
+				"<Leader>jd",
+				function()
+					require("telescope").extensions.jj.diff()
+				end,
+				desc = "jj diffs",
+			},
+			{
+				"<Leader>jf",
+				function()
+					require("telescope").extensions.jj.files()
+				end,
+				desc = "jj files",
+			},
+		},
+		config = function()
+			LazyVim.on_load("telescope.nvim", function()
+				local telescope = require("telescope")
+				telescope.load_extension("jj")
+			end)
+		end,
+	},
+}
diff --git a/.config/nvim/lua/plugins/extras.lua b/files/config/nvim/lua/plugins/extras.lua
similarity index 100%
rename from .config/nvim/lua/plugins/extras.lua
rename to files/config/nvim/lua/plugins/extras.lua
diff --git a/.config/nvim/lua/plugins/formatting.lua b/files/config/nvim/lua/plugins/formatting.lua
similarity index 91%
rename from .config/nvim/lua/plugins/formatting.lua
rename to files/config/nvim/lua/plugins/formatting.lua
index 1cd976c..f1272ab 100644
--- a/.config/nvim/lua/plugins/formatting.lua
+++ b/files/config/nvim/lua/plugins/formatting.lua
@@ -5,6 +5,7 @@ return {
 			formatters_by_ft = {
 				["cue"] = { { "cue_fmt" } },
 				["html"] = { { "prettierd", "prettier" } },
+				["nix"] = { "nixfmt" },
 				["sass"] = { { "prettierd", "prettier" } },
 				["proto"] = { { "buf" } },
 				["terraform"] = { { "terraform_fmt" } },
diff --git a/.config/nvim/lua/plugins/incline.lua b/files/config/nvim/lua/plugins/incline.lua
similarity index 100%
rename from .config/nvim/lua/plugins/incline.lua
rename to files/config/nvim/lua/plugins/incline.lua
diff --git a/.config/nvim/lua/plugins/lsp.lua b/files/config/nvim/lua/plugins/lsp.lua
similarity index 100%
rename from .config/nvim/lua/plugins/lsp.lua
rename to files/config/nvim/lua/plugins/lsp.lua
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/files/config/nvim/lua/plugins/treesitter.lua
similarity index 100%
rename from .config/nvim/lua/plugins/treesitter.lua
rename to files/config/nvim/lua/plugins/treesitter.lua
diff --git a/.config/nvim/lua/plugins/ui.lua b/files/config/nvim/lua/plugins/ui.lua
similarity index 90%
rename from .config/nvim/lua/plugins/ui.lua
rename to files/config/nvim/lua/plugins/ui.lua
index fd5b977..0fc1c59 100644
--- a/.config/nvim/lua/plugins/ui.lua
+++ b/files/config/nvim/lua/plugins/ui.lua
@@ -90,7 +90,7 @@ return {
 					},
 				},
 
-				messages = { enabled = true },
+				messages = { enabled = true, view = "mini" },
 				lsp = {
 					hover = { enabled = false },
 					signature = { enabled = false },
@@ -105,10 +105,18 @@ return {
 	{
 		"rcarriga/nvim-notify",
 		opts = {
-			stages = "fade_in_slide_out",
 			timeout = 1000,
 			render = "wrapped-compact",
 			top_down = false,
+			max_width = function()
+				return math.floor(vim.o.columns * 0.5)
+			end,
+			on_open = function(win)
+				vim.api.nvim_win_set_config(win, {
+					focusable = false,
+					zindex = 100,
+				})
+			end,
 		},
 	},
 
@@ -120,7 +128,13 @@ return {
 	{
 		"ahmedkhalf/project.nvim",
 		opts = {
+			exclude_dirs = {
+				"~/.cargo/*",
+				"~/.config/*",
+				"/tmp/*",
+			},
 			manual_mode = false,
+			patterns = { ".git", ".jj" },
 		},
 	},
 }
diff --git a/.config/wezterm/wezterm.lua b/files/config/wezterm/wezterm.lua
similarity index 91%
rename from .config/wezterm/wezterm.lua
rename to files/config/wezterm/wezterm.lua
index 4881b99..c60845e 100644
--- a/.config/wezterm/wezterm.lua
+++ b/files/config/wezterm/wezterm.lua
@@ -85,10 +85,18 @@ wezterm.on("tab-8", activate_tab("t8", 7))
 wezterm.on("tab-9", activate_tab("t9", 8))
 wezterm.on("tab-10", activate_tab("t10", 9))
 
-wezterm.on("user-var-changed", function(window, pane, name, _)
+wezterm.on("user-var-changed", function(window, pane, name, value)
 	if name == "nvim_activate" then
 		activate_nvim(window, pane)
 	end
+	if name == "open_url" then
+		local url = string.match(value, "%S+")
+		local u = wezterm.url.parse(string.match(value, "%S+"))
+		if u.scheme == "https" or u.scheme == "http" then
+			wezterm.log_info(url)
+			wezterm.background_child_process({ "xdg-open", url })
+		end
+	end
 end)
 
 -- ------------------------------------------------------------------------------------
@@ -140,22 +148,25 @@ local berkeley_mono_features = {
 
 -- #[ ## ### #### ################
 
-config.font = wezterm.font({
-	family = "Berkeley Mono Nerd Font",
-	weight = "Regular",
-	harfbuzz_features = berkeley_mono_features,
+config.font = wezterm.font_with_fallback({
+	{
+		family = "BerkeleyMono Nerd Font",
+		-- family = "Ubuntu Mono",
+		-- weight = "Regular",
+		harfbuzz_features = berkeley_mono_features,
+	},
+	"Noto Sans Mono",
+	"Noto Color Emoji",
 })
+
 config.font_rules = {
 	{
 		italic = true,
 		intensity = "Bold",
 		reverse = false,
-		-- font = wezterm.font("Iosevka Term SS15 Lt Ex Obl", { weight = "Light", italic = true }),
-		-- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }),
-		-- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }),
-		-- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }),
 		font = wezterm.font({
-			family = "Berkeley Mono Nerd Font",
+			family = "BerkeleyMono Nerd Font",
+			-- family = "Monaspace Radon Light",
 			italic = true,
 			harfbuzz_features = berkeley_mono_features,
 		}),
@@ -189,6 +200,7 @@ config.allow_square_glyphs_to_overflow_width = "Always"
 
 -- Config
 config.enable_wayland = true
+config.xcursor_theme = "Adwaita"
 config.check_for_updates = false
 
 -- UI
@@ -251,6 +263,8 @@ config.disable_default_key_bindings = true
 config.keys = {
 	{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
 	{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
+	{ key = "c", mods = "CTRL|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
+	{ key = "v", mods = "CTRL|SHIFT", action = act.PasteFrom("Clipboard") },
 	{ key = "0", mods = "CTRL", action = "ResetFontSize" },
 	{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
 	{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
diff --git a/files/scripts/git-signing-key b/files/scripts/git-signing-key
new file mode 100755
index 0000000..9c49d31
--- /dev/null
+++ b/files/scripts/git-signing-key
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+ssh-add -L | awk '/^sk-ssh-/ { print "key::" $1 " " $2 }'
diff --git a/bin/test-term.sh b/files/scripts/test-term.sh
similarity index 96%
rename from bin/test-term.sh
rename to files/scripts/test-term.sh
index 91ae7e2..a19fceb 100755
--- a/bin/test-term.sh
+++ b/files/scripts/test-term.sh
@@ -57,6 +57,10 @@ echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly u
 echo
 echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷 ❤️ "
 
+echo
+echo "Nerdfonts:    󱓼 󱓺 󱓻            󱠇 󰲬  󰍎  󰬟  "
+echo "             󱄅 󰣇       "
+
 echo
 echo "Geometrical:"
 echo -e '◆ ◇ ◈ ● ○ ◉ ◎ ◍ ◌'
diff --git a/files/scripts/wezterm-open-url b/files/scripts/wezterm-open-url
new file mode 100755
index 0000000..8cb656f
--- /dev/null
+++ b/files/scripts/wezterm-open-url
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+if [[ $1 == http* ]]; then
+	printf "\033]1337;SetUserVar=open_url=%s\007" "$(echo -n "$1" | base64)"
+fi
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..09d6f23
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,48 @@
+{
+  "nodes": {
+    "home-manager": {
+      "inputs": {
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1722462338,
+        "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=",
+        "owner": "nix-community",
+        "repo": "home-manager",
+        "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-community",
+        "repo": "home-manager",
+        "type": "github"
+      }
+    },
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1722421184,
+        "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "root": {
+      "inputs": {
+        "home-manager": "home-manager",
+        "nixpkgs": "nixpkgs"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..2ea8237
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,72 @@
+{
+  description = "NixOS configuration";
+
+  inputs = {
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+    home-manager.url = "github:nix-community/home-manager";
+    home-manager.inputs.nixpkgs.follows = "nixpkgs";
+  };
+
+  outputs =
+    {
+      self,
+      nixpkgs,
+      home-manager,
+      ...
+    }@inputs:
+    let
+      inherit (self) outputs;
+
+      mkHome =
+        modules:
+        home-manager.lib.homeManagerConfiguration {
+          modules = [ ./common ] ++ modules;
+          pkgs = nixpkgs.legacyPackages.x86_64-linux;
+          extraSpecialArgs = {
+            inherit inputs outputs;
+          };
+        };
+
+      supportedSystems = [
+        "x86_64-linux"
+        "aarch64-linux"
+      ];
+
+      forEachSystem =
+        f:
+        builtins.listToAttrs (
+          map (system: {
+            name = system;
+            value = f system;
+          }) supportedSystems
+        );
+      systemBits = forEachSystem (system: rec {
+        inherit system;
+        pkgs = import nixpkgs {
+          localSystem = system;
+          overlays = [ ];
+        };
+      });
+
+      forEachSystem' = f: forEachSystem (system: (f systemBits.${system}));
+      inherit (nixpkgs) lib;
+    in
+    {
+      overlays = import ./overlays { inherit inputs outputs; };
+
+      devShells = forEachSystem' (
+        { system, pkgs, ... }:
+        {
+          default = pkgs.mkShell { packages = [ pkgs.just ]; };
+        }
+      );
+
+      homeConfigurations = {
+        "dln@dinky" = mkHome [ ./users/dln/dinky.nix ];
+        "dln@nemo" = mkHome [ ./users/dln/nemo.nix ];
+        "lsjostro@nemo" = mkHome [ ./users/lsjostro/nemo.nix ];
+      };
+
+    };
+}
diff --git a/justfile b/justfile
new file mode 100644
index 0000000..73fe5fa
--- /dev/null
+++ b/justfile
@@ -0,0 +1,17 @@
+set shell := ["/usr/bin/env", "bash", "-euo", "pipefail", "-c"]
+
+[private]
+default:
+	@just --list
+
+clean:
+  nh clean all
+
+build:
+  nh home build .
+
+switch:
+  nh home switch .
+
+update:
+  nh home switch --update --ask .
diff --git a/overlays/default.nix b/overlays/default.nix
new file mode 100644
index 0000000..1ab8f99
--- /dev/null
+++ b/overlays/default.nix
@@ -0,0 +1,21 @@
+{ inputs, ... }:
+{
+
+  additions = final: _prev: import ../pkgs final.pkgs;
+
+  modifications = final: prev: {
+
+    # https://discourse.nixos.org/t/disable-ssh-agent-from-gnome-keyring-on-gnome/28176/5
+    gnome-keyring = prev.gnome-keyring.overrideAttrs (oldAttrs: {
+      configureFlags = oldAttrs.configureFlags or [ ] ++ [ "--disable-ssh-agent" ];
+    });
+
+  };
+
+  unstable-packages = final: _prev: {
+    unstable = import inputs.nixpkgs-unstable {
+      system = final.system;
+      config.allowUnfree = true;
+    };
+  };
+}
diff --git a/pkgs/default.nix b/pkgs/default.nix
new file mode 100644
index 0000000..ab3485b
--- /dev/null
+++ b/pkgs/default.nix
@@ -0,0 +1,5 @@
+pkgs: {
+  gnome-ssh-askpass4 = pkgs.callPackage ./gnome-ssh-askpass4 { };
+  jujutsu-openssh = pkgs.callPackage ./jujutsu-openssh { };
+  lazyjj = pkgs.callPackage ./lazyjj { };
+}
diff --git a/pkgs/gnome-ssh-askpass4/default.nix b/pkgs/gnome-ssh-askpass4/default.nix
new file mode 100644
index 0000000..7247a0f
--- /dev/null
+++ b/pkgs/gnome-ssh-askpass4/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  gcr_4,
+  glib,
+  gtk4,
+  pkg-config,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "gnome-ssh-askpass4";
+  version = "0.0.0";
+
+  src = fetchFromGitHub {
+    name = "openssh";
+    owner = "openssh";
+    repo = "openssh-portable";
+    rev = "5b0d9e3ed8fd407936d973990ae169cc296150f7";
+    hash = "sha256-QJilKQ6weWZuf3L8yUplXwjqlzH5Ki7YeDnCh4HSuIQ=";
+  };
+
+  sourceRoot = "openssh/contrib";
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    gcr_4
+    glib
+    gtk4
+  ];
+
+  strictDeps = true;
+
+  buildPhase = ''make gnome-ssh-askpass4'';
+
+  installPhase = ''install -Dm 755 gnome-ssh-askpass4 $out/bin/gnome-ssh-askpass4'';
+
+  meta = with lib; {
+    description = "A simple SSH passphrase grabber for GNOME";
+    homepage = "https://github.com/openssh/openssh-portable";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ ];
+    mainProgram = "gnome-ssh-askpass4";
+  };
+})
diff --git a/pkgs/jujutsu-openssh/Cargo.lock b/pkgs/jujutsu-openssh/Cargo.lock
new file mode 100644
index 0000000..b2483de
--- /dev/null
+++ b/pkgs/jujutsu-openssh/Cargo.lock
@@ -0,0 +1,3877 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "getrandom",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
+name = "anstream"
+version = "0.6.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
+
+[[package]]
+name = "arc-swap"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+
+[[package]]
+name = "assert_cmd"
+version = "2.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8"
+dependencies = [
+ "anstyle",
+ "bstr",
+ "doc-comment",
+ "predicates",
+ "predicates-core",
+ "predicates-tree",
+ "wait-timeout",
+]
+
+[[package]]
+name = "assert_matches"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
+
+[[package]]
+name = "async-trait"
+version = "0.1.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "backoff"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
+dependencies = [
+ "getrandom",
+ "instant",
+ "rand",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.73"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+
+[[package]]
+name = "blake2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bstr"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
+dependencies = [
+ "memchr",
+ "regex-automata 0.4.7",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "camino"
+version = "1.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "cassowary"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "castaway"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc"
+dependencies = [
+ "rustversion",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.99"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695"
+dependencies = [
+ "jobserver",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "num-traits",
+ "windows-targets 0.52.5",
+]
+
+[[package]]
+name = "ciborium"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "4.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap-markdown"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ebc67e6266e14f8b31541c2f204724fa2ac7ad5c17d6f5908fbb92a60f42cff"
+dependencies = [
+ "clap",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+ "terminal_size",
+]
+
+[[package]]
+name = "clap_complete"
+version = "4.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d598e88f6874d4b888ed40c71efbcbf4076f1dfbae128a08a8c9e45f710605d"
+dependencies = [
+ "clap",
+]
+
+[[package]]
+name = "clap_complete_nushell"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1accf1b463dee0d3ab2be72591dccdab8bef314958340447c882c4c72acfe2a3"
+dependencies = [
+ "clap",
+ "clap_complete",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
+
+[[package]]
+name = "clap_mangen"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74b70fc13e60c0e1d490dc50eb73a749be6d81f4ef03783df1d9b7b0c62bc937"
+dependencies = [
+ "clap",
+ "roff",
+]
+
+[[package]]
+name = "clru"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
+
+[[package]]
+name = "compact_str"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f"
+dependencies = [
+ "castaway",
+ "cfg-if",
+ "itoa",
+ "ryu",
+ "static_assertions",
+]
+
+[[package]]
+name = "config"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca"
+dependencies = [
+ "async-trait",
+ "lazy_static",
+ "nom",
+ "pathdiff",
+ "serde",
+ "toml",
+]
+
+[[package]]
+name = "console"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "criterion"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
+dependencies = [
+ "anes",
+ "cast",
+ "ciborium",
+ "clap",
+ "criterion-plot",
+ "is-terminal",
+ "itertools 0.10.5",
+ "num-traits",
+ "once_cell",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast",
+ "itertools 0.10.5",
+]
+
+[[package]]
+name = "crossbeam"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-epoch",
+ "crossbeam-queue",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-queue"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "crossterm"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
+dependencies = [
+ "bitflags 2.5.0",
+ "crossterm_winapi",
+ "libc",
+ "mio",
+ "parking_lot",
+ "signal-hook",
+ "signal-hook-mio",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "dashmap"
+version = "5.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+dependencies = [
+ "cfg-if",
+ "hashbrown 0.14.5",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "diff"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+
+[[package]]
+name = "difflib"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "doc-comment"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+
+[[package]]
+name = "dunce"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+
+[[package]]
+name = "either"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "esl01-renderdag"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a1840969ab8be31e186bb6d2f672d586dcd203dd4019a80dc1277a14686eca9"
+dependencies = [
+ "bitflags 1.3.2",
+ "itertools 0.10.5",
+]
+
+[[package]]
+name = "faster-hex"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183"
+
+[[package]]
+name = "fastrand"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
+
+[[package]]
+name = "filetime"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.4.1",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "fixedbitset"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+
+[[package]]
+name = "flate2"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futures"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678"
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures 0.1.31",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gen-protos"
+version = "0.19.0"
+dependencies = [
+ "prost-build",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "gimli"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
+
+[[package]]
+name = "git2"
+version = "0.18.3"
+source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=8fd23a45f#8fd23a45f4166d4e87debc02d9ba70ef601fe751"
+dependencies = [
+ "bitflags 2.5.0",
+ "libc",
+ "libgit2-sys",
+ "log",
+ "openssl-probe",
+ "openssl-sys",
+ "url",
+]
+
+[[package]]
+name = "gix"
+version = "0.63.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "984c5018adfa7a4536ade67990b3ebc6e11ab57b3d6cd9968de0947ca99b4b06"
+dependencies = [
+ "gix-actor",
+ "gix-attributes",
+ "gix-command",
+ "gix-commitgraph",
+ "gix-config",
+ "gix-date",
+ "gix-diff",
+ "gix-discover",
+ "gix-features",
+ "gix-filter",
+ "gix-fs",
+ "gix-glob",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-ignore",
+ "gix-index",
+ "gix-lock",
+ "gix-macros",
+ "gix-object",
+ "gix-odb",
+ "gix-pack",
+ "gix-path",
+ "gix-pathspec",
+ "gix-ref",
+ "gix-refspec",
+ "gix-revision",
+ "gix-revwalk",
+ "gix-sec",
+ "gix-submodule",
+ "gix-tempfile",
+ "gix-trace",
+ "gix-traverse",
+ "gix-url",
+ "gix-utils",
+ "gix-validate",
+ "gix-worktree",
+ "once_cell",
+ "parking_lot",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-actor"
+version = "0.31.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b8ee65074b2bbb91d9d97c15d172ea75043aefebf9869b5b329149dc76501c"
+dependencies = [
+ "bstr",
+ "gix-date",
+ "gix-utils",
+ "itoa",
+ "thiserror",
+ "winnow 0.6.13",
+]
+
+[[package]]
+name = "gix-attributes"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eefb48f42eac136a4a0023f49a54ec31be1c7a9589ed762c45dcb9b953f7ecc8"
+dependencies = [
+ "bstr",
+ "gix-glob",
+ "gix-path",
+ "gix-quote",
+ "gix-trace",
+ "kstring",
+ "smallvec",
+ "thiserror",
+ "unicode-bom",
+]
+
+[[package]]
+name = "gix-bitmap"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a371db66cbd4e13f0ed9dc4c0fea712d7276805fccc877f77e96374d317e87ae"
+dependencies = [
+ "thiserror",
+]
+
+[[package]]
+name = "gix-chunk"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45c8751169961ba7640b513c3b24af61aa962c967aaf04116734975cd5af0c52"
+dependencies = [
+ "thiserror",
+]
+
+[[package]]
+name = "gix-command"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c22e086314095c43ffe5cdc5c0922d5439da4fd726f3b0438c56147c34dc225"
+dependencies = [
+ "bstr",
+ "gix-path",
+ "gix-trace",
+ "shell-words",
+]
+
+[[package]]
+name = "gix-commitgraph"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7b102311085da4af18823413b5176d7c500fb2272eaf391cfa8635d8bcb12c4"
+dependencies = [
+ "bstr",
+ "gix-chunk",
+ "gix-features",
+ "gix-hash",
+ "memmap2",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-config"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fafe42957e11d98e354a66b6bd70aeea00faf2f62dd11164188224a507c840"
+dependencies = [
+ "bstr",
+ "gix-config-value",
+ "gix-features",
+ "gix-glob",
+ "gix-path",
+ "gix-ref",
+ "gix-sec",
+ "memchr",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+ "unicode-bom",
+ "winnow 0.6.13",
+]
+
+[[package]]
+name = "gix-config-value"
+version = "0.14.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbd06203b1a9b33a78c88252a625031b094d9e1b647260070c25b09910c0a804"
+dependencies = [
+ "bitflags 2.5.0",
+ "bstr",
+ "gix-path",
+ "libc",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-date"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "367ee9093b0c2b04fd04c5c7c8b6a1082713534eab537597ae343663a518fa99"
+dependencies = [
+ "bstr",
+ "itoa",
+ "thiserror",
+ "time",
+]
+
+[[package]]
+name = "gix-diff"
+version = "0.44.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40b9bd8b2d07b6675a840b56a6c177d322d45fa082672b0dad8f063b25baf0a4"
+dependencies = [
+ "bstr",
+ "gix-command",
+ "gix-filter",
+ "gix-fs",
+ "gix-hash",
+ "gix-object",
+ "gix-path",
+ "gix-tempfile",
+ "gix-trace",
+ "gix-worktree",
+ "imara-diff",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-discover"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc27c699b63da66b50d50c00668bc0b7e90c3a382ef302865e891559935f3dbf"
+dependencies = [
+ "bstr",
+ "dunce",
+ "gix-fs",
+ "gix-hash",
+ "gix-path",
+ "gix-ref",
+ "gix-sec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-features"
+version = "0.38.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69"
+dependencies = [
+ "crc32fast",
+ "crossbeam-channel",
+ "flate2",
+ "gix-hash",
+ "gix-trace",
+ "gix-utils",
+ "jwalk",
+ "libc",
+ "once_cell",
+ "parking_lot",
+ "prodash",
+ "sha1_smol",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "gix-filter"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00ce6ea5ac8fca7adbc63c48a1b9e0492c222c386aa15f513405f1003f2f4ab2"
+dependencies = [
+ "bstr",
+ "encoding_rs",
+ "gix-attributes",
+ "gix-command",
+ "gix-hash",
+ "gix-object",
+ "gix-packetline-blocking",
+ "gix-path",
+ "gix-quote",
+ "gix-trace",
+ "gix-utils",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-fs"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3338ff92a2164f5209f185ec0cd316f571a72676bb01d27e22f2867ba69f77a"
+dependencies = [
+ "fastrand",
+ "gix-features",
+ "gix-utils",
+]
+
+[[package]]
+name = "gix-glob"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a29ad0990cf02c48a7aac76ed0dbddeb5a0d070034b83675cc3bbf937eace4"
+dependencies = [
+ "bitflags 2.5.0",
+ "bstr",
+ "gix-features",
+ "gix-path",
+]
+
+[[package]]
+name = "gix-hash"
+version = "0.14.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e"
+dependencies = [
+ "faster-hex",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-hashtable"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242"
+dependencies = [
+ "gix-hash",
+ "hashbrown 0.14.5",
+ "parking_lot",
+]
+
+[[package]]
+name = "gix-ignore"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "640dbeb4f5829f9fc14d31f654a34a0350e43a24e32d551ad130d99bf01f63f1"
+dependencies = [
+ "bstr",
+ "gix-glob",
+ "gix-path",
+ "gix-trace",
+ "unicode-bom",
+]
+
+[[package]]
+name = "gix-index"
+version = "0.33.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d8c5a5f1c58edcbc5692b174cda2703aba82ed17d7176ff4c1752eb48b1b167"
+dependencies = [
+ "bitflags 2.5.0",
+ "bstr",
+ "filetime",
+ "fnv",
+ "gix-bitmap",
+ "gix-features",
+ "gix-fs",
+ "gix-hash",
+ "gix-lock",
+ "gix-object",
+ "gix-traverse",
+ "gix-utils",
+ "gix-validate",
+ "hashbrown 0.14.5",
+ "itoa",
+ "libc",
+ "memmap2",
+ "rustix",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-lock"
+version = "14.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d"
+dependencies = [
+ "gix-tempfile",
+ "gix-utils",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-macros"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "999ce923619f88194171a67fb3e6d613653b8d4d6078b529b15a765da0edcc17"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "gix-object"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fe2dc4a41191c680c942e6ebd630c8107005983c4679214fdb1007dcf5ae1df"
+dependencies = [
+ "bstr",
+ "gix-actor",
+ "gix-date",
+ "gix-features",
+ "gix-hash",
+ "gix-utils",
+ "gix-validate",
+ "itoa",
+ "smallvec",
+ "thiserror",
+ "winnow 0.6.13",
+]
+
+[[package]]
+name = "gix-odb"
+version = "0.61.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e92b9790e2c919166865d0825b26cc440a387c175bed1b43a2fa99c0e9d45e98"
+dependencies = [
+ "arc-swap",
+ "gix-date",
+ "gix-features",
+ "gix-fs",
+ "gix-hash",
+ "gix-object",
+ "gix-pack",
+ "gix-path",
+ "gix-quote",
+ "parking_lot",
+ "tempfile",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-pack"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a8da51212dbff944713edb2141ed7e002eea326b8992070374ce13a6cb610b3"
+dependencies = [
+ "clru",
+ "gix-chunk",
+ "gix-features",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-object",
+ "gix-path",
+ "gix-tempfile",
+ "memmap2",
+ "parking_lot",
+ "smallvec",
+ "thiserror",
+ "uluru",
+]
+
+[[package]]
+name = "gix-packetline-blocking"
+version = "0.17.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c31d42378a3d284732e4d589979930d0d253360eccf7ec7a80332e5ccb77e14a"
+dependencies = [
+ "bstr",
+ "faster-hex",
+ "gix-trace",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-path"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23623cf0f475691a6d943f898c4d0b89f5c1a2a64d0f92bce0e0322ee6528783"
+dependencies = [
+ "bstr",
+ "gix-trace",
+ "home",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-pathspec"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a76cab098dc10ba2d89f634f66bf196dea4d7db4bf10b75c7a9c201c55a2ee19"
+dependencies = [
+ "bitflags 2.5.0",
+ "bstr",
+ "gix-attributes",
+ "gix-config-value",
+ "gix-glob",
+ "gix-path",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-quote"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbff4f9b9ea3fa7a25a70ee62f545143abef624ac6aa5884344e70c8b0a1d9ff"
+dependencies = [
+ "bstr",
+ "gix-utils",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-ref"
+version = "0.44.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3394a2997e5bc6b22ebc1e1a87b41eeefbcfcff3dbfa7c4bd73cb0ac8f1f3e2e"
+dependencies = [
+ "gix-actor",
+ "gix-date",
+ "gix-features",
+ "gix-fs",
+ "gix-hash",
+ "gix-lock",
+ "gix-object",
+ "gix-path",
+ "gix-tempfile",
+ "gix-utils",
+ "gix-validate",
+ "memmap2",
+ "thiserror",
+ "winnow 0.6.13",
+]
+
+[[package]]
+name = "gix-refspec"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dde848865834a54fe4d9b4573f15d0e9a68eaf3d061b42d3ed52b4b8acf880b2"
+dependencies = [
+ "bstr",
+ "gix-hash",
+ "gix-revision",
+ "gix-validate",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-revision"
+version = "0.27.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63e08f8107ed1f93a83bcfbb4c38084c7cb3f6cd849793f1d5eec235f9b13b2b"
+dependencies = [
+ "bstr",
+ "gix-date",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-object",
+ "gix-revwalk",
+ "gix-trace",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-revwalk"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4181db9cfcd6d1d0fd258e91569dbb61f94cb788b441b5294dd7f1167a3e788f"
+dependencies = [
+ "gix-commitgraph",
+ "gix-date",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-object",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-sec"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fddc27984a643b20dd03e97790555804f98cf07404e0e552c0ad8133266a79a1"
+dependencies = [
+ "bitflags 2.5.0",
+ "gix-path",
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "gix-submodule"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "921cd49924ac14b6611b22e5fb7bbba74d8780dc7ad26153304b64d1272460ac"
+dependencies = [
+ "bstr",
+ "gix-config",
+ "gix-path",
+ "gix-pathspec",
+ "gix-refspec",
+ "gix-url",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-tempfile"
+version = "14.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3b0e276cd08eb2a22e9f286a4f13a222a01be2defafa8621367515375644b99"
+dependencies = [
+ "dashmap",
+ "gix-fs",
+ "libc",
+ "once_cell",
+ "parking_lot",
+ "tempfile",
+]
+
+[[package]]
+name = "gix-trace"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e"
+
+[[package]]
+name = "gix-traverse"
+version = "0.39.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f20cb69b63eb3e4827939f42c05b7756e3488ef49c25c412a876691d568ee2a0"
+dependencies = [
+ "bitflags 2.5.0",
+ "gix-commitgraph",
+ "gix-date",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-object",
+ "gix-revwalk",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-url"
+version = "0.27.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0db829ebdca6180fbe32be7aed393591df6db4a72dbbc0b8369162390954d1cf"
+dependencies = [
+ "bstr",
+ "gix-features",
+ "gix-path",
+ "home",
+ "thiserror",
+ "url",
+]
+
+[[package]]
+name = "gix-utils"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35192df7fd0fa112263bad8021e2df7167df4cc2a6e6d15892e1e55621d3d4dc"
+dependencies = [
+ "fastrand",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "gix-validate"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82c27dd34a49b1addf193c92070bcbf3beaf6e10f16a78544de6372e146a0acf"
+dependencies = [
+ "bstr",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-worktree"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53f6b7de83839274022aff92157d7505f23debf739d257984a300a35972ca94e"
+dependencies = [
+ "bstr",
+ "gix-attributes",
+ "gix-features",
+ "gix-fs",
+ "gix-glob",
+ "gix-hash",
+ "gix-ignore",
+ "gix-index",
+ "gix-object",
+ "gix-path",
+ "gix-validate",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "globset"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "log",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
+]
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+dependencies = [
+ "ahash",
+ "allocator-api2",
+]
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "ignore"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1"
+dependencies = [
+ "crossbeam-deque",
+ "globset",
+ "log",
+ "memchr",
+ "regex-automata 0.4.7",
+ "same-file",
+ "walkdir",
+ "winapi-util",
+]
+
+[[package]]
+name = "imara-diff"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e98c1d0ad70fc91b8b9654b1f33db55e59579d3b3de2bffdced0fdb810570cb8"
+dependencies = [
+ "ahash",
+ "hashbrown 0.12.3",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.5",
+]
+
+[[package]]
+name = "indoc"
+version = "2.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
+
+[[package]]
+name = "insta"
+version = "1.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5"
+dependencies = [
+ "console",
+ "lazy_static",
+ "linked-hash-map",
+ "regex",
+ "similar",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "jj-cli"
+version = "0.19.0"
+dependencies = [
+ "anyhow",
+ "assert_cmd",
+ "assert_matches",
+ "async-trait",
+ "cargo_metadata",
+ "chrono",
+ "clap",
+ "clap-markdown",
+ "clap_complete",
+ "clap_complete_nushell",
+ "clap_mangen",
+ "config",
+ "criterion",
+ "crossterm",
+ "dirs",
+ "dunce",
+ "esl01-renderdag",
+ "futures 0.3.30",
+ "git2",
+ "gix",
+ "gix-filter",
+ "hex",
+ "indexmap",
+ "indoc",
+ "insta",
+ "itertools 0.12.1",
+ "jj-cli",
+ "jj-lib",
+ "libc",
+ "maplit",
+ "minus",
+ "once_cell",
+ "pest",
+ "pest_derive",
+ "pollster",
+ "rayon",
+ "regex",
+ "rpassword",
+ "scm-record",
+ "serde",
+ "slab",
+ "strsim",
+ "tempfile",
+ "test-case",
+ "testutils",
+ "textwrap",
+ "thiserror",
+ "timeago",
+ "toml_edit",
+ "tracing",
+ "tracing-chrome",
+ "tracing-subscriber",
+ "unicode-width",
+]
+
+[[package]]
+name = "jj-lib"
+version = "0.19.0"
+dependencies = [
+ "assert_matches",
+ "async-trait",
+ "backoff",
+ "blake2",
+ "bytes",
+ "chrono",
+ "config",
+ "criterion",
+ "digest",
+ "either",
+ "esl01-renderdag",
+ "futures 0.3.30",
+ "git2",
+ "gix",
+ "gix-filter",
+ "glob",
+ "hex",
+ "ignore",
+ "indoc",
+ "insta",
+ "itertools 0.12.1",
+ "jj-lib-proc-macros",
+ "maplit",
+ "num_cpus",
+ "once_cell",
+ "pest",
+ "pest_derive",
+ "pollster",
+ "pretty_assertions",
+ "prost",
+ "rand",
+ "rand_chacha",
+ "rayon",
+ "ref-cast",
+ "regex",
+ "rustix",
+ "serde",
+ "serde_json",
+ "smallvec",
+ "strsim",
+ "tempfile",
+ "test-case",
+ "testutils",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "version_check",
+ "watchman_client",
+ "whoami",
+ "winreg",
+ "zstd",
+]
+
+[[package]]
+name = "jj-lib-proc-macros"
+version = "0.19.0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "jobserver"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "jwalk"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2735847566356cd2179a2a38264839308f7079fa96e6bd5a42d740460e003c56"
+dependencies = [
+ "crossbeam",
+ "rayon",
+]
+
+[[package]]
+name = "kstring"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"
+dependencies = [
+ "static_assertions",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.155"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+
+[[package]]
+name = "libgit2-sys"
+version = "0.17.0+1.8.1"
+source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=8fd23a45f#8fd23a45f4166d4e87debc02d9ba70ef601fe751"
+dependencies = [
+ "cc",
+ "libc",
+ "libz-sys",
+ "openssl-sys",
+ "pkg-config",
+]
+
+[[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.5.0",
+ "libc",
+]
+
+[[package]]
+name = "libz-sys"
+version = "1.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "linked-hash-map"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
+name = "lru"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc"
+dependencies = [
+ "hashbrown 0.14.5",
+]
+
+[[package]]
+name = "maplit"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
+
+[[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata 0.1.10",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memmap2"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "minus"
+version = "5.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "093bd0520d2a37943566a73750e6d44094dac75d66a978d1f0d97ffc78686832"
+dependencies = [
+ "crossbeam-channel",
+ "crossterm",
+ "once_cell",
+ "parking_lot",
+ "regex",
+ "textwrap",
+ "thiserror",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "log",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "multimap"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "num_threads"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "object"
+version = "0.36.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+dependencies = [
+ "parking_lot_core",
+]
+
+[[package]]
+name = "oorandom"
+version = "11.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-src"
+version = "300.3.1+3.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
+dependencies = [
+ "cc",
+ "libc",
+ "openssl-src",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.5.2",
+ "smallvec",
+ "windows-targets 0.52.5",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "pathdiff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "pest"
+version = "2.7.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95"
+dependencies = [
+ "memchr",
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pest_derive"
+version = "2.7.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a"
+dependencies = [
+ "pest",
+ "pest_generator",
+]
+
+[[package]]
+name = "pest_generator"
+version = "2.7.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183"
+dependencies = [
+ "pest",
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pest_meta"
+version = "2.7.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f"
+dependencies = [
+ "once_cell",
+ "pest",
+ "sha2",
+]
+
+[[package]]
+name = "petgraph"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
+dependencies = [
+ "fixedbitset",
+ "indexmap",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "plotters"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "pollster"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "predicates"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8"
+dependencies = [
+ "anstyle",
+ "difflib",
+ "predicates-core",
+]
+
+[[package]]
+name = "predicates-core"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174"
+
+[[package]]
+name = "predicates-tree"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf"
+dependencies = [
+ "predicates-core",
+ "termtree",
+]
+
+[[package]]
+name = "pretty_assertions"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
+dependencies = [
+ "diff",
+ "yansi",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
+dependencies = [
+ "proc-macro2",
+ "syn",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "prodash"
+version = "28.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79"
+
+[[package]]
+name = "prost"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
+dependencies = [
+ "bytes",
+ "prost-derive",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
+dependencies = [
+ "bytes",
+ "heck",
+ "itertools 0.12.1",
+ "log",
+ "multimap",
+ "once_cell",
+ "petgraph",
+ "prettyplease",
+ "prost",
+ "prost-types",
+ "regex",
+ "syn",
+ "tempfile",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
+dependencies = [
+ "anyhow",
+ "itertools 0.12.1",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
+dependencies = [
+ "prost",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "ratatui"
+version = "0.26.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef"
+dependencies = [
+ "bitflags 2.5.0",
+ "cassowary",
+ "compact_str",
+ "crossterm",
+ "itertools 0.12.1",
+ "lru",
+ "paste",
+ "stability",
+ "strum",
+ "unicode-segmentation",
+ "unicode-truncate",
+ "unicode-width",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "ref-cast"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931"
+dependencies = [
+ "ref-cast-impl",
+]
+
+[[package]]
+name = "ref-cast-impl"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.4",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "roff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316"
+
+[[package]]
+name = "rpassword"
+version = "7.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f"
+dependencies = [
+ "libc",
+ "rtoolbox",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rtoolbox"
+version = "0.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+
+[[package]]
+name = "rustix"
+version = "0.38.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
+dependencies = [
+ "bitflags 2.5.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scm-record"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a1bf431016c7a34038f440696c672f0fee1a15d6aea31fe100df6974a35bf5f"
+dependencies = [
+ "cassowary",
+ "crossterm",
+ "num-traits",
+ "ratatui",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tracing",
+ "unicode-width",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "semver"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.204"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_bser"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56b4bcc15e42e5b5ae16c6f75582bef80d36c6ffe2c03b1b5317754b38f8717"
+dependencies = [
+ "anyhow",
+ "byteorder",
+ "bytes",
+ "serde",
+ "serde_bytes",
+ "thiserror",
+]
+
+[[package]]
+name = "serde_bytes"
+version = "0.11.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.204"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.120"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "sha1_smol"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shell-words"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
+
+[[package]]
+name = "signal-hook"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook-mio"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
+dependencies = [
+ "libc",
+ "mio",
+ "signal-hook",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "similar"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640"
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "smawk"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
+
+[[package]]
+name = "socket2"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "stability"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ff9eaf853dec4c8802325d8b6d3dffa86cc707fd7a1a4cdbf416e13b061787a"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "strum"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
+dependencies = [
+ "strum_macros",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn",
+]
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "2.0.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0209b68b3613b093e0ec905354eccaedcfe83b8cb37cbdeae64026c3064c16"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "terminal_size"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
+dependencies = [
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "termtree"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76"
+
+[[package]]
+name = "test-case"
+version = "3.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8"
+dependencies = [
+ "test-case-macros",
+]
+
+[[package]]
+name = "test-case-core"
+version = "3.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f"
+dependencies = [
+ "cfg-if",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "test-case-macros"
+version = "3.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "test-case-core",
+]
+
+[[package]]
+name = "testutils"
+version = "0.19.0"
+dependencies = [
+ "async-trait",
+ "config",
+ "futures 0.3.30",
+ "git2",
+ "hex",
+ "itertools 0.12.1",
+ "jj-lib",
+ "rand",
+ "tempfile",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
+dependencies = [
+ "smawk",
+ "unicode-linebreak",
+ "unicode-width",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "time"
+version = "0.3.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
+dependencies = [
+ "deranged",
+ "itoa",
+ "libc",
+ "num-conv",
+ "num_threads",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "time-macros"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "timeago"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1710e589de0a76aaf295cd47a6699f6405737dbfd3cf2b75c92d000b548d0e6"
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "num_cpus",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.6.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-io",
+ "futures-sink",
+ "log",
+ "pin-project-lite",
+ "slab",
+ "tokio",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-chrome"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724"
+dependencies = [
+ "serde_json",
+ "tracing-core",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+
+[[package]]
+name = "uluru"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da"
+dependencies = [
+ "arrayvec",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-bom"
+version = "2.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-linebreak"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "unicode-truncate"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5fbabedabe362c618c714dbefda9927b5afc8e2a8102f47f081089a9019226"
+dependencies = [
+ "itertools 0.12.1",
+ "unicode-width",
+]
+
+[[package]]
+name = "unicode-width"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+
+[[package]]
+name = "url"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "utf8parse"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "wait-timeout"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasite"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
+name = "watchman_client"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88bc4c9bb443a7aae10d4fa7807bffc397805315e2305288c90c80e2f66cfb52"
+dependencies = [
+ "anyhow",
+ "bytes",
+ "futures 0.3.30",
+ "maplit",
+ "serde",
+ "serde_bser",
+ "thiserror",
+ "tokio",
+ "tokio-util",
+ "winapi",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "whoami"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9"
+dependencies = [
+ "redox_syscall 0.4.1",
+ "wasite",
+ "web-sys",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.5",
+ "windows_aarch64_msvc 0.52.5",
+ "windows_i686_gnu 0.52.5",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.5",
+ "windows_x86_64_gnu 0.52.5",
+ "windows_x86_64_gnullvm 0.52.5",
+ "windows_x86_64_msvc 0.52.5",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+
+[[package]]
+name = "winnow"
+version = "0.5.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "yansi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zstd"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c"
+dependencies = [
+ "zstd-safe",
+]
+
+[[package]]
+name = "zstd-safe"
+version = "6.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581"
+dependencies = [
+ "libc",
+ "zstd-sys",
+]
+
+[[package]]
+name = "zstd-sys"
+version = "2.0.11+zstd.1.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
new file mode 100644
index 0000000..a5cee1e
--- /dev/null
+++ b/pkgs/jujutsu-openssh/default.nix
@@ -0,0 +1,90 @@
+{
+  lib,
+  fetchFromGitHub,
+  rustPlatform,
+  pkg-config,
+  openssl,
+  gzip,
+  libgit2,
+  openssh,
+  zstd,
+  installShellFiles,
+  nix-update-script,
+  testers,
+  jujutsu-openssh,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "jujutsu-openssh";
+  version = "0.19.0+pr3191.openssh";
+
+  src = fetchFromGitHub {
+    owner = "martinvonz";
+    repo = "jj";
+    rev = "f97577cf3f8da3f8cba40bb908a21d5b932cf68f"; # https://github.com/martinvonz/jj/pull/3191/commits
+    hash = "sha256-njRXH1JGBflIPU8nWPawjVEbqXm+zCITjI7EIcpVt84=";
+  };
+
+  # cargoHash = "";
+  cargoLock.lockFile = ./Cargo.lock;
+  cargoLock.outputHashes = {
+    "git2-0.18.3" = "sha256-3g7ajPfLfuPWh46rIa70wQRWLZ+jZXBApkyPlJULi/I=";
+  };
+
+  cargoBuildFlags = [
+    "--bin"
+    "jj"
+  ]; # don't install the fake editors
+  useNextest = false; # nextest is the upstream integration framework, but is problematic for test skipping
+  ZSTD_SYS_USE_PKG_CONFIG = "1"; # disable vendored zlib
+
+  nativeBuildInputs = [
+    gzip
+    installShellFiles
+    pkg-config
+  ];
+
+  buildInputs = [
+    openssl
+    zstd
+    libgit2
+    openssh
+  ];
+
+  postInstall = ''
+    $out/bin/jj util mangen > ./jj.1
+    installManPage ./jj.1
+
+    installShellCompletion --cmd jj \
+      --bash <($out/bin/jj util completion bash) \
+      --fish <($out/bin/jj util completion fish) \
+      --zsh <($out/bin/jj util completion zsh)
+  '';
+
+  checkFlags = [
+    # signing tests spin up an ssh-agent and do git checkouts
+    "--skip=test_ssh_signing"
+  ];
+
+  passthru = {
+    updateScript = nix-update-script { };
+    tests = {
+      version = testers.testVersion {
+        package = jujutsu-openssh;
+        command = "jj --version";
+      };
+    };
+  };
+
+  meta = with lib; {
+    description = "Git-compatible DVCS that is both simple and powerful";
+    homepage = "https://github.com/martinvonz/jj";
+    changelog = "https://github.com/martinvonz/jj/blob/v${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [
+      _0x4A6F
+      thoughtpolice
+    ];
+    mainProgram = "jj";
+  };
+}
diff --git a/pkgs/lazyjj/default.nix b/pkgs/lazyjj/default.nix
new file mode 100644
index 0000000..cf68629
--- /dev/null
+++ b/pkgs/lazyjj/default.nix
@@ -0,0 +1,29 @@
+{
+  stdenvNoCC,
+  fetchzip,
+}: let
+  version = "0.2.1";
+in
+  stdenvNoCC.mkDerivation {
+    name = "lazyjj";
+    inherit version;
+
+    src = fetchzip {
+      url = "https://github.com/Cretezy/lazyjj/releases/download/v0.2.1/lazyjj-v0.2.1-x86_64-unknown-linux-musl.tar.gz";
+      hash = "sha256-yMfGWuzsl94elFxRvGaLA61KBopBnBT3j5pxbCrKl0w=";
+    };
+
+    installPhase = ''
+      runHook preInstall
+      mkdir -p $out/bin
+      install -m755 -D $src/lazyjj $out/bin/lazyjj
+      runHook postInstall
+    '';
+
+    meta = {
+      homepage = "https://github.com/Cretezy/lazyjj";
+      description = "TUI for jj";
+      mainProgram = "lazyjj";
+      platforms = ["x86_64-linux"];
+    };
+  }
diff --git a/users/dln/desktop.nix b/users/dln/desktop.nix
new file mode 100644
index 0000000..7b80912
--- /dev/null
+++ b/users/dln/desktop.nix
@@ -0,0 +1,67 @@
+{ pkgs, ... }:
+{
+  shelman = {
+    desktop.enable = true;
+  };
+
+  home.packages = with pkgs; [
+    audacity
+    bitwig-studio
+    dynamic-wallpaper
+    gimp-with-plugins
+    helvum
+    inkscape
+    moonlight-qt
+    obsidian
+    pavucontrol
+    plexamp
+    reaper
+    signal-desktop
+  ];
+
+  xdg.desktopEntries = {
+    firefox-work = {
+      categories = [
+        "Network"
+        "WebBrowser"
+      ];
+      comment = "Browse the Web";
+      exec = "firefox %u -P work --new-instance --name firefox-work";
+      genericName = "Web Browser";
+      icon = "firefox";
+      mimeType = [
+        "text/html"
+        "text/xml"
+        "application/xhtml+xml"
+        "application/vnd.mozilla.xul+xml"
+        "text/mml"
+        "x-scheme-handler/http"
+        "x-scheme-handler/https"
+      ];
+      name = "Firefox (Work)";
+      settings = {
+        StartupWMClass = "firefox-work";
+        Keywords = "web;browser;internet";
+      };
+      terminal = false;
+      type = "Application";
+    };
+
+    wezterm-nemo = {
+      categories = [
+        "System"
+        "TerminalEmulator"
+      ];
+      exec = "wezterm start --class=org.wezfurlong.wezterm-nemo --domain=nemo";
+      genericName = "wezterm-nemo";
+      icon = "org.wezfurlong.wezterm";
+      name = "wezterm-nemo";
+      settings = {
+        StartupWMClass = "org.wezfurlong.wezterm-nemo";
+        TryExec = "wezterm";
+      };
+      terminal = false;
+      type = "Application";
+    };
+  };
+}
diff --git a/users/dln/dinky.nix b/users/dln/dinky.nix
new file mode 100644
index 0000000..c31bbae
--- /dev/null
+++ b/users/dln/dinky.nix
@@ -0,0 +1,14 @@
+{ ... }:
+{
+  imports = [
+    ./home.nix
+    ./desktop.nix
+  ];
+
+  dconf.settings = {
+    "org/gnome/shell" = {
+      enabled-extensions = [ "Battery-Health-Charging@maniacx.github.com" ];
+    };
+  };
+
+}
diff --git a/users/dln/home.nix b/users/dln/home.nix
new file mode 100644
index 0000000..495944b
--- /dev/null
+++ b/users/dln/home.nix
@@ -0,0 +1,140 @@
+{ pkgs, ... }:
+let
+  realName = "Daniel Lundin";
+  email = "dln@arity.se";
+in
+{
+  home = {
+    username = "dln";
+    homeDirectory = "/home/dln";
+    packages = with pkgs; [
+      openconnect
+      ouch
+    ];
+  };
+
+  programs.atuin.settings = {
+    cwd_filter = [
+      "^~/media"
+      "^/home/dln/media"
+    ];
+  };
+
+  programs.git = {
+    userName = realName;
+    userEmail = email;
+  };
+
+  programs.jujutsu = {
+    settings = {
+      user = {
+        email = email;
+        name = realName;
+      };
+
+      signing = {
+        sign-all = true;
+        backend = "ssh";
+        backends.ssh.allowed-signers = "/home/dln/.ssh/authorized_keys";
+        key = "/home/dln/.ssh/git_signing_key.pub";
+      };
+
+      ui = {
+        "default-command" = [
+          "log"
+          "--limit=20"
+          "--template=builtin_log_comfortable"
+        ];
+
+        pager = "bat";
+      };
+
+      "merge-tools" = {
+        difft."diff-args" = [
+          "--color=always"
+          "$left"
+          "$right"
+        ];
+      };
+
+      aliases = {
+        l = [
+          "log"
+          "-T"
+          "builtin_log_comfortable"
+          "-r"
+          "(main..@) | (main..@)-"
+        ];
+        la = [
+          "log"
+          "-T"
+          "builtin_log_oneline"
+          "-r"
+          "all()"
+        ];
+        b = [
+          "branch"
+          "list"
+        ];
+        n = [
+          "new"
+          "main"
+        ];
+        d = [ "diff" ];
+        s = [ "show" ];
+        sh = [
+          "show"
+          "--tool=difft"
+        ];
+      };
+
+      "revset-aliases" = {
+        # Prevent rewriting commits on main@origin and commits authored by other users;
+        "immutable_heads()" = "main@origin | (main@origin.. & ~mine())";
+        "user(x)" = "author(x) | committer(x)";
+        "trunk()" = "latest((present(main) | present(master)) & remote_branches())";
+        "open" = "(mine() ~ ::trunk()) ~ heads(empty())";
+        "wip" = ''description("wip: ")'';
+        "ready" = "open() ~ (wip::)";
+      };
+
+      colors = {
+        "commit_id prefix" = {
+          bold = true;
+        };
+        "diff token" = {
+          underline = false;
+        };
+      };
+    };
+  };
+
+  programs.ssh.matchBlocks = {
+    dev = {
+      hostname = "10.1.100.16";
+    };
+
+    nemo = {
+      hostname = "10.1.100.20";
+      forwardAgent = true;
+      localForwards = [
+        {
+          bind.address = "localhost";
+          bind.port = 8000;
+          host.address = "localhost";
+          host.port = 8000;
+        }
+        {
+          bind.address = "localhost";
+          bind.port = 8080;
+          host.address = "localhost";
+          host.port = 8080;
+        }
+      ];
+    };
+  };
+
+  services.syncthing.enable = true;
+
+  home.stateVersion = "24.05"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
+}
diff --git a/users/dln/nemo.nix b/users/dln/nemo.nix
new file mode 100644
index 0000000..49687bb
--- /dev/null
+++ b/users/dln/nemo.nix
@@ -0,0 +1,9 @@
+{ ... }:
+{
+  imports = [
+    ./home.nix
+    ./desktop.nix
+  ];
+
+  # Host specific user config goes here
+}
diff --git a/users/lsjostro/home.nix b/users/lsjostro/home.nix
new file mode 100644
index 0000000..f1d8a4d
--- /dev/null
+++ b/users/lsjostro/home.nix
@@ -0,0 +1,40 @@
+{ pkgs, ... }:
+{
+  home = {
+    username = "lsjostro";
+    homeDirectory = "/home/lsjostro";
+    packages = with pkgs; [ openconnect ];
+  };
+
+  programs.git = {
+    userName = "Lars Sjöstrom";
+    userEmail = "lars@radicore.se";
+  };
+
+  programs.ssh.matchBlocks = {
+    dev = {
+      hostname = "10.1.100.17";
+    };
+
+    nemo = {
+      hostname = "10.1.100.20";
+      forwardAgent = true;
+      localForwards = [
+        {
+          bind.address = "localhost";
+          bind.port = 8000;
+          host.address = "localhost";
+          host.port = 8000;
+        }
+        {
+          bind.address = "localhost";
+          bind.port = 8080;
+          host.address = "localhost";
+          host.port = 8080;
+        }
+      ];
+    };
+  };
+
+  home.stateVersion = "24.05"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
+}
diff --git a/users/lsjostro/nemo.nix b/users/lsjostro/nemo.nix
new file mode 100644
index 0000000..0de2f39
--- /dev/null
+++ b/users/lsjostro/nemo.nix
@@ -0,0 +1,6 @@
+{ ... }:
+{
+  imports = [ ./home.nix ];
+
+  # Host specific user config goes here
+}

From 346d80ae7e5dc91c6528db9f306cd197a2d1e424 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 2 Aug 2024 11:56:50 +0200
Subject: [PATCH 320/656] fish: use delta as pager for ripgrep

---
 common/fish.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/common/fish.nix b/common/fish.nix
index 5f30a69..1d619bf 100644
--- a/common/fish.nix
+++ b/common/fish.nix
@@ -93,7 +93,7 @@
 
       rg.body = ''
         if status is-interactive
-          command rg -p $argv | bat
+          command rg --json $argv | delta
         else
           command rg $argv
         end

From 54baace7c18ae33a0a3f36c22c99d6fe4b10b5d0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 2 Aug 2024 14:09:42 +0200
Subject: [PATCH 321/656] move old nixos-config over here

---
 README.md                           |  30 ++++-
 common/base.nix                     |  42 ++++++
 common/default.nix                  |  22 +---
 common/desktop.nix                  | 107 ++++++++++++++++
 common/hardening.nix                |  43 +++++++
 common/laptop.nix                   |  20 +++
 common/nix.nix                      |  40 +++++-
 common/plymouth.nix                 |  45 +++++++
 common/podman.nix                   |  48 +++++++
 flake.lock                          |  93 +++++++++++++-
 flake.nix                           |  27 +++-
 {common => home/common}/atuin.nix   |   0
 {common => home/common}/broot.nix   |   0
 home/common/default.nix             |  21 +++
 {common => home/common}/devel.nix   |   0
 {common => home/common}/fish.nix    |  12 +-
 {common => home/common}/gnome.nix   |   0
 {common => home/common}/k8s.nix     |   0
 home/common/nix.nix                 |  15 +++
 {common => home/common}/nvim.nix    |   2 +-
 {common => home/common}/scripts.nix |   2 +-
 {common => home/common}/ssh.nix     |   0
 {common => home/common}/utils.nix   |   0
 {common => home/common}/vcs.nix     |   0
 {common => home/common}/web.nix     |   0
 {common => home/common}/wezterm.nix |   2 +-
 {users => home}/dln/desktop.nix     |   0
 {users => home}/dln/dinky.nix       |   0
 {users => home}/dln/home.nix        |   0
 {users => home}/dln/nemo.nix        |   0
 {users => home}/lsjostro/home.nix   |   0
 {users => home}/lsjostro/nemo.nix   |   0
 hosts/dinky/default.nix             | 113 ++++++++++++++++
 hosts/nemo/default.nix              | 192 ++++++++++++++++++++++++++++
 justfile                            |  18 ++-
 35 files changed, 850 insertions(+), 44 deletions(-)
 create mode 100644 common/base.nix
 create mode 100644 common/desktop.nix
 create mode 100644 common/hardening.nix
 create mode 100644 common/laptop.nix
 create mode 100644 common/plymouth.nix
 create mode 100644 common/podman.nix
 rename {common => home/common}/atuin.nix (100%)
 rename {common => home/common}/broot.nix (100%)
 create mode 100644 home/common/default.nix
 rename {common => home/common}/devel.nix (100%)
 rename {common => home/common}/fish.nix (90%)
 rename {common => home/common}/gnome.nix (100%)
 rename {common => home/common}/k8s.nix (100%)
 create mode 100644 home/common/nix.nix
 rename {common => home/common}/nvim.nix (86%)
 rename {common => home/common}/scripts.nix (80%)
 rename {common => home/common}/ssh.nix (100%)
 rename {common => home/common}/utils.nix (100%)
 rename {common => home/common}/vcs.nix (100%)
 rename {common => home/common}/web.nix (100%)
 rename {common => home/common}/wezterm.nix (63%)
 rename {users => home}/dln/desktop.nix (100%)
 rename {users => home}/dln/dinky.nix (100%)
 rename {users => home}/dln/home.nix (100%)
 rename {users => home}/dln/nemo.nix (100%)
 rename {users => home}/lsjostro/home.nix (100%)
 rename {users => home}/lsjostro/nemo.nix (100%)
 create mode 100644 hosts/dinky/default.nix
 create mode 100644 hosts/nemo/default.nix

diff --git a/README.md b/README.md
index a989f47..fee8b5d 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,31 @@
-# Home Manager
+# NixOS Config
 
 IT in a box!
+
+## Bootstrapping from a fresh NixOS installation
+
+1. Install NixOS
+2. Clone this repo:
+
+   ```
+   nix-shell -p git --command 'git clone https://git.shelman.io/shelmangroup/nixos-config.git'
+   ```
+
+3. Ensure host configuration exists at `./nixos-config/hosts/${HOSTNAME}` and contains at minimum the hardware configuration. The NixOS installer will write this out to `/etc/nixos/hardware-configuration.nix`.
+4. Apply configuration:
+   ```
+   sudo nixos-rebuild boot --flake ./nixos-config#${HOSTNAME}
+   ```
+
+## Use
+
+1. Clone this repo somewhere convenient, like `~/src/shelman/nixos-config`
+2. Apply configuration: `just switch`
+
+## Update
+
+Update nixpkgs and switch: `just update`
+
+# Home Manager
+
+`just home-switch`
diff --git a/common/base.nix b/common/base.nix
new file mode 100644
index 0000000..269169b
--- /dev/null
+++ b/common/base.nix
@@ -0,0 +1,42 @@
+{ pkgs, ... }:
+
+{
+  boot = {
+    loader.systemd-boot.enable = true;
+    loader.efi.canTouchEfiVariables = true;
+    kernelPackages = pkgs.linuxPackages_zen;
+  };
+
+  time.timeZone = "Europe/Stockholm";
+
+  environment.systemPackages = with pkgs; [
+    btrfs-progs
+    btrfs-snap
+    git
+    glibcLocales
+    qemu_kvm
+    qemu-utils
+    vim
+    zstd
+  ];
+
+  # Use fish, but not in /etc/passwd . See https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell
+  programs.bash = {
+    interactiveShellInit = ''
+      if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
+      then
+        shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
+        exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
+      fi
+    '';
+    shellInit = ''
+      export NIX_LD=$(nix eval --impure --raw --expr 'let pkgs = import <nixpkgs> {}; NIX_LD = pkgs.lib.fileContents "${pkgs.stdenv.cc}/nix-support/dynamic-linker"; in NIX_LD')
+    '';
+  };
+
+  # Open ports in the firewall.
+  # networking.firewall.allowedTCPPorts = [ ... ];
+  # networking.firewall.allowedUDPPorts = [ ... ];
+  # Or disable the firewall altogether.
+  # networking.firewall.enable = false;
+}
diff --git a/common/default.nix b/common/default.nix
index d36eaaa..fcbbc87 100644
--- a/common/default.nix
+++ b/common/default.nix
@@ -1,21 +1,11 @@
-{ lib, ... }:
 {
   imports = [
-    ./atuin.nix
-    ./broot.nix
-    ./devel.nix
-    ./fish.nix
-    ./gnome.nix
-    ./k8s.nix
+    ./base.nix
+    ./desktop.nix
+    ./hardening.nix
+    ./laptop.nix
     ./nix.nix
-    ./nvim.nix
-    ./scripts.nix
-    ./ssh.nix
-    ./utils.nix
-    ./vcs.nix
-    ./web.nix
-    ./wezterm.nix
+    ./plymouth.nix
+    ./podman.nix
   ];
-
-  options.shelman.desktop.enable = lib.mkEnableOption "Desktop environment";
 }
diff --git a/common/desktop.nix b/common/desktop.nix
new file mode 100644
index 0000000..d7eefa2
--- /dev/null
+++ b/common/desktop.nix
@@ -0,0 +1,107 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+
+let
+  inherit (lib) mkIf mkEnableOption;
+  cfg = config.shelman.podman;
+in
+{
+  options.shelman.desktop.enable = mkEnableOption "Desktop environment and common applications";
+
+  config = mkIf cfg.enable {
+    environment.systemPackages = with pkgs; [ gnome-ssh-askpass4 ];
+
+    # Excluding some GNOME applications from the default install
+    environment.gnome.excludePackages =
+      (with pkgs; [
+        gnome-connections
+        gnome-photos
+        gnome-tour
+        snapshot
+      ])
+      ++ (with pkgs.gnome; [
+        atomix # puzzle game
+        baobab # disk usage analyzer
+        cheese # webcam tool
+        epiphany # web browser
+        geary # email reader
+        gnome-clocks
+        gnome-contacts
+        gnome-disk-utility
+        gnome-logs
+        gnome-music
+        gnome-terminal
+        hitori # sudoku game
+        iagno # go game
+        simple-scan
+        tali # poker game
+        yelp # help viewer
+      ]);
+
+    fonts = {
+      fontDir.enable = true;
+      fontconfig = {
+        allowBitmaps = false;
+        antialias = true;
+        defaultFonts = {
+          serif = [ "Liberation Serif" ];
+          sansSerif = [ "Inter" ];
+          monospace = [ "BerkeleyMono Nerd Font" ];
+        };
+        hinting.enable = true;
+        hinting.style = "slight";
+        subpixel.rgba = "rgb";
+      };
+      packages = with pkgs; [
+        inter
+        jetbrains-mono
+        liberation_ttf
+        monaspace
+        (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
+        noto-fonts
+        noto-fonts-cjk
+        noto-fonts-color-emoji
+        roboto
+        ubuntu_font_family
+      ];
+    };
+
+    programs.ssh.askPassword = "${pkgs.gnome-ssh-askpass4}/bin/gnome-ssh-askpass4";
+    programs.ssh.startAgent = true;
+
+    programs.steam = {
+      enable = true;
+      remotePlay.openFirewall = true;
+      dedicatedServer.openFirewall = true;
+      localNetworkGameTransfers.openFirewall = true;
+    };
+
+    services.gnome.gnome-keyring.enable = true;
+
+    services.printing.enable = true;
+
+    services.xserver = {
+      enable = true;
+      displayManager.defaultSession = "gnome";
+      displayManager.gdm.enable = true;
+      displayManager.gdm.autoSuspend = false;
+      desktopManager.gnome.enable = true;
+      xkb.layout = "se";
+      xkb.variant = "us";
+    };
+
+    hardware.pulseaudio.enable = false;
+    security.rtkit.enable = true;
+    services.pipewire = {
+      enable = true;
+      alsa.enable = true;
+      alsa.support32Bit = true;
+      pulse.enable = true;
+      jack.enable = true;
+    };
+  };
+}
diff --git a/common/hardening.nix b/common/hardening.nix
new file mode 100644
index 0000000..4095ce0
--- /dev/null
+++ b/common/hardening.nix
@@ -0,0 +1,43 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+{
+  nix.settings.allowed-users = [
+    "@wheel"
+    "root"
+  ];
+
+  boot.specialFileSystems = lib.mkIf (
+    !config.security.rtkit.enable && !config.security.polkit.enable
+  ) { "/proc".options = [ "hidepid=2" ]; };
+
+  boot.kernel.sysctl."kernel.dmesg_restrict" = 1;
+
+  environment.systemPackages = [ pkgs.doas-sudo-shim ];
+
+  security = {
+    doas = {
+      enable = true;
+      extraRules = [
+        {
+          groups = [ "wheel" ];
+          keepEnv = true;
+          persist = true;
+        }
+      ];
+    };
+    sudo.enable = false;
+  };
+
+  services.openssh = {
+    settings.PasswordAuthentication = false;
+    settings.KbdInteractiveAuthentication = false;
+    # prevents mutable /home/$user/.ssh/authorized_keys from being loaded to ensure that all user keys are config managed
+    # authorizedKeysFiles = lib.mkForce [ "/etc/ssh/authorized_keys.d/%u" ];
+  };
+
+  users.users.root.hashedPassword = "!";
+}
diff --git a/common/laptop.nix b/common/laptop.nix
new file mode 100644
index 0000000..c9d5688
--- /dev/null
+++ b/common/laptop.nix
@@ -0,0 +1,20 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+
+let
+  inherit (lib) mkIf mkEnableOption;
+  cfg = config.shelman.podman;
+in
+{
+  options.shelman.laptop.enable = mkEnableOption "Laptop tools and configuration";
+
+  config = mkIf cfg.enable {
+    environment.systemPackages = with pkgs; [ gnomeExtensions.battery-health-charging ];
+
+    services.fprintd.enable = true;
+  };
+}
diff --git a/common/nix.nix b/common/nix.nix
index 3b66fd3..c94c16d 100644
--- a/common/nix.nix
+++ b/common/nix.nix
@@ -1,15 +1,47 @@
-{ outputs, ... }:
 {
+  inputs,
+  outputs,
+  lib,
+  config,
+  pkgs,
+  ...
+}:
+
+{
+  nix =
+    let
+      flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
+    in
+    {
+      settings = {
+        auto-optimise-store = true;
+        experimental-features = "nix-command flakes";
+        flake-registry = "";
+        # Workaround for https://github.com/NixOS/nix/issues/9574
+        nix-path = config.nix.nixPath;
+        substituters = [ "https://cache.nixos.org/" ];
+        trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
+      };
+      channel.enable = false;
+      registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
+      nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
+    };
+
   nixpkgs = {
-    config.allowUnfree = true;
     overlays = [
       outputs.overlays.additions
       outputs.overlays.modifications
       outputs.overlays.unstable-packages
     ];
+    config.allowUnfree = true;
   };
 
-  programs.home-manager.enable = true;
+  programs.nh = {
+    enable = true;
+    clean.enable = true;
+    clean.extraArgs = "--keep-since 14d --keep 5";
+  };
+  programs.nix-ld.enable = true;
 
-  systemd.user.startServices = "sd-switch";
+  environment.systemPackages = with pkgs; [ nvd ];
 }
diff --git a/common/plymouth.nix b/common/plymouth.nix
new file mode 100644
index 0000000..bcf73cc
--- /dev/null
+++ b/common/plymouth.nix
@@ -0,0 +1,45 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+
+let
+  inherit (lib) mkIf mkEnableOption;
+  cfg = config.shelman.plymouth;
+in
+{
+  options.shelman.plymouth.enable = mkEnableOption "Fancy boot splash";
+
+  config = mkIf cfg.enable {
+    boot = {
+      consoleLogLevel = 0;
+      initrd.verbose = false;
+
+      # Hide the OS choice for bootloaders.
+      # It's still possible to open the bootloader list by pressing any key
+      # It will just not appear on screen unless a key is pressed
+      loader.timeout = 0;
+
+      kernelParams = [
+        "quiet"
+        "splash"
+        "boot.shell_on_fail"
+        "loglevel=3"
+        "rd.systemd.show_status=false"
+        "rd.udev.log_level=3"
+        "udev.log_priority=3"
+      ];
+
+      plymouth = {
+        enable = true;
+        theme = "spinner_alt";
+        themePackages = with pkgs; [
+          (adi1090x-plymouth-themes.override { selected_themes = [ "spinner_alt" ]; })
+        ];
+      };
+    };
+
+  };
+}
diff --git a/common/podman.nix b/common/podman.nix
new file mode 100644
index 0000000..02540ee
--- /dev/null
+++ b/common/podman.nix
@@ -0,0 +1,48 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
+
+let
+  inherit (lib) mkIf mkEnableOption;
+  cfg = config.shelman.podman;
+in
+{
+  options.shelman.podman.enable = mkEnableOption "Podman";
+
+  config = mkIf cfg.enable {
+    environment.extraInit = ''
+      if [ -z "$DOCKER_HOST" -a -n "$XDG_RUNTIME_DIR" ]; then
+        export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock"
+      fi
+    '';
+
+    environment.systemPackages = with pkgs; [
+      docker-compose
+      podman-compose
+    ];
+
+    virtualisation = {
+      containers = {
+        enable = true;
+        storage.settings = {
+          storage = {
+            driver = "overlay";
+            runroot = "/run/containers/storage";
+            graphroot = "/var/lib/containers/storage";
+            rootless_storage_path = "/tmp/containers-$USER";
+            options.overlay.mountopt = "nodev,metacopy=on";
+          };
+        };
+      };
+
+      oci-containers.backend = "podman";
+      podman = {
+        enable = true;
+        dockerCompat = true;
+      };
+    };
+  };
+}
diff --git a/flake.lock b/flake.lock
index 09d6f23..708bc20 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,55 @@
 {
   "nodes": {
+    "colmena": {
+      "inputs": {
+        "flake-compat": "flake-compat",
+        "flake-utils": "flake-utils",
+        "nixpkgs": "nixpkgs",
+        "stable": "stable"
+      },
+      "locked": {
+        "lastModified": 1711386353,
+        "narHash": "sha256-gWEpb8Hybnoqb4O4tmpohGZk6+aerAbJpywKcFIiMlg=",
+        "path": "/nix/store/in94zdj4ls6p21r3q4zzvmbd61g9ap3b-source",
+        "rev": "cd65ef7a25cdc75052fbd04b120aeb066c3881db",
+        "type": "path"
+      },
+      "original": {
+        "id": "colmena",
+        "type": "indirect"
+      }
+    },
+    "flake-compat": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1650374568,
+        "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-utils": {
+      "locked": {
+        "lastModified": 1659877975,
+        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "home-manager": {
       "inputs": {
         "nixpkgs": [
@@ -7,11 +57,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1722462338,
-        "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=",
+        "lastModified": 1722203588,
+        "narHash": "sha256-91V5FMSQ4z9bkhTCf0f86Zjw0bh367daSf0mzCIW0vU=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8",
+        "rev": "792757f643cedc13f02098d8ed506d82e19ec1da",
         "type": "github"
       },
       "original": {
@@ -24,11 +74,27 @@
       "locked": {
         "lastModified": 1722421184,
         "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=",
-        "owner": "nixos",
+        "owner": "NixOS",
         "repo": "nixpkgs",
         "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58",
         "type": "github"
       },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1722062969,
+        "narHash": "sha256-QOS0ykELUmPbrrUGmegAUlpmUFznDQeR4q7rFhl8eQg=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "b73c2221a46c13557b1b3be9c2070cc42cf01eb3",
+        "type": "github"
+      },
       "original": {
         "owner": "nixos",
         "ref": "nixos-unstable",
@@ -38,8 +104,25 @@
     },
     "root": {
       "inputs": {
+        "colmena": "colmena",
         "home-manager": "home-manager",
-        "nixpkgs": "nixpkgs"
+        "nixpkgs": "nixpkgs_2"
+      }
+    },
+    "stable": {
+      "locked": {
+        "lastModified": 1696039360,
+        "narHash": "sha256-g7nIUV4uq1TOVeVIDEZLb005suTWCUjSY0zYOlSBsyE=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "32dcb45f66c0487e92db8303a798ebc548cadedc",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixos-23.05",
+        "repo": "nixpkgs",
+        "type": "github"
       }
     }
   },
diff --git a/flake.nix b/flake.nix
index 2ea8237..75a57a5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -12,6 +12,7 @@
     {
       self,
       nixpkgs,
+      colmena,
       home-manager,
       ...
     }@inputs:
@@ -21,18 +22,27 @@
       mkHome =
         modules:
         home-manager.lib.homeManagerConfiguration {
-          modules = [ ./common ] ++ modules;
+          modules = [ ./home/common ] ++ modules;
           pkgs = nixpkgs.legacyPackages.x86_64-linux;
           extraSpecialArgs = {
             inherit inputs outputs;
           };
         };
 
+      mkHost =
+        modules:
+        nixpkgs.lib.nixosSystem {
+          specialArgs = {
+            inherit inputs outputs;
+          };
+          system = "x86_64-linux";
+          modules = [ ./common ] ++ modules;
+        };
+
       supportedSystems = [
         "x86_64-linux"
         "aarch64-linux"
       ];
-
       forEachSystem =
         f:
         builtins.listToAttrs (
@@ -58,14 +68,19 @@
       devShells = forEachSystem' (
         { system, pkgs, ... }:
         {
-          default = pkgs.mkShell { packages = [ pkgs.just ]; };
+          default = pkgs.mkShell { packages = [ pkgs.colmena ]; };
         }
       );
 
       homeConfigurations = {
-        "dln@dinky" = mkHome [ ./users/dln/dinky.nix ];
-        "dln@nemo" = mkHome [ ./users/dln/nemo.nix ];
-        "lsjostro@nemo" = mkHome [ ./users/lsjostro/nemo.nix ];
+        "dln@dinky" = mkHome [ ./home/dln/dinky.nix ];
+        "dln@nemo" = mkHome [ ./home/dln/nemo.nix ];
+        "lsjostro@nemo" = mkHome [ ./home/lsjostro/nemo.nix ];
+      };
+
+      nixosConfigurations = {
+        dinky = mkHost [ ./hosts/dinky ];
+        nemo = mkHost [ ./hosts/nemo ];
       };
 
     };
diff --git a/common/atuin.nix b/home/common/atuin.nix
similarity index 100%
rename from common/atuin.nix
rename to home/common/atuin.nix
diff --git a/common/broot.nix b/home/common/broot.nix
similarity index 100%
rename from common/broot.nix
rename to home/common/broot.nix
diff --git a/home/common/default.nix b/home/common/default.nix
new file mode 100644
index 0000000..d36eaaa
--- /dev/null
+++ b/home/common/default.nix
@@ -0,0 +1,21 @@
+{ lib, ... }:
+{
+  imports = [
+    ./atuin.nix
+    ./broot.nix
+    ./devel.nix
+    ./fish.nix
+    ./gnome.nix
+    ./k8s.nix
+    ./nix.nix
+    ./nvim.nix
+    ./scripts.nix
+    ./ssh.nix
+    ./utils.nix
+    ./vcs.nix
+    ./web.nix
+    ./wezterm.nix
+  ];
+
+  options.shelman.desktop.enable = lib.mkEnableOption "Desktop environment";
+}
diff --git a/common/devel.nix b/home/common/devel.nix
similarity index 100%
rename from common/devel.nix
rename to home/common/devel.nix
diff --git a/common/fish.nix b/home/common/fish.nix
similarity index 90%
rename from common/fish.nix
rename to home/common/fish.nix
index 1d619bf..107493d 100644
--- a/common/fish.nix
+++ b/home/common/fish.nix
@@ -93,7 +93,7 @@
 
       rg.body = ''
         if status is-interactive
-          command rg --json $argv | delta
+          command rg -p $argv | bat
         else
           command rg $argv
         end
@@ -101,11 +101,11 @@
     };
 
     interactiveShellInit = lib.concatStringsSep "\n" [
-      (builtins.readFile ../files/config/fish/config.fish)
-      (builtins.readFile ../files/config/fish/semantic-prompt.fish)
-      (builtins.readFile ../files/config/fish/go-task.fish)
-      (builtins.readFile ../files/config/fish/jj.fish)
-      (builtins.readFile ../files/config/fish/vcs.fish)
+      (builtins.readFile ../../files/config/fish/config.fish)
+      (builtins.readFile ../../files/config/fish/semantic-prompt.fish)
+      (builtins.readFile ../../files/config/fish/go-task.fish)
+      (builtins.readFile ../../files/config/fish/jj.fish)
+      (builtins.readFile ../../files/config/fish/vcs.fish)
     ];
 
     shellAbbrs = {
diff --git a/common/gnome.nix b/home/common/gnome.nix
similarity index 100%
rename from common/gnome.nix
rename to home/common/gnome.nix
diff --git a/common/k8s.nix b/home/common/k8s.nix
similarity index 100%
rename from common/k8s.nix
rename to home/common/k8s.nix
diff --git a/home/common/nix.nix b/home/common/nix.nix
new file mode 100644
index 0000000..3b66fd3
--- /dev/null
+++ b/home/common/nix.nix
@@ -0,0 +1,15 @@
+{ outputs, ... }:
+{
+  nixpkgs = {
+    config.allowUnfree = true;
+    overlays = [
+      outputs.overlays.additions
+      outputs.overlays.modifications
+      outputs.overlays.unstable-packages
+    ];
+  };
+
+  programs.home-manager.enable = true;
+
+  systemd.user.startServices = "sd-switch";
+}
diff --git a/common/nvim.nix b/home/common/nvim.nix
similarity index 86%
rename from common/nvim.nix
rename to home/common/nvim.nix
index 83f255b..9e65aaf 100644
--- a/common/nvim.nix
+++ b/home/common/nvim.nix
@@ -13,7 +13,7 @@
   xdg.configFile = {
     "nvim" = {
       recursive = true;
-      source = ./../files/config/nvim;
+      source = ./../../files/config/nvim;
     };
   };
 }
diff --git a/common/scripts.nix b/home/common/scripts.nix
similarity index 80%
rename from common/scripts.nix
rename to home/common/scripts.nix
index 4848c39..7f607ac 100644
--- a/common/scripts.nix
+++ b/home/common/scripts.nix
@@ -8,7 +8,7 @@
   home.file = {
     ".local/bin" = {
       recursive = true;
-      source = ./../files/scripts;
+      source = ./../../files/scripts;
     };
 
   };
diff --git a/common/ssh.nix b/home/common/ssh.nix
similarity index 100%
rename from common/ssh.nix
rename to home/common/ssh.nix
diff --git a/common/utils.nix b/home/common/utils.nix
similarity index 100%
rename from common/utils.nix
rename to home/common/utils.nix
diff --git a/common/vcs.nix b/home/common/vcs.nix
similarity index 100%
rename from common/vcs.nix
rename to home/common/vcs.nix
diff --git a/common/web.nix b/home/common/web.nix
similarity index 100%
rename from common/web.nix
rename to home/common/web.nix
diff --git a/common/wezterm.nix b/home/common/wezterm.nix
similarity index 63%
rename from common/wezterm.nix
rename to home/common/wezterm.nix
index 6555bdb..2aa7913 100644
--- a/common/wezterm.nix
+++ b/home/common/wezterm.nix
@@ -4,7 +4,7 @@
 
     programs.wezterm = {
       enable = true;
-      extraConfig = builtins.readFile ./../files/config/wezterm/wezterm.lua;
+      extraConfig = builtins.readFile ./../../files/config/wezterm/wezterm.lua;
     };
 
   };
diff --git a/users/dln/desktop.nix b/home/dln/desktop.nix
similarity index 100%
rename from users/dln/desktop.nix
rename to home/dln/desktop.nix
diff --git a/users/dln/dinky.nix b/home/dln/dinky.nix
similarity index 100%
rename from users/dln/dinky.nix
rename to home/dln/dinky.nix
diff --git a/users/dln/home.nix b/home/dln/home.nix
similarity index 100%
rename from users/dln/home.nix
rename to home/dln/home.nix
diff --git a/users/dln/nemo.nix b/home/dln/nemo.nix
similarity index 100%
rename from users/dln/nemo.nix
rename to home/dln/nemo.nix
diff --git a/users/lsjostro/home.nix b/home/lsjostro/home.nix
similarity index 100%
rename from users/lsjostro/home.nix
rename to home/lsjostro/home.nix
diff --git a/users/lsjostro/nemo.nix b/home/lsjostro/nemo.nix
similarity index 100%
rename from users/lsjostro/nemo.nix
rename to home/lsjostro/nemo.nix
diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
new file mode 100644
index 0000000..851801a
--- /dev/null
+++ b/hosts/dinky/default.nix
@@ -0,0 +1,113 @@
+{
+  inputs,
+  outputs,
+  lib,
+  config,
+  pkgs,
+  modulesPath,
+  ...
+}:
+
+{
+  imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
+
+  boot = {
+    initrd = {
+      availableKernelModules = [
+        "xhci_pci"
+        "thunderbolt"
+        "nvme"
+        "usb_storage"
+        "sd_mod"
+      ];
+      kernelModules = [ ];
+      luks.devices."enc".device = "/dev/disk/by-uuid/e7c7a230-b321-4e6d-869c-6c2d858455d2";
+      systemd.enable = true;
+    };
+    kernelModules = [ "kvm-intel" ];
+    kernelParams = [ "mitigations=off" ];
+    extraModulePackages = [ ];
+  };
+
+  fileSystems."/" = {
+    device = "/dev/disk/by-uuid/81e5205d-fe1e-458f-82e1-d60ab03c0a1d";
+    fsType = "btrfs";
+    options = [
+      "noatime"
+      "nodiratime"
+    ];
+  };
+
+  fileSystems."/boot" = {
+    device = "/dev/disk/by-uuid/D6C0-1A05";
+    fsType = "vfat";
+    options = [
+      "fmask=0022"
+      "dmask=0022"
+    ];
+  };
+
+  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+  hardware.graphics = {
+    enable = true;
+    extraPackages = with pkgs; [
+      vpl-gpu-rt
+      intel-media-driver
+      vaapiVdpau
+      libvdpau-va-gl
+    ];
+  };
+
+  hardware.nitrokey.enable = true;
+
+  swapDevices = [ { device = "/dev/disk/by-uuid/c9cc5270-87b0-4ed4-9891-7df924b0f55a"; } ];
+
+  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+
+  environment.systemPackages = with pkgs; [
+    android-tools
+    android-udev-rules
+    mullvad-vpn
+  ];
+
+  services.printing.enable = true;
+  services.printing.drivers = [ pkgs.brlaser ];
+
+  programs.adb.enable = true;
+
+  networking = {
+    hostName = "dinky";
+    useDHCP = lib.mkDefault true;
+  };
+
+  services.mullvad-vpn.enable = true;
+
+  users.users.dln = {
+    isNormalUser = true;
+    description = "Daniel Lundin";
+    extraGroups = [
+      "adbusers"
+      "lp"
+      "nitrokey"
+      "wheel"
+    ];
+    openssh.authorizedKeys.keys = [
+      "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAILwakA+EeuR23vRhjvjMkzK+FtWIhpnbs7z1pfnBehCUAAAABHNzaDo= dln@dinky"
+      "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJNOBFoU7Cdsgi4KpYRcv7EhR/8kD4DYjEZnwk6urRx7AAAABHNzaDo= dln@nemo"
+    ];
+  };
+
+  shelman = {
+    desktop.enable = true;
+    laptop.enable = true;
+    plymouth.enable = true;
+    podman.enable = true;
+  };
+
+  services.xserver.displayManager.autoLogin.enable = true;
+  services.xserver.displayManager.autoLogin.user = "dln";
+  systemd.services."getty@tty1".enable = false;
+  systemd.services."autovt@tty1".enable = false;
+
+  system.stateVersion = "24.05"; # Did you read the comment?
+}
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
new file mode 100644
index 0000000..dc4024d
--- /dev/null
+++ b/hosts/nemo/default.nix
@@ -0,0 +1,192 @@
+{
+  lib,
+  config,
+  pkgs,
+  modulesPath,
+  ...
+}:
+
+{
+  imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
+
+  boot = {
+    extraModulePackages = with config.boot.kernelPackages; [ nct6687d ];
+    initrd.availableKernelModules = [
+      "xhci_pci"
+      "ahci"
+      "nct6687"
+      "nvme"
+      "firewire_ohci"
+      "usbhid"
+      "usb_storage"
+      "sd_mod"
+    ];
+    initrd.kernelModules = [ "nct6687" ];
+    kernelModules = [
+      "nct6687"
+      "kvm-intel"
+    ];
+    extraModprobeConfig = ''
+      options nct6687 force=1
+    '';
+    kernelParams = [ "mitigations=off" ];
+  };
+
+  fileSystems."/" = {
+    device = "/dev/disk/by-uuid/b9514f88-1c83-4596-999f-7e3640db6a86";
+    fsType = "btrfs";
+    options = [
+      "subvol=@"
+      "noatime"
+      "nodiratime"
+    ];
+  };
+
+  fileSystems."/home" = {
+    device = "/dev/disk/by-uuid/b9514f88-1c83-4596-999f-7e3640db6a86";
+    fsType = "btrfs";
+    options = [
+      "subvol=@home"
+      "noatime"
+      "nodiratime"
+    ];
+  };
+
+  fileSystems."/boot" = {
+    device = "/dev/disk/by-uuid/2670-0FCA";
+    fsType = "vfat";
+    options = [
+      "fmask=0022"
+      "dmask=0022"
+    ];
+  };
+
+  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+  hardware.graphics = {
+    enable = true;
+    extraPackages = with pkgs; [
+      vpl-gpu-rt
+      intel-media-driver
+      vaapiVdpau
+      libvdpau-va-gl
+    ];
+  };
+
+  swapDevices = [ ];
+
+  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+
+  networking = {
+    hostName = "nemo"; # Define your hostname.
+    nameservers = [
+      "10.1.100.11"
+      "10.1.100.12"
+      "10.1.100.13"
+    ];
+    networkmanager.enable = false;
+    useDHCP = false;
+    wireless.iwd = {
+      enable = true;
+      settings = {
+        DriverQuirks.PowerSaveDisable = "*";
+        Network = {
+          EnableIPv6 = false;
+          NameResolvingService = "systemd";
+        };
+        Scan.DisablePeriodicScan = true;
+        Settings = {
+          AutoConnect = true;
+        };
+      };
+    };
+  };
+
+  networking.firewall.allowedTCPPorts = [
+    22000 # Syncthing
+  ];
+  networking.firewall.allowedUDPPorts = [
+    22000 # Synchthing
+    21027
+  ];
+
+  systemd.network.enable = true;
+  systemd.network.networks."10-wifi" = {
+    matchConfig.Name = "wlan0";
+    address = [ "10.1.100.20/24" ];
+    gateway = [ "10.1.100.1" ];
+    linkConfig.RequiredForOnline = "routable";
+  };
+
+  security = {
+    pam.services.doas =
+      { config, ... }:
+      {
+        rules.auth.rssh = {
+          order = config.rules.auth.ssh_agent_auth.order - 1;
+          control = "sufficient";
+          modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
+          settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
+            cat "/etc/ssh/authorized_keys.d/$1"
+          '';
+        };
+      };
+  };
+
+  services.resolved = {
+    enable = true;
+    domains = [ "~." ];
+    fallbackDns = [ "9.9.9.9" ];
+  };
+
+  services.openssh = {
+    enable = true;
+    settings = {
+      PasswordAuthentication = false;
+      PermitRootLogin = "no";
+      StreamLocalBindUnlink = true;
+    };
+  };
+
+  services.sunshine = {
+    enable = true;
+    openFirewall = true;
+    settings = { };
+  };
+
+  shelman = {
+    desktop.enable = true;
+    plymouth.enable = true;
+    podman.enable = true;
+  };
+
+  environment.systemPackages = with pkgs; [
+    ffado
+    lm_sensors
+    openconnect
+    pam_rssh
+  ];
+
+  programs.coolercontrol.enable = true;
+
+  users.users.dln = {
+    isNormalUser = true;
+    description = "Daniel Lundin";
+    extraGroups = [ "wheel" ];
+    openssh.authorizedKeys.keys = [
+      "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIIHMAEZx02kbHrEygyPQYStiXlrIe6EIqBCv7anIkL0pAAAABHNzaDo= dln@dinky"
+      "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJNOBFoU7Cdsgi4KpYRcv7EhR/8kD4DYjEZnwk6urRx7AAAABHNzaDo= dln@nemo"
+    ];
+  };
+
+  users.users.lsjostro = {
+    isNormalUser = true;
+    description = "Lars Sjöström";
+    extraGroups = [ "wheel" ];
+    openssh.authorizedKeys.keys = [
+      "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBJ10mLOpInoqDaySyrxbzvcOrJfLw48Y6eWHa9501lw+hEEBXya3ib7nlvpCqEQJ8aPU5fVRqpkOW5zSimCiRbwAAAAEc3NoOg=="
+      "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBLpoKvsZDIQQLfgzJhe1jAQubBNxjydkj8UfdUPaSXqgfB02OypMOC1m5ZuJYcQIxox0I+4Z8xstFhYP6s8zKZwAAAAEc3NoOg=="
+    ];
+  };
+
+  system.stateVersion = "24.05"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
+}
diff --git a/justfile b/justfile
index 73fe5fa..75763bf 100644
--- a/justfile
+++ b/justfile
@@ -4,14 +4,26 @@ set shell := ["/usr/bin/env", "bash", "-euo", "pipefail", "-c"]
 default:
 	@just --list
 
+boot:
+  nh os boot .
+
+build:
+  nh os build .
+
+switch:
+  nh os switch .
+
+update:
+  nh os switch --update --ask .
+
 clean:
   nh clean all
 
-build:
+home-build:
   nh home build .
 
-switch:
+home-switch:
   nh home switch .
 
-update:
+home-update:
   nh home switch --update --ask .

From afab218397f17ef5e0289a9784b7a472fb8ef20b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 2 Aug 2024 14:47:10 +0200
Subject: [PATCH 322/656] update

---
 flake.lock | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/flake.lock b/flake.lock
index 708bc20..594936f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -57,11 +57,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1722203588,
-        "narHash": "sha256-91V5FMSQ4z9bkhTCf0f86Zjw0bh367daSf0mzCIW0vU=",
+        "lastModified": 1722462338,
+        "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "792757f643cedc13f02098d8ed506d82e19ec1da",
+        "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8",
         "type": "github"
       },
       "original": {
@@ -72,11 +72,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1722421184,
-        "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=",
+        "lastModified": 1696019113,
+        "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58",
+        "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
         "type": "github"
       },
       "original": {
@@ -88,11 +88,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1722062969,
-        "narHash": "sha256-QOS0ykELUmPbrrUGmegAUlpmUFznDQeR4q7rFhl8eQg=",
+        "lastModified": 1722421184,
+        "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "b73c2221a46c13557b1b3be9c2070cc42cf01eb3",
+        "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58",
         "type": "github"
       },
       "original": {

From 68fb14b40685456a7b2e976b056350bd3672afdd Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 3 Aug 2024 13:24:57 +0200
Subject: [PATCH 323/656] update

---
 flake.lock | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/flake.lock b/flake.lock
index 594936f..4c123ce 100644
--- a/flake.lock
+++ b/flake.lock
@@ -57,11 +57,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1722462338,
-        "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=",
+        "lastModified": 1722630065,
+        "narHash": "sha256-QfM/9BMRkCmgWzrPDK+KbgJOUlSJnfX4OvsUupEUZvA=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8",
+        "rev": "afc892db74d65042031a093adb6010c4c3378422",
         "type": "github"
       },
       "original": {

From d6834302cbf2950bf08f242e7f71beaffa0a1b6a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 3 Aug 2024 13:25:31 +0200
Subject: [PATCH 324/656] vcs: re-add git-branchless since its still in use

---
 home/common/vcs.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index e63f1d3..d909ca6 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -5,6 +5,7 @@
     delta
     diffedit3
     difftastic
+    git-branchless
     git-graph
     git-town
     lazyjj

From b1c2640dc2298f37b8c4890e8debf9f9ed59ce71 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 3 Aug 2024 23:59:19 +0200
Subject: [PATCH 325/656] ssh: forward agent to dev

---
 home/dln/home.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index 495944b..12a9d54 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -112,6 +112,7 @@ in
   programs.ssh.matchBlocks = {
     dev = {
       hostname = "10.1.100.16";
+      forwardAgent = true;
     };
 
     nemo = {

From 5868da6c29b0a2cf06077d3b062d9314879be5ff Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 7 Aug 2024 12:00:22 +0200
Subject: [PATCH 326/656] update

---
 flake.lock | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/flake.lock b/flake.lock
index 4c123ce..e02446c 100644
--- a/flake.lock
+++ b/flake.lock
@@ -57,11 +57,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1722630065,
-        "narHash": "sha256-QfM/9BMRkCmgWzrPDK+KbgJOUlSJnfX4OvsUupEUZvA=",
+        "lastModified": 1723015306,
+        "narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "afc892db74d65042031a093adb6010c4c3378422",
+        "rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e",
         "type": "github"
       },
       "original": {
@@ -88,11 +88,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1722421184,
-        "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=",
+        "lastModified": 1722813957,
+        "narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58",
+        "rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa",
         "type": "github"
       },
       "original": {

From abb479c2cd0a39252020ac8ec911ef3b3d4ca327 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 7 Aug 2024 12:22:47 +0200
Subject: [PATCH 327/656] jj: use difftastic by default. add more aliases for
 convenience

---
 files/config/fish/vcs.fish |  4 +++-
 home/dln/home.nix          | 39 +++++++++++++++++++++++++++++++-------
 2 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/files/config/fish/vcs.fish b/files/config/fish/vcs.fish
index d86672a..ae510d5 100644
--- a/files/config/fish/vcs.fish
+++ b/files/config/fish/vcs.fish
@@ -23,7 +23,9 @@ end
 
 function vcs_status
     if __jj_in_repo
-        jj status --ignore-working-copy
+        jj status
+        echo
+        jj log --limit=20 -T builtin_log_comfortable -r "(main..@) | (main..@)-"
     else
         git status -sb
     end
diff --git a/home/dln/home.nix b/home/dln/home.nix
index 12a9d54..ed50251 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -42,11 +42,11 @@ in
       ui = {
         "default-command" = [
           "log"
-          "--limit=20"
-          "--template=builtin_log_comfortable"
+          "--limit=25"
+          "-T"
+          "builtin_log_comfortable"
         ];
-
-        pager = "bat";
+        pager = "delta";
       };
 
       "merge-tools" = {
@@ -55,11 +55,21 @@ in
           "$left"
           "$right"
         ];
+        difftu = {
+          program = "difft";
+          "diff-args" = [
+            "--color=always"
+            "--display=inline"
+            "$left"
+            "$right"
+          ];
+        };
       };
 
       aliases = {
         l = [
           "log"
+          "--limit=25"
           "-T"
           "builtin_log_comfortable"
           "-r"
@@ -67,6 +77,7 @@ in
         ];
         la = [
           "log"
+          "--limit=25"
           "-T"
           "builtin_log_oneline"
           "-r"
@@ -80,9 +91,23 @@ in
           "new"
           "main"
         ];
-        d = [ "diff" ];
-        s = [ "show" ];
-        sh = [
+        d = [
+          "diff"
+          "--tool=difftu"
+        ];
+        dd = [
+          "diff"
+          "--git"
+        ];
+        ds = [
+          "diff"
+          "--tool=difft"
+        ];
+        s = [
+          "show"
+          "--tool=difftu"
+        ];
+        ss = [
           "show"
           "--tool=difft"
         ];

From 7527d2654cabbbcd4c37dbaf39566019c663bd89 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 4 Aug 2024 00:05:29 +0200
Subject: [PATCH 328/656] fish: use delta as pager

---
 home/common/fish.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 107493d..769726c 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -93,7 +93,7 @@
 
       rg.body = ''
         if status is-interactive
-          command rg -p $argv | bat
+          command rg -p $argv --json | delta
         else
           command rg $argv
         end

From 12351463fc78d9ddd7848348054c5dd7a1c74f53 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 7 Aug 2024 21:42:08 +0200
Subject: [PATCH 329/656] git/jj: ignore result dir

---
 home/common/vcs.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index d909ca6..ba1b2f6 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -115,6 +115,7 @@
       ".direnv"
       ".idea"
       ".null-ls_*"
+      "result"
     ];
 
     signing = {

From d527f939b6bf10ac3ef8192c2144d7c9b66ea531 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 7 Aug 2024 21:58:27 +0200
Subject: [PATCH 330/656] jj: show deleted/missing files as empty in difftastic

---
 home/dln/home.nix | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index ed50251..0cbb129 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -52,6 +52,7 @@ in
       "merge-tools" = {
         difft."diff-args" = [
           "--color=always"
+          "--missing-as-empty"
           "$left"
           "$right"
         ];
@@ -60,6 +61,7 @@ in
           "diff-args" = [
             "--color=always"
             "--display=inline"
+            "--missing-as-empty"
             "$left"
             "$right"
           ];

From b636050ab681cd84348dde35902ffa1d6ccdbbc9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 8 Aug 2024 00:40:49 +0200
Subject: [PATCH 331/656] Clean up renamed options and packages

---
 common/desktop.nix      | 21 +++++++++++----------
 hosts/dinky/default.nix |  4 ++--
 2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/common/desktop.nix b/common/desktop.nix
index d7eefa2..ba48368 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -23,22 +23,22 @@ in
         gnome-tour
         snapshot
       ])
-      ++ (with pkgs.gnome; [
-        atomix # puzzle game
+      ++ (with pkgs; [
         baobab # disk usage analyzer
         cheese # webcam tool
         epiphany # web browser
         geary # email reader
-        gnome-clocks
-        gnome-contacts
+        gnome.atomix # puzzle game
         gnome-disk-utility
-        gnome-logs
-        gnome-music
+        gnome.gnome-clocks
+        gnome.gnome-contacts
+        gnome.gnome-logs
+        gnome.gnome-music
+        gnome.hitori # sudoku game
+        gnome.iagno # go game
+        gnome.tali # poker game
         gnome-terminal
-        hitori # sudoku game
-        iagno # go game
         simple-scan
-        tali # poker game
         yelp # help viewer
       ]);
 
@@ -84,9 +84,10 @@ in
 
     services.printing.enable = true;
 
+    services.displayManager.defaultSession = "gnome";
+
     services.xserver = {
       enable = true;
-      displayManager.defaultSession = "gnome";
       displayManager.gdm.enable = true;
       displayManager.gdm.autoSuspend = false;
       desktopManager.gnome.enable = true;
diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index 851801a..b90f774 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -104,8 +104,8 @@
     podman.enable = true;
   };
 
-  services.xserver.displayManager.autoLogin.enable = true;
-  services.xserver.displayManager.autoLogin.user = "dln";
+  services.displayManager.autoLogin.enable = true;
+  services.displayManager.autoLogin.user = "dln";
   systemd.services."getty@tty1".enable = false;
   systemd.services."autovt@tty1".enable = false;
 

From 605e75220a78f538a3f10c50c04e5f80be0500ed Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 9 Aug 2024 19:17:04 +0200
Subject: [PATCH 332/656] nix: shared cache

---
 common/nix.nix | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/common/nix.nix b/common/nix.nix
index c94c16d..825636b 100644
--- a/common/nix.nix
+++ b/common/nix.nix
@@ -19,8 +19,15 @@
         flake-registry = "";
         # Workaround for https://github.com/NixOS/nix/issues/9574
         nix-path = config.nix.nixPath;
-        substituters = [ "https://cache.nixos.org/" ];
-        trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
+        substituters = [
+          "https://nix-attic.aarn.shelman.io/shared"
+          "https://cache-nixos-org.aarn.shelman.io"
+          "https://cache.nixos.org/"
+        ];
+        trusted-public-keys = [
+          "shared:vbOVOQpXO/hLiTJ/7FmtSio75ZE25+mNGOC+a4TcV84="
+          "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
+        ];
       };
       channel.enable = false;
       registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;

From 698fab3921e856477c4c612b018171a2d3f20f03 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 9 Aug 2024 19:17:04 +0200
Subject: [PATCH 333/656] nix: set up remote builds

---
 hosts/nemo/default.nix | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index dc4024d..66a7bc3 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -188,5 +188,22 @@
     ];
   };
 
+  users.users.nixremote = {
+    name = "nixremote";
+    isSystemUser = true;
+    shell = pkgs.bashInteractive;
+    group = "nixremote";
+    openssh.authorizedKeys.keys = [
+      "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEJjhHem/l3p/79Rqo3Wtk9ksxmt7Q/pkRdnXiNzP4Cf"
+    ];
+  };
+  users.groups.nixremote = { };
+
+  nix.settings.trusted-users = [
+    "dln"
+    "lsjostro"
+    "nixremote"
+  ];
+
   system.stateVersion = "24.05"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
 }

From 6f657978f3e0e8babb14dc64175366ae2b02745a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 10 Aug 2024 13:45:09 +0200
Subject: [PATCH 334/656] jj: upgrade to 0.20.0 w/openssh patch

---
 pkgs/jujutsu-openssh/Cargo.lock  | 447 +++++++++++++++++--------------
 pkgs/jujutsu-openssh/default.nix |   6 +-
 2 files changed, 246 insertions(+), 207 deletions(-)

diff --git a/pkgs/jujutsu-openssh/Cargo.lock b/pkgs/jujutsu-openssh/Cargo.lock
index b2483de..f1dc3c5 100644
--- a/pkgs/jujutsu-openssh/Cargo.lock
+++ b/pkgs/jujutsu-openssh/Cargo.lock
@@ -205,9 +205,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.5.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
 
 [[package]]
 name = "blake2"
@@ -229,9 +229,9 @@ dependencies = [
 
 [[package]]
 name = "bstr"
-version = "1.9.1"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
+checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
 dependencies = [
  "memchr",
  "regex-automata 0.4.7",
@@ -252,9 +252,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
+checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
 dependencies = [
  "serde",
 ]
@@ -305,18 +305,18 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
 
 [[package]]
 name = "castaway"
-version = "0.2.2"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc"
+checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5"
 dependencies = [
  "rustversion",
 ]
 
 [[package]]
 name = "cc"
-version = "1.0.99"
+version = "1.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695"
+checksum = "47de7e88bbbd467951ae7f5a6f34f70d1b4d9cfce53d5fd70f74ebe118b3db56"
 dependencies = [
  "jobserver",
  "libc",
@@ -337,8 +337,20 @@ checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
+ "js-sys",
  "num-traits",
- "windows-targets 0.52.5",
+ "wasm-bindgen",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "chrono-english"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f73d909da7eb4a7d88c679c3f5a1bc09d965754e0adb2e7627426cef96a00d6f"
+dependencies = [
+ "chrono",
+ "scanlex",
 ]
 
 [[package]]
@@ -370,9 +382,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.9"
+version = "4.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462"
+checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -389,9 +401,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.9"
+version = "4.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942"
+checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99"
 dependencies = [
  "anstream",
  "anstyle",
@@ -402,18 +414,18 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.5.7"
+version = "4.5.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d598e88f6874d4b888ed40c71efbcbf4076f1dfbae128a08a8c9e45f710605d"
+checksum = "a8670053e87c316345e384ca1f3eba3006fc6355ed8b8a1140d104e109e3df34"
 dependencies = [
  "clap",
 ]
 
 [[package]]
 name = "clap_complete_nushell"
-version = "4.5.2"
+version = "4.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1accf1b463dee0d3ab2be72591dccdab8bef314958340447c882c4c72acfe2a3"
+checksum = "5fe32110e006bccf720f8c9af3fee1ba7db290c724eab61544e1d3295be3a40e"
 dependencies = [
  "clap",
  "clap_complete",
@@ -421,9 +433,9 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.8"
+version = "4.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085"
+checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -439,9 +451,9 @@ checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
 
 [[package]]
 name = "clap_mangen"
-version = "0.2.21"
+version = "0.2.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74b70fc13e60c0e1d490dc50eb73a749be6d81f4ef03783df1d9b7b0c62bc937"
+checksum = "f50dde5bc0c853d6248de457e5eb6e5a674a54b93810a34ded88d882ca1fe2de"
 dependencies = [
  "clap",
  "roff",
@@ -620,10 +632,10 @@ version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "crossterm_winapi",
  "libc",
- "mio",
+ "mio 0.8.11",
  "parking_lot",
  "signal-hook",
  "signal-hook-mio",
@@ -662,7 +674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
 dependencies = [
  "cfg-if",
- "hashbrown 0.14.5",
+ "hashbrown",
  "lock_api",
  "once_cell",
  "parking_lot_core",
@@ -729,9 +741,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
 
 [[package]]
 name = "dunce"
-version = "1.0.4"
+version = "1.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
 
 [[package]]
 name = "either"
@@ -933,7 +945,7 @@ dependencies = [
 
 [[package]]
 name = "gen-protos"
-version = "0.19.0"
+version = "0.20.0"
 dependencies = [
  "prost-build",
 ]
@@ -970,7 +982,7 @@ name = "git2"
 version = "0.18.3"
 source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=8fd23a45f#8fd23a45f4166d4e87debc02d9ba70ef601fe751"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "libc",
  "libgit2-sys",
  "log",
@@ -981,9 +993,9 @@ dependencies = [
 
 [[package]]
 name = "gix"
-version = "0.63.0"
+version = "0.64.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "984c5018adfa7a4536ade67990b3ebc6e11ab57b3d6cd9968de0947ca99b4b06"
+checksum = "d78414d29fcc82329080166077e0f7689f4016551fdb334d787c3d040fe2634f"
 dependencies = [
  "gix-actor",
  "gix-attributes",
@@ -1022,16 +1034,15 @@ dependencies = [
  "gix-validate",
  "gix-worktree",
  "once_cell",
- "parking_lot",
  "smallvec",
  "thiserror",
 ]
 
 [[package]]
 name = "gix-actor"
-version = "0.31.4"
+version = "0.31.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b8ee65074b2bbb91d9d97c15d172ea75043aefebf9869b5b329149dc76501c"
+checksum = "a0e454357e34b833cc3a00b6efbbd3dd4d18b24b9fb0c023876ec2645e8aa3f2"
 dependencies = [
  "bstr",
  "gix-date",
@@ -1043,9 +1054,9 @@ dependencies = [
 
 [[package]]
 name = "gix-attributes"
-version = "0.22.2"
+version = "0.22.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eefb48f42eac136a4a0023f49a54ec31be1c7a9589ed762c45dcb9b953f7ecc8"
+checksum = "e37ce99c7e81288c28b703641b6d5d119aacc45c1a6b247156e6249afa486257"
 dependencies = [
  "bstr",
  "gix-glob",
@@ -1078,9 +1089,9 @@ dependencies = [
 
 [[package]]
 name = "gix-command"
-version = "0.3.7"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c22e086314095c43ffe5cdc5c0922d5439da4fd726f3b0438c56147c34dc225"
+checksum = "0d76867867da891cbe32021ad454e8cae90242f6afb06762e4dd0d357afd1d7b"
 dependencies = [
  "bstr",
  "gix-path",
@@ -1090,9 +1101,9 @@ dependencies = [
 
 [[package]]
 name = "gix-commitgraph"
-version = "0.24.2"
+version = "0.24.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7b102311085da4af18823413b5176d7c500fb2272eaf391cfa8635d8bcb12c4"
+checksum = "133b06f67f565836ec0c473e2116a60fb74f80b6435e21d88013ac0e3c60fc78"
 dependencies = [
  "bstr",
  "gix-chunk",
@@ -1104,9 +1115,9 @@ dependencies = [
 
 [[package]]
 name = "gix-config"
-version = "0.37.0"
+version = "0.38.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53fafe42957e11d98e354a66b6bd70aeea00faf2f62dd11164188224a507c840"
+checksum = "28f53fd03d1bf09ebcc2c8654f08969439c4556e644ca925f27cf033bc43e658"
 dependencies = [
  "bstr",
  "gix-config-value",
@@ -1125,11 +1136,11 @@ dependencies = [
 
 [[package]]
 name = "gix-config-value"
-version = "0.14.6"
+version = "0.14.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbd06203b1a9b33a78c88252a625031b094d9e1b647260070c25b09910c0a804"
+checksum = "b328997d74dd15dc71b2773b162cb4af9a25c424105e4876e6d0686ab41c383e"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "bstr",
  "gix-path",
  "libc",
@@ -1138,9 +1149,9 @@ dependencies = [
 
 [[package]]
 name = "gix-date"
-version = "0.8.6"
+version = "0.8.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "367ee9093b0c2b04fd04c5c7c8b6a1082713534eab537597ae343663a518fa99"
+checksum = "9eed6931f21491ee0aeb922751bd7ec97b4b2fe8fbfedcb678e2a2dce5f3b8c0"
 dependencies = [
  "bstr",
  "itoa",
@@ -1150,9 +1161,9 @@ dependencies = [
 
 [[package]]
 name = "gix-diff"
-version = "0.44.0"
+version = "0.44.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40b9bd8b2d07b6675a840b56a6c177d322d45fa082672b0dad8f063b25baf0a4"
+checksum = "1996d5c8a305b59709467d80617c9fde48d9d75fd1f4179ea970912630886c9d"
 dependencies = [
  "bstr",
  "gix-command",
@@ -1170,9 +1181,9 @@ dependencies = [
 
 [[package]]
 name = "gix-discover"
-version = "0.32.0"
+version = "0.33.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc27c699b63da66b50d50c00668bc0b7e90c3a382ef302865e891559935f3dbf"
+checksum = "67662731cec3cb31ba3ed2463809493f76d8e5d6c6d245de8b0560438c13450e"
 dependencies = [
  "bstr",
  "dunce",
@@ -1208,9 +1219,9 @@ dependencies = [
 
 [[package]]
 name = "gix-filter"
-version = "0.11.2"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00ce6ea5ac8fca7adbc63c48a1b9e0492c222c386aa15f513405f1003f2f4ab2"
+checksum = "e6547738da28275f4dff4e9f3a0f28509f53f94dd6bd822733c91cb306bca61a"
 dependencies = [
  "bstr",
  "encoding_rs",
@@ -1229,9 +1240,9 @@ dependencies = [
 
 [[package]]
 name = "gix-fs"
-version = "0.11.1"
+version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3338ff92a2164f5209f185ec0cd316f571a72676bb01d27e22f2867ba69f77a"
+checksum = "6adf99c27cdf17b1c4d77680c917e0d94d8783d4e1c73d3be0d1d63107163d7a"
 dependencies = [
  "fastrand",
  "gix-features",
@@ -1240,11 +1251,11 @@ dependencies = [
 
 [[package]]
 name = "gix-glob"
-version = "0.16.3"
+version = "0.16.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2a29ad0990cf02c48a7aac76ed0dbddeb5a0d070034b83675cc3bbf937eace4"
+checksum = "fa7df15afa265cc8abe92813cd354d522f1ac06b29ec6dfa163ad320575cb447"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "bstr",
  "gix-features",
  "gix-path",
@@ -1267,15 +1278,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242"
 dependencies = [
  "gix-hash",
- "hashbrown 0.14.5",
+ "hashbrown",
  "parking_lot",
 ]
 
 [[package]]
 name = "gix-ignore"
-version = "0.11.2"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "640dbeb4f5829f9fc14d31f654a34a0350e43a24e32d551ad130d99bf01f63f1"
+checksum = "5e6afb8f98e314d4e1adc822449389ada863c174b5707cedd327d67b84dba527"
 dependencies = [
  "bstr",
  "gix-glob",
@@ -1286,11 +1297,11 @@ dependencies = [
 
 [[package]]
 name = "gix-index"
-version = "0.33.0"
+version = "0.33.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d8c5a5f1c58edcbc5692b174cda2703aba82ed17d7176ff4c1752eb48b1b167"
+checksum = "9a9a44eb55bd84bb48f8a44980e951968ced21e171b22d115d1cdcef82a7d73f"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "bstr",
  "filetime",
  "fnv",
@@ -1303,7 +1314,7 @@ dependencies = [
  "gix-traverse",
  "gix-utils",
  "gix-validate",
- "hashbrown 0.14.5",
+ "hashbrown",
  "itoa",
  "libc",
  "memmap2",
@@ -1336,9 +1347,9 @@ dependencies = [
 
 [[package]]
 name = "gix-object"
-version = "0.42.2"
+version = "0.42.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fe2dc4a41191c680c942e6ebd630c8107005983c4679214fdb1007dcf5ae1df"
+checksum = "25da2f46b4e7c2fa7b413ce4dffb87f69eaf89c2057e386491f4c55cadbfe386"
 dependencies = [
  "bstr",
  "gix-actor",
@@ -1355,9 +1366,9 @@ dependencies = [
 
 [[package]]
 name = "gix-odb"
-version = "0.61.0"
+version = "0.61.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e92b9790e2c919166865d0825b26cc440a387c175bed1b43a2fa99c0e9d45e98"
+checksum = "20d384fe541d93d8a3bb7d5d5ef210780d6df4f50c4e684ccba32665a5e3bc9b"
 dependencies = [
  "arc-swap",
  "gix-date",
@@ -1375,9 +1386,9 @@ dependencies = [
 
 [[package]]
 name = "gix-pack"
-version = "0.51.0"
+version = "0.51.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a8da51212dbff944713edb2141ed7e002eea326b8992070374ce13a6cb610b3"
+checksum = "3e0594491fffe55df94ba1c111a6566b7f56b3f8d2e1efc750e77d572f5f5229"
 dependencies = [
  "clru",
  "gix-chunk",
@@ -1386,9 +1397,7 @@ dependencies = [
  "gix-hashtable",
  "gix-object",
  "gix-path",
- "gix-tempfile",
  "memmap2",
- "parking_lot",
  "smallvec",
  "thiserror",
  "uluru",
@@ -1408,9 +1417,9 @@ dependencies = [
 
 [[package]]
 name = "gix-path"
-version = "0.10.7"
+version = "0.10.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23623cf0f475691a6d943f898c4d0b89f5c1a2a64d0f92bce0e0322ee6528783"
+checksum = "8d23d5bbda31344d8abc8de7c075b3cf26e5873feba7c4a15d916bce67382bd9"
 dependencies = [
  "bstr",
  "gix-trace",
@@ -1421,11 +1430,11 @@ dependencies = [
 
 [[package]]
 name = "gix-pathspec"
-version = "0.7.5"
+version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a76cab098dc10ba2d89f634f66bf196dea4d7db4bf10b75c7a9c201c55a2ee19"
+checksum = "d307d1b8f84dc8386c4aa20ce0cf09242033840e15469a3ecba92f10cfb5c046"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "bstr",
  "gix-attributes",
  "gix-config-value",
@@ -1447,12 +1456,11 @@ dependencies = [
 
 [[package]]
 name = "gix-ref"
-version = "0.44.1"
+version = "0.45.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3394a2997e5bc6b22ebc1e1a87b41eeefbcfcff3dbfa7c4bd73cb0ac8f1f3e2e"
+checksum = "636e96a0a5562715153fee098c217110c33a6f8218f08f4687ff99afde159bb5"
 dependencies = [
  "gix-actor",
- "gix-date",
  "gix-features",
  "gix-fs",
  "gix-hash",
@@ -1469,9 +1477,9 @@ dependencies = [
 
 [[package]]
 name = "gix-refspec"
-version = "0.23.0"
+version = "0.23.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dde848865834a54fe4d9b4573f15d0e9a68eaf3d061b42d3ed52b4b8acf880b2"
+checksum = "6868f8cd2e62555d1f7c78b784bece43ace40dd2a462daf3b588d5416e603f37"
 dependencies = [
  "bstr",
  "gix-hash",
@@ -1483,25 +1491,23 @@ dependencies = [
 
 [[package]]
 name = "gix-revision"
-version = "0.27.1"
+version = "0.27.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63e08f8107ed1f93a83bcfbb4c38084c7cb3f6cd849793f1d5eec235f9b13b2b"
+checksum = "01b13e43c2118c4b0537ddac7d0821ae0dfa90b7b8dbf20c711e153fb749adce"
 dependencies = [
  "bstr",
  "gix-date",
  "gix-hash",
- "gix-hashtable",
  "gix-object",
  "gix-revwalk",
- "gix-trace",
  "thiserror",
 ]
 
 [[package]]
 name = "gix-revwalk"
-version = "0.13.1"
+version = "0.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4181db9cfcd6d1d0fd258e91569dbb61f94cb788b441b5294dd7f1167a3e788f"
+checksum = "1b030ccaab71af141f537e0225f19b9e74f25fefdba0372246b844491cab43e0"
 dependencies = [
  "gix-commitgraph",
  "gix-date",
@@ -1514,11 +1520,11 @@ dependencies = [
 
 [[package]]
 name = "gix-sec"
-version = "0.10.6"
+version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fddc27984a643b20dd03e97790555804f98cf07404e0e552c0ad8133266a79a1"
+checksum = "1547d26fa5693a7f34f05b4a3b59a90890972922172653bcb891ab3f09f436df"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "gix-path",
  "libc",
  "windows-sys 0.52.0",
@@ -1526,9 +1532,9 @@ dependencies = [
 
 [[package]]
 name = "gix-submodule"
-version = "0.11.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "921cd49924ac14b6611b22e5fb7bbba74d8780dc7ad26153304b64d1272460ac"
+checksum = "0f2e0f69aa00805e39d39ec80472a7e9da20ed5d73318b27925a2cc198e854fd"
 dependencies = [
  "bstr",
  "gix-config",
@@ -1561,11 +1567,11 @@ checksum = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e"
 
 [[package]]
 name = "gix-traverse"
-version = "0.39.1"
+version = "0.39.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f20cb69b63eb3e4827939f42c05b7756e3488ef49c25c412a876691d568ee2a0"
+checksum = "e499a18c511e71cf4a20413b743b9f5bcf64b3d9e81e9c3c6cd399eae55a8840"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "gix-commitgraph",
  "gix-date",
  "gix-hash",
@@ -1578,9 +1584,9 @@ dependencies = [
 
 [[package]]
 name = "gix-url"
-version = "0.27.3"
+version = "0.27.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0db829ebdca6180fbe32be7aed393591df6db4a72dbbc0b8369162390954d1cf"
+checksum = "e2eb9b35bba92ea8f0b5ab406fad3cf6b87f7929aa677ff10aa042c6da621156"
 dependencies = [
  "bstr",
  "gix-features",
@@ -1612,9 +1618,9 @@ dependencies = [
 
 [[package]]
 name = "gix-worktree"
-version = "0.34.0"
+version = "0.34.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53f6b7de83839274022aff92157d7505f23debf739d257984a300a35972ca94e"
+checksum = "26f7326ebe0b9172220694ea69d344c536009a9b98fb0f9de092c440f3efe7a6"
 dependencies = [
  "bstr",
  "gix-attributes",
@@ -1658,12 +1664,6 @@ dependencies = [
  "crunchy",
 ]
 
-[[package]]
-name = "hashbrown"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-
 [[package]]
 name = "hashbrown"
 version = "0.14.5"
@@ -1752,22 +1752,22 @@ dependencies = [
 
 [[package]]
 name = "imara-diff"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e98c1d0ad70fc91b8b9654b1f33db55e59579d3b3de2bffdced0fdb810570cb8"
+checksum = "af13c8ceb376860ff0c6a66d83a8cdd4ecd9e464da24621bbffcd02b49619434"
 dependencies = [
  "ahash",
- "hashbrown 0.12.3",
+ "hashbrown",
 ]
 
 [[package]]
 name = "indexmap"
-version = "2.2.6"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.5",
+ "hashbrown",
 ]
 
 [[package]]
@@ -1833,6 +1833,15 @@ dependencies = [
  "either",
 ]
 
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
 [[package]]
 name = "itoa"
 version = "1.0.11"
@@ -1841,12 +1850,13 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "jj-cli"
-version = "0.19.0"
+version = "0.20.0"
 dependencies = [
  "anyhow",
  "assert_cmd",
  "assert_matches",
  "async-trait",
+ "bstr",
  "cargo_metadata",
  "chrono",
  "clap",
@@ -1863,12 +1873,11 @@ dependencies = [
  "futures 0.3.30",
  "git2",
  "gix",
- "gix-filter",
  "hex",
  "indexmap",
  "indoc",
  "insta",
- "itertools 0.12.1",
+ "itertools 0.13.0",
  "jj-cli",
  "jj-lib",
  "libc",
@@ -1900,14 +1909,15 @@ dependencies = [
 
 [[package]]
 name = "jj-lib"
-version = "0.19.0"
+version = "0.20.0"
 dependencies = [
  "assert_matches",
  "async-trait",
  "backoff",
  "blake2",
- "bytes",
+ "bstr",
  "chrono",
+ "chrono-english",
  "config",
  "criterion",
  "digest",
@@ -1922,7 +1932,7 @@ dependencies = [
  "ignore",
  "indoc",
  "insta",
- "itertools 0.12.1",
+ "itertools 0.13.0",
  "jj-lib-proc-macros",
  "maplit",
  "num_cpus",
@@ -1957,7 +1967,7 @@ dependencies = [
 
 [[package]]
 name = "jj-lib-proc-macros"
-version = "0.19.0"
+version = "0.20.0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2003,9 +2013,9 @@ dependencies = [
 
 [[package]]
 name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "libc"
@@ -2031,7 +2041,7 @@ version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "libc",
 ]
 
@@ -2071,9 +2081,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.21"
+version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
 
 [[package]]
 name = "lru"
@@ -2081,7 +2091,7 @@ version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc"
 dependencies = [
- "hashbrown 0.14.5",
+ "hashbrown",
 ]
 
 [[package]]
@@ -2156,6 +2166,18 @@ dependencies = [
  "windows-sys 0.48.0",
 ]
 
+[[package]]
+name = "mio"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "wasi",
+ "windows-sys 0.52.0",
+]
+
 [[package]]
 name = "multimap"
 version = "0.10.0"
@@ -2218,9 +2240,9 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.36.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434"
+checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
 dependencies = [
  "memchr",
 ]
@@ -2236,9 +2258,9 @@ dependencies = [
 
 [[package]]
 name = "oorandom"
-version = "11.1.3"
+version = "11.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
+checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
 
 [[package]]
 name = "openssl-probe"
@@ -2300,7 +2322,7 @@ dependencies = [
  "libc",
  "redox_syscall 0.5.2",
  "smallvec",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -2600,7 +2622,7 @@ version = "0.26.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "cassowary",
  "compact_str",
  "crossterm",
@@ -2649,7 +2671,7 @@ version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
@@ -2685,9 +2707,9 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.5"
+version = "1.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
+checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2766,7 +2788,7 @@ version = "0.38.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.6.0",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -2794,6 +2816,12 @@ dependencies = [
  "winapi-util",
 ]
 
+[[package]]
+name = "scanlex"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db"
+
 [[package]]
 name = "scm-record"
 version = "0.3.0"
@@ -2851,9 +2879,9 @@ dependencies = [
 
 [[package]]
 name = "serde_bytes"
-version = "0.11.14"
+version = "0.11.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734"
+checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a"
 dependencies = [
  "serde",
 ]
@@ -2871,11 +2899,12 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.120"
+version = "1.0.122"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
+checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da"
 dependencies = [
  "itoa",
+ "memchr",
  "ryu",
  "serde",
 ]
@@ -2938,7 +2967,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
 dependencies = [
  "libc",
- "mio",
+ "mio 0.8.11",
  "signal-hook",
 ]
 
@@ -2990,9 +3019,9 @@ dependencies = [
 
 [[package]]
 name = "stability"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ff9eaf853dec4c8802325d8b6d3dffa86cc707fd7a1a4cdbf416e13b061787a"
+checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac"
 dependencies = [
  "quote",
  "syn",
@@ -3012,9 +3041,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
 
 [[package]]
 name = "strum"
-version = "0.26.2"
+version = "0.26.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
+checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
 dependencies = [
  "strum_macros",
 ]
@@ -3040,9 +3069,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.70"
+version = "2.0.72"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f0209b68b3613b093e0ec905354eccaedcfe83b8cb37cbdeae64026c3064c16"
+checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3051,14 +3080,15 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.10.1"
+version = "3.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
 dependencies = [
  "cfg-if",
  "fastrand",
+ "once_cell",
  "rustix",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -3112,14 +3142,14 @@ dependencies = [
 
 [[package]]
 name = "testutils"
-version = "0.19.0"
+version = "0.20.0"
 dependencies = [
  "async-trait",
  "config",
  "futures 0.3.30",
  "git2",
  "hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
  "jj-lib",
  "rand",
  "tempfile",
@@ -3138,18 +3168,18 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.61"
+version = "1.0.63"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.61"
+version = "1.0.63"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3217,9 +3247,9 @@ dependencies = [
 
 [[package]]
 name = "tinyvec"
-version = "1.6.0"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
 dependencies = [
  "tinyvec_macros",
 ]
@@ -3232,28 +3262,27 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.38.0"
+version = "1.39.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
+checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1"
 dependencies = [
  "backtrace",
  "bytes",
  "libc",
- "mio",
- "num_cpus",
+ "mio 1.0.1",
  "parking_lot",
  "pin-project-lite",
  "signal-hook-registry",
  "socket2",
  "tokio-macros",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "tokio-macros"
-version = "2.3.0"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
+checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3441,11 +3470,12 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
 name = "unicode-truncate"
-version = "1.0.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a5fbabedabe362c618c714dbefda9927b5afc8e2a8102f47f081089a9019226"
+checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf"
 dependencies = [
- "itertools 0.12.1",
+ "itertools 0.13.0",
+ "unicode-segmentation",
  "unicode-width",
 ]
 
@@ -3486,9 +3516,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
 
 [[package]]
 name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
 
 [[package]]
 name = "wait-timeout"
@@ -3651,7 +3681,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -3669,7 +3699,16 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -3689,18 +3728,18 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.5",
- "windows_aarch64_msvc 0.52.5",
- "windows_i686_gnu 0.52.5",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
  "windows_i686_gnullvm",
- "windows_i686_msvc 0.52.5",
- "windows_x86_64_gnu 0.52.5",
- "windows_x86_64_gnullvm 0.52.5",
- "windows_x86_64_msvc 0.52.5",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
 ]
 
 [[package]]
@@ -3711,9 +3750,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -3723,9 +3762,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -3735,15 +3774,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
 [[package]]
 name = "windows_i686_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -3753,9 +3792,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -3765,9 +3804,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -3777,9 +3816,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -3789,9 +3828,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.52.5"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
 name = "winnow"
@@ -3829,18 +3868,18 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
 
 [[package]]
 name = "zerocopy"
-version = "0.7.34"
+version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.7.34"
+version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3868,9 +3907,9 @@ dependencies = [
 
 [[package]]
 name = "zstd-sys"
-version = "2.0.11+zstd.1.5.6"
+version = "2.0.12+zstd.1.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4"
+checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13"
 dependencies = [
  "cc",
  "pkg-config",
diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
index a5cee1e..b7d9789 100644
--- a/pkgs/jujutsu-openssh/default.nix
+++ b/pkgs/jujutsu-openssh/default.nix
@@ -19,10 +19,10 @@ rustPlatform.buildRustPackage rec {
   version = "0.19.0+pr3191.openssh";
 
   src = fetchFromGitHub {
-    owner = "martinvonz";
+    owner = "dln";
     repo = "jj";
-    rev = "f97577cf3f8da3f8cba40bb908a21d5b932cf68f"; # https://github.com/martinvonz/jj/pull/3191/commits
-    hash = "sha256-njRXH1JGBflIPU8nWPawjVEbqXm+zCITjI7EIcpVt84=";
+    rev = "02d38813680f9c78bebad75b3aa69f3523584f1e"; # https://github.com/dln/jj/tree/openssh
+    hash = "sha256-D9H6o1+l2wgDlX1idIXTqq9FHqKb9+lgI7haRUrQlKw=";
   };
 
   # cargoHash = "";

From 78c14ff210101b5936d3aa0d05531fb0d9178c80 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 10 Aug 2024 14:03:49 +0200
Subject: [PATCH 335/656] fixup

---
 pkgs/jujutsu-openssh/default.nix | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
index b7d9789..b5bd764 100644
--- a/pkgs/jujutsu-openssh/default.nix
+++ b/pkgs/jujutsu-openssh/default.nix
@@ -25,7 +25,6 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-D9H6o1+l2wgDlX1idIXTqq9FHqKb9+lgI7haRUrQlKw=";
   };
 
-  # cargoHash = "";
   cargoLock.lockFile = ./Cargo.lock;
   cargoLock.outputHashes = {
     "git2-0.18.3" = "sha256-3g7ajPfLfuPWh46rIa70wQRWLZ+jZXBApkyPlJULi/I=";

From 47baf8ac8f1d7cd21cc6186edddf74465c642a30 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 10 Aug 2024 14:14:15 +0200
Subject: [PATCH 336/656] update

---
 flake.lock | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/flake.lock b/flake.lock
index e02446c..c14c9dd 100644
--- a/flake.lock
+++ b/flake.lock
@@ -88,11 +88,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1722813957,
-        "narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=",
+        "lastModified": 1723175592,
+        "narHash": "sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa",
+        "rev": "5e0ca22929f3342b19569b21b2f3462f053e497b",
         "type": "github"
       },
       "original": {

From faaf76ef6056b7d4162b1d00b0c19993500f8c43 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 9 Aug 2024 23:02:30 +0200
Subject: [PATCH 337/656] nix: remove broken attic for now

---
 common/nix.nix | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/common/nix.nix b/common/nix.nix
index 825636b..c03e5e2 100644
--- a/common/nix.nix
+++ b/common/nix.nix
@@ -20,14 +20,10 @@
         # Workaround for https://github.com/NixOS/nix/issues/9574
         nix-path = config.nix.nixPath;
         substituters = [
-          "https://nix-attic.aarn.shelman.io/shared"
           "https://cache-nixos-org.aarn.shelman.io"
           "https://cache.nixos.org/"
         ];
-        trusted-public-keys = [
-          "shared:vbOVOQpXO/hLiTJ/7FmtSio75ZE25+mNGOC+a4TcV84="
-          "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
-        ];
+        trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
       };
       channel.enable = false;
       registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;

From 9d1bdf84e5dd1ab21b69016e38fb5c63bffff395 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 9 Aug 2024 21:05:58 +0200
Subject: [PATCH 338/656] nix: dinky: add remote build config

---
 hosts/dinky/default.nix | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index b90f774..d2ff2c7 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -109,5 +109,22 @@
   systemd.services."getty@tty1".enable = false;
   systemd.services."autovt@tty1".enable = false;
 
+  nix.buildMachines = [
+    {
+      hostName = "nemo.aarn.shelman.io";
+      sshUser = "nixremote";
+      system = "x86_64-linux";
+      protocol = "ssh-ng";
+      maxJobs = 32;
+      speedFactor = 2;
+      supportedFeatures = [ ];
+      mandatoryFeatures = [ ];
+    }
+  ];
+  nix.distributedBuilds = true;
+  nix.extraOptions = ''
+    builders-use-substitutes = true
+  '';
+
   system.stateVersion = "24.05"; # Did you read the comment?
 }

From 389907c2d42ac94119ec244deac8ff73f018660f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 10 Aug 2024 16:11:50 +0200
Subject: [PATCH 339/656] fish: add `jl` function to show jj log w/fzf preview

---
 home/common/fish.nix | 4 ++++
 home/dln/home.nix    | 3 ---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 769726c..0d93d1b 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -34,6 +34,10 @@
         '';
       };
 
+      jl.body = ''
+        jj log --color=always --no-graph -T builtin_log_oneline -r 'all()' | fzf --ansi --reverse --wrap --preview 'jj show --tool=difftu {1}' --preview-window=down,70% --color=light
+      '';
+
       __zoxide_zi_repaint.body = ''
         __zoxide_zi
         commandline -f repaint
diff --git a/home/dln/home.nix b/home/dln/home.nix
index 0cbb129..c04594f 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -129,9 +129,6 @@ in
         "commit_id prefix" = {
           bold = true;
         };
-        "diff token" = {
-          underline = false;
-        };
       };
     };
   };

From 1fae8d3e9cf063694bd426eae9337f8744796d3d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 10 Aug 2024 23:06:08 +0200
Subject: [PATCH 340/656] Add ghostty

---
 flake.lock              | 266 ++++++++++++++++++++++++++++++++++++++++
 flake.nix               |  16 ++-
 home/common/default.nix |   1 +
 home/common/ghostty.nix |  75 +++++++++++
 home/dln/desktop.nix    |   3 +-
 5 files changed, 359 insertions(+), 2 deletions(-)
 create mode 100644 home/common/ghostty.nix

diff --git a/flake.lock b/flake.lock
index c14c9dd..bd26dc4 100644
--- a/flake.lock
+++ b/flake.lock
@@ -35,6 +35,22 @@
         "type": "github"
       }
     },
+    "flake-compat_2": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696426674,
+        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
     "flake-utils": {
       "locked": {
         "lastModified": 1659877975,
@@ -50,6 +66,122 @@
         "type": "github"
       }
     },
+    "flake-utils_2": {
+      "inputs": {
+        "systems": "systems"
+      },
+      "locked": {
+        "lastModified": 1705309234,
+        "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_3": {
+      "inputs": {
+        "systems": "systems_2"
+      },
+      "locked": {
+        "lastModified": 1710146030,
+        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "flake-utils_4": {
+      "inputs": {
+        "systems": "systems_3"
+      },
+      "locked": {
+        "lastModified": 1705309234,
+        "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "ghostty": {
+      "inputs": {
+        "nixpkgs-stable": [
+          "nixpkgs"
+        ],
+        "nixpkgs-unstable": [
+          "nixpkgs"
+        ],
+        "zig": "zig",
+        "zls": "zls"
+      },
+      "locked": {
+        "lastModified": 1723350205,
+        "narHash": "sha256-+Nks9F8VuC9w8X2YaHU1+420Ky2DHP8n6aTg78l3dRE=",
+        "ref": "refs/heads/main",
+        "rev": "1cbeb264c908fecfe54c3fff260be28169852c09",
+        "revCount": 6877,
+        "type": "git",
+        "url": "ssh://git@github.com/ghostty-org/ghostty"
+      },
+      "original": {
+        "type": "git",
+        "url": "ssh://git@github.com/ghostty-org/ghostty"
+      }
+    },
+    "ghostty-hm": {
+      "locked": {
+        "lastModified": 1702368251,
+        "narHash": "sha256-hafrDmzGplzm+vdIo+LkOjRfA4qRcy5JmpGGksnht5c=",
+        "owner": "clo4",
+        "repo": "ghostty-hm-module",
+        "rev": "887e13a6e7acf5ffaab0119d96e476d84db90904",
+        "type": "github"
+      },
+      "original": {
+        "owner": "clo4",
+        "repo": "ghostty-hm-module",
+        "type": "github"
+      }
+    },
+    "gitignore": {
+      "inputs": {
+        "nixpkgs": [
+          "ghostty",
+          "zls",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1709087332,
+        "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "type": "github"
+      }
+    },
     "home-manager": {
       "inputs": {
         "nixpkgs": [
@@ -70,6 +202,18 @@
         "type": "github"
       }
     },
+    "langref": {
+      "flake": false,
+      "locked": {
+        "narHash": "sha256-O6p2tiKD8ZMhSX+DeA/o5hhAvcPkU2J9lFys/r11peY=",
+        "type": "file",
+        "url": "https://raw.githubusercontent.com/ziglang/zig/0fb2015fd3422fc1df364995f9782dfe7255eccd/doc/langref.html.in"
+      },
+      "original": {
+        "type": "file",
+        "url": "https://raw.githubusercontent.com/ziglang/zig/0fb2015fd3422fc1df364995f9782dfe7255eccd/doc/langref.html.in"
+      }
+    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1696019113,
@@ -105,6 +249,8 @@
     "root": {
       "inputs": {
         "colmena": "colmena",
+        "ghostty": "ghostty",
+        "ghostty-hm": "ghostty-hm",
         "home-manager": "home-manager",
         "nixpkgs": "nixpkgs_2"
       }
@@ -124,6 +270,126 @@
         "repo": "nixpkgs",
         "type": "github"
       }
+    },
+    "systems": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_2": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "systems_3": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
+    "zig": {
+      "inputs": {
+        "flake-compat": [
+          "ghostty"
+        ],
+        "flake-utils": "flake-utils_2",
+        "nixpkgs": [
+          "ghostty",
+          "nixpkgs-stable"
+        ]
+      },
+      "locked": {
+        "lastModified": 1723291738,
+        "narHash": "sha256-C3DobEyzw47Rvs9tRpe8XGrqGl4hLABu1wocjxczJ/U=",
+        "owner": "mitchellh",
+        "repo": "zig-overlay",
+        "rev": "d132903f2088ee03cf3561368a81cd3bd850f5ff",
+        "type": "github"
+      },
+      "original": {
+        "owner": "mitchellh",
+        "repo": "zig-overlay",
+        "type": "github"
+      }
+    },
+    "zig-overlay": {
+      "inputs": {
+        "flake-compat": "flake-compat_2",
+        "flake-utils": "flake-utils_4",
+        "nixpkgs": [
+          "ghostty",
+          "zls",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1722600600,
+        "narHash": "sha256-bRpvmyAvt4OFbQJlmAURyW1To8nlRjNcQJdbOyI1MLE=",
+        "owner": "mitchellh",
+        "repo": "zig-overlay",
+        "rev": "4c95bb8378ca31cc06eba0a9ee0c04851221c193",
+        "type": "github"
+      },
+      "original": {
+        "owner": "mitchellh",
+        "repo": "zig-overlay",
+        "type": "github"
+      }
+    },
+    "zls": {
+      "inputs": {
+        "flake-utils": "flake-utils_3",
+        "gitignore": "gitignore",
+        "langref": "langref",
+        "nixpkgs": [
+          "ghostty",
+          "nixpkgs-stable"
+        ],
+        "zig-overlay": "zig-overlay"
+      },
+      "locked": {
+        "lastModified": 1722987529,
+        "narHash": "sha256-r7tnq70psZQXfLlDj+XzidBj352vfQFrICC7hfKHw7M=",
+        "owner": "zigtools",
+        "repo": "zls",
+        "rev": "d8084a342f40b444addf772fdef36a589299ebe6",
+        "type": "github"
+      },
+      "original": {
+        "owner": "zigtools",
+        "ref": "master",
+        "repo": "zls",
+        "type": "github"
+      }
     }
   },
   "root": "root",
diff --git a/flake.nix b/flake.nix
index 75a57a5..b918541 100644
--- a/flake.nix
+++ b/flake.nix
@@ -6,6 +6,15 @@
 
     home-manager.url = "github:nix-community/home-manager";
     home-manager.inputs.nixpkgs.follows = "nixpkgs";
+
+    ghostty = {
+      url = "git+ssh://git@github.com/ghostty-org/ghostty";
+      inputs = {
+        nixpkgs-stable.follows = "nixpkgs";
+        nixpkgs-unstable.follows = "nixpkgs";
+      };
+    };
+    ghostty-hm.url = "github:clo4/ghostty-hm-module";
   };
 
   outputs =
@@ -13,6 +22,8 @@
       self,
       nixpkgs,
       colmena,
+      ghostty,
+      ghostty-hm,
       home-manager,
       ...
     }@inputs:
@@ -22,7 +33,10 @@
       mkHome =
         modules:
         home-manager.lib.homeManagerConfiguration {
-          modules = [ ./home/common ] ++ modules;
+          modules = [
+            ghostty-hm.homeModules.default
+            ./home/common
+          ] ++ modules;
           pkgs = nixpkgs.legacyPackages.x86_64-linux;
           extraSpecialArgs = {
             inherit inputs outputs;
diff --git a/home/common/default.nix b/home/common/default.nix
index d36eaaa..3cd08e0 100644
--- a/home/common/default.nix
+++ b/home/common/default.nix
@@ -5,6 +5,7 @@
     ./broot.nix
     ./devel.nix
     ./fish.nix
+    ./ghostty.nix
     ./gnome.nix
     ./k8s.nix
     ./nix.nix
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
new file mode 100644
index 0000000..3831e0b
--- /dev/null
+++ b/home/common/ghostty.nix
@@ -0,0 +1,75 @@
+{
+  config,
+  inputs,
+  lib,
+  pkgs,
+  ...
+}:
+{
+  config = lib.mkIf config.shelman.desktop.enable {
+
+    home.packages = with pkgs; [ inputs.ghostty.packages.${pkgs.system}.default ];
+
+    programs.ghostty = {
+      enable = true;
+      settings = {
+        font-size = 14;
+        font-family = "BerkeleyMono Nerd Font";
+        font-feature = [
+          # "ss02", -- Clean zero
+          "ss03" # Slashed zero
+          # "ss04", -- Cut zero
+        ];
+
+        mouse-hide-while-typing = true;
+        cursor-style = "block";
+        adjust-cursor-thickness = 5;
+
+        shell-integration = "fish";
+
+        window-decoration = true;
+        gtk-tabs-location = "bottom";
+        window-padding-x = 4;
+        window-padding-y = 4;
+        window-padding-balance = true;
+        window-padding-color = "extend";
+
+        window-theme = "system";
+
+        unfocused-split-opacity = 1.0;
+
+        background = "#fefeff";
+        foreground = "#222222";
+        cursor-color = "#aa0000";
+        selection-background = "#ffe6a4";
+        selection-foreground = "#483600";
+        palette = [
+          "0=#000000"
+          "1=#9e001d"
+          "2=#306300"
+          "3=#deae00"
+          "4=#00669e"
+          "5=#7d009e"
+          "6=#008a9e"
+          "7=#f7f7f7"
+          "8=#000000"
+          "9=#ff0035"
+          "10=#509e00"
+          "11=#ffc900"
+          "12=#00a7ff"
+          "13=#cb01ff"
+          "14=#00e0ff"
+          "15=#ffffff"
+        ];
+
+        keybind = [
+          "alt+shift+c=copy_from_clipboard"
+          "alt+shift+v=paste_from_clipboard"
+          "ctrl+tab=goto_split:previous"
+          "ctrl+enter=toggle_split_zoom"
+          "alt+enter=toggle_fullscreen"
+        ];
+      };
+    };
+  };
+}
diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index 7b80912..8525e8f 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ inputs, pkgs, ... }:
 {
   shelman = {
     desktop.enable = true;
@@ -11,6 +11,7 @@
     gimp-with-plugins
     helvum
     inkscape
+    inputs.ghostty.packages.${pkgs.system}.default
     moonlight-qt
     obsidian
     pavucontrol

From 088a839a36bcb74802d626138aadfefc6d049e66 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 11 Aug 2024 15:23:55 +0200
Subject: [PATCH 341/656] vcs: add git-get

See: https://github.com/grdl/git-get
---
 home/common/vcs.nix | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index ba1b2f6..f430fe2 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -6,6 +6,7 @@
     diffedit3
     difftastic
     git-branchless
+    git-get
     git-graph
     git-town
     lazyjj
@@ -78,6 +79,9 @@
         prunetags = true;
         showForcedUpdates = true;
       };
+      gitget = {
+        root = "${config.home.homeDirectory}/src/oss";
+      };
       gpg = {
         format = "ssh";
         ssh = {

From 2bbe462c9df9b512e0966fe670155c9655302803 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 11 Aug 2024 17:21:12 +0200
Subject: [PATCH 342/656] ghostty: add dark theme, wrapper to auto-set theme
 based on system. add desktop launchers

---
 home/common/ghostty.nix | 132 +++++++++++++++++++++++++++++++---------
 1 file changed, 103 insertions(+), 29 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 3831e0b..3914439 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -5,10 +5,26 @@
   pkgs,
   ...
 }:
+let
+  launch-ghostty = pkgs.writeShellApplication {
+    name = "launch-ghostty";
+    text = ''
+      if [ "$(gsettings get org.gnome.desktop.interface color-scheme)" = "'prefer-dark'" ]; then
+        theme="theme_dark"
+      else
+        theme="theme_light"
+      fi
+      exec ghostty --config-file="$HOME/.config/ghostty/$theme" "$@"
+    '';
+  };
+in
 {
   config = lib.mkIf config.shelman.desktop.enable {
 
-    home.packages = with pkgs; [ inputs.ghostty.packages.${pkgs.system}.default ];
+    home.packages = with pkgs; [
+      inputs.ghostty.packages.${pkgs.system}.default
+      launch-ghostty
+    ];
 
     programs.ghostty = {
       enable = true;
@@ -24,6 +40,7 @@
         mouse-hide-while-typing = true;
         cursor-style = "block";
         adjust-cursor-thickness = 5;
+        unfocused-split-opacity = 1.0;
 
         shell-integration = "fish";
 
@@ -33,43 +50,100 @@
         window-padding-y = 4;
         window-padding-balance = true;
         window-padding-color = "extend";
-
         window-theme = "system";
 
-        unfocused-split-opacity = 1.0;
-
-        background = "#fefeff";
-        foreground = "#222222";
-        cursor-color = "#aa0000";
-        selection-background = "#ffe6a4";
-        selection-foreground = "#483600";
-        palette = [
-          "0=#000000"
-          "1=#9e001d"
-          "2=#306300"
-          "3=#deae00"
-          "4=#00669e"
-          "5=#7d009e"
-          "6=#008a9e"
-          "7=#f7f7f7"
-          "8=#000000"
-          "9=#ff0035"
-          "10=#509e00"
-          "11=#ffc900"
-          "12=#00a7ff"
-          "13=#cb01ff"
-          "14=#00e0ff"
-          "15=#ffffff"
-        ];
-
         keybind = [
           "alt+shift+c=copy_from_clipboard"
           "alt+shift+v=paste_from_clipboard"
           "ctrl+tab=goto_split:previous"
-          "ctrl+enter=toggle_split_zoom"
           "alt+enter=toggle_fullscreen"
         ];
       };
     };
+
+    xdg.configFile."ghostty/theme_dark".text = ''
+      background = #0d1117
+      foreground = #b2b2b2
+      cursor-color = #00d992
+      selection-background = #d7d7d7
+      selection-foreground = #000000
+      palette = 0=#000000
+      palette = 1=#ff0035
+      palette = 2=#85ff00
+      palette = 3=#ffc900
+      palette = 4=#00a7ff
+      palette = 5=#cb01ff
+      palette = 6=#00e0ff
+      palette = 7=#f0f0f0
+      palette = 8=#000000
+      palette = 9=#ff8c88
+      palette = 10=#baff94
+      palette = 11=#ffe090
+      palette = 12=#88ccff
+      palette = 13=#e38dff
+      palette = 14=#97eeff
+      palette = 15=#ffffff
+    '';
+
+    xdg.configFile."ghostty/theme_light".text = ''
+      background = #fefeff
+      foreground = #222222
+      cursor-color = #aa0000
+      selection-background = #ffe6a4
+      selection-foreground = #483600
+      palette = 0=#000000
+      palette = 1=#9e001d
+      palette = 2=#306300
+      palette = 3=#deae00
+      palette = 4=#00669e
+      palette = 5=#7d009e
+      palette = 6=#008a9e
+      palette = 7=#f7f7f7
+      palette = 8=#000000
+      palette = 9=#ff0035
+      palette = 10=#509e00
+      palette = 11=#ffc900
+      palette = 12=#00a7ff
+      palette = 13=#cb01ff
+      palette = 14=#00e0ff
+      palette = 15=#ffffff
+    '';
+
+    xdg.desktopEntries = {
+      ghostty-local = {
+        categories = [
+          "System"
+          "TerminalEmulator"
+        ];
+        exec = ''launch-ghostty --class=com.mitchellh.ghostty-local'';
+        genericName = "Ghostty (local)";
+        icon = "com.mitchellh.ghostty";
+        name = "Ghostty (local)";
+        settings = {
+          StartupWMClass = "com.mitchellh.ghostty-local";
+          TryExec = "launch-ghostty";
+        };
+        terminal = false;
+        type = "Application";
+      };
+
+      ghostty-nemo = {
+        categories = [
+          "System"
+          "TerminalEmulator"
+        ];
+        exec = ''launch-ghostty --class=com.mitchellh.ghostty-nemo -e "ssh nemo"'';
+        genericName = "Ghostty (nemo)";
+        icon = "com.mitchellh.ghostty";
+        name = "Ghostty (nemo)";
+        settings = {
+          StartupWMClass = "com.mitchellh.ghostty-nemo";
+          TryExec = "launch-ghostty";
+        };
+        terminal = false;
+        type = "Application";
+      };
+    };
+
   };
 }

From 0f02c4b37639201402fae4631472945688aa2d98 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 11 Aug 2024 21:38:42 +0200
Subject: [PATCH 343/656] ghostty: padding tweaks. fish binding for C-m

---
 files/config/fish/config.fish | 1 +
 home/common/ghostty.nix       | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/files/config/fish/config.fish b/files/config/fish/config.fish
index dc30f48..f7334c3 100644
--- a/files/config/fish/config.fish
+++ b/files/config/fish/config.fish
@@ -3,6 +3,7 @@ bind \cg __zoxide_zi_repaint
 bind \cJ forward-char
 bind \cn history-prefix-search-forward
 bind \cp history-prefix-search-backward
+bind \e\[109\;5u execute # C-m in ghostty
 
 # Settings
 set fish_greeting
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 3914439..2d3efcf 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -46,8 +46,8 @@ in
 
         window-decoration = true;
         gtk-tabs-location = "bottom";
-        window-padding-x = 4;
-        window-padding-y = 4;
+        window-padding-x = 12;
+        window-padding-y = 0;
         window-padding-balance = true;
         window-padding-color = "extend";
         window-theme = "system";

From 54b623d4fefde1c4f01b2d0ae26e0d3908a79c0e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 11 Aug 2024 23:13:02 +0200
Subject: [PATCH 344/656] wip: tmux setup for ghostty

---
 home/common/default.nix |  1 +
 home/common/ghostty.nix |  9 +++++++++
 home/common/tmux.nix    | 43 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 53 insertions(+)
 create mode 100644 home/common/tmux.nix

diff --git a/home/common/default.nix b/home/common/default.nix
index 3cd08e0..a362e5b 100644
--- a/home/common/default.nix
+++ b/home/common/default.nix
@@ -12,6 +12,7 @@
     ./nvim.nix
     ./scripts.nix
     ./ssh.nix
+    ./tmux.nix
     ./utils.nix
     ./vcs.nix
     ./web.nix
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 2d3efcf..c146c55 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -57,6 +57,15 @@ in
           "alt+shift+v=paste_from_clipboard"
           "ctrl+tab=goto_split:previous"
           "alt+enter=toggle_fullscreen"
+          "alt+one=unbind"
+          "alt+two=unbind"
+          "alt+three=unbind"
+          "alt+four=unbind"
+          "alt+five=unbind"
+          "alt+six=unbind"
+          "alt+seven=unbind"
+          "alt+eight=unbind"
+          "alt+nine=unbind"
         ];
       };
     };
diff --git a/home/common/tmux.nix b/home/common/tmux.nix
new file mode 100644
index 0000000..cb7a234
--- /dev/null
+++ b/home/common/tmux.nix
@@ -0,0 +1,43 @@
+{ ... }:
+{
+  programs.tmux = {
+    enable = true;
+    baseIndex = 1;
+    clock24 = true;
+    escapeTime = 10;
+    mouse = true;
+    shortcut = "o";
+    extraConfig = ''
+      set -g allow-passthrough on
+      set -g display-panes-time 3000
+      set -g history-limit 10000
+      set -g status off
+      setw -g alternate-screen on
+      setw -g automatic-rename off
+      bind -n M-1 select-window -t 42
+      bind -n M-2 select-window -t 2
+      bind -n M-3 select-window -t 3
+      bind -n M-4 select-window -t 4
+      bind -n M-5 select-window -t 5
+      bind -n M-6 select-window -t 6
+      bind -n M-7 select-window -t 7
+      bind -n M-8 select-window -t 8
+      bind -n M-9 select-window -t 9
+      bind -n M-0 select-window -t 10
+      bind -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 1 scroll-up
+      bind -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-down
+      bind C-s set-option -g status
+      bind K confirm kill-server
+      new -s0 -n 1
+      new-window -n 2
+      new-window -n 3
+      new-window -n 4
+      new-window -n 5
+      new-window -n 6
+      new-window -n 7
+      new-window -n 8
+      new-window -n 9
+      new-window -n 0
+    '';
+  };
+}

From 1a193f3699464917f63bd317e77e01a30845bcaf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 12 Aug 2024 08:47:40 +0200
Subject: [PATCH 345/656] nemo: host specific config

---
 home/common/ghostty.nix |  2 +-
 home/dln/nemo.nix       | 12 +++++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index c146c55..ce3723f 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -44,7 +44,7 @@ in
 
         shell-integration = "fish";
 
-        window-decoration = true;
+        window-decoration = false;
         gtk-tabs-location = "bottom";
         window-padding-x = 12;
         window-padding-y = 0;
diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index 49687bb..bc690f0 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -1,4 +1,4 @@
-{ ... }:
+{ lib, ... }:
 {
   imports = [
     ./home.nix
@@ -6,4 +6,14 @@
   ];
 
   # Host specific user config goes here
+  #
+  programs.ghostty.settings = {
+    font-size = lib.mkForce 18;
+  };
+
+  dconf.settings = {
+    "org/gnome/shell" = {
+      enabled-extensions = [ "azclock@azclock.gitlab.com" ];
+    };
+  };
 }

From debc52a17953eee944e1f58ec49367ad50ffccf7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 12 Aug 2024 13:11:20 +0200
Subject: [PATCH 346/656] tmux: persistent terminals + nvim edit helper M-1

---
 flake.nix               |  1 -
 home/common/fish.nix    | 10 +++++----
 home/common/ghostty.nix |  4 ++--
 home/common/tmux.nix    | 46 ++++++++++++++++++++++-------------------
 4 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/flake.nix b/flake.nix
index b918541..adc2cd2 100644
--- a/flake.nix
+++ b/flake.nix
@@ -96,6 +96,5 @@
         dinky = mkHost [ ./hosts/dinky ];
         nemo = mkHost [ ./hosts/nemo ];
       };
-
     };
 }
diff --git a/home/common/fish.nix b/home/common/fish.nix
index 0d93d1b..4798ae2 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -27,10 +27,12 @@
               set _file (fd --type f . "$_root" | sed -e "s#^$_root/##" | fzf --no-sort --layout=reverse)
               set _file "$_root/$_file"
           end
-          nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote "$_file" &>/dev/null
-          or return 1
-          # Wezterm: switch tab to nvim
-          printf "\033]1337;SetUserVar=nvim_activate=\007"
+          set _nvim_socket "$XDG_RUNTIME_DIR/nvim-persistent.sock"
+          if test -S "$_nvim_socket" && tmux select-window -t nvim 2>/dev/null
+            nvim --server "$_nvim_socket" --remote "$_file"
+            return 0
+          end
+          tmux new-window -S -n nvim nvim --listen "$_nvim_socket" "$_file"
         '';
       };
 
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index ce3723f..4372aa0 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -124,7 +124,7 @@ in
           "System"
           "TerminalEmulator"
         ];
-        exec = ''launch-ghostty --class=com.mitchellh.ghostty-local'';
+        exec = ''launch-ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s0 -nt1"'';
         genericName = "Ghostty (local)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (local)";
@@ -141,7 +141,7 @@ in
           "System"
           "TerminalEmulator"
         ];
-        exec = ''launch-ghostty --class=com.mitchellh.ghostty-nemo -e "ssh nemo"'';
+        exec = ''launch-ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s0 -nt1"'';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (nemo)";
diff --git a/home/common/tmux.nix b/home/common/tmux.nix
index cb7a234..2683981 100644
--- a/home/common/tmux.nix
+++ b/home/common/tmux.nix
@@ -2,42 +2,46 @@
 {
   programs.tmux = {
     enable = true;
-    baseIndex = 1;
+    baseIndex = 0;
     clock24 = true;
     escapeTime = 10;
     mouse = true;
     shortcut = "o";
     extraConfig = ''
       set -g allow-passthrough on
+      set -g default-terminal "tmux-256color"
       set -g display-panes-time 3000
       set -g history-limit 10000
       set -g status off
+      set -g status-style "italics,reverse"
+      set -g status-left-length 0
+      set -g status-right-length 0
+      set -g status-left '#W #{pane_current_path}'
+      set -g status-right '%F |  %R'
+      set -g status off
+      set -g set-titles on
+      set -g set-titles-string "#H - #T"
+      set -g update-environment "SSH_AUTH_SOCK"
+      setenv -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/ssh-agent"
       setw -g alternate-screen on
       setw -g automatic-rename off
-      bind -n M-1 select-window -t 42
-      bind -n M-2 select-window -t 2
-      bind -n M-3 select-window -t 3
-      bind -n M-4 select-window -t 4
-      bind -n M-5 select-window -t 5
-      bind -n M-6 select-window -t 6
-      bind -n M-7 select-window -t 7
-      bind -n M-8 select-window -t 8
-      bind -n M-9 select-window -t 9
-      bind -n M-0 select-window -t 10
+      setw -g window-status-format ""
+      setw -g window-status-current-format ""
+      setw -g window-status-separator ""
+      bind -n M-1 if-shell 'tmux select-window -t nvim' refresh-client 'new-window -S -n nvim nvim --listen $XDG_RUNTIME_DIR/nvim-persistent.sock'
+      bind -n M-2 if-shell 'tmux select-window -t t1' refresh-client 'new-window -S -n t1'
+      bind -n M-3 if-shell 'tmux select-window -t t2' refresh-client 'new-window -S -n t2'
+      bind -n M-4 if-shell 'tmux select-window -t t3' refresh-client 'new-window -S -n t3'
+      bind -n M-5 if-shell 'tmux select-window -t t4' refresh-client 'new-window -S -n t4'
+      bind -n M-6 if-shell 'tmux select-window -t t5' refresh-client 'new-window -S -n t5'
+      bind -n M-7 if-shell 'tmux select-window -t t6' refresh-client 'new-window -S -n t6'
+      bind -n M-8 if-shell 'tmux select-window -t t7' refresh-client 'new-window -S -n t7'
+      bind -n M-9 if-shell 'tmux select-window -t t8' refresh-client 'new-window -S -n t8'
+      bind -n M-0 if-shell 'tmux select-window -t t9' refresh-client 'new-window -S -n t9'
       bind -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 1 scroll-up
       bind -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-down
       bind C-s set-option -g status
       bind K confirm kill-server
-      new -s0 -n 1
-      new-window -n 2
-      new-window -n 3
-      new-window -n 4
-      new-window -n 5
-      new-window -n 6
-      new-window -n 7
-      new-window -n 8
-      new-window -n 9
-      new-window -n 0
     '';
   };
 }

From 873dcca9bc79859dd357333e50e921b48e2f6aeb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 12 Aug 2024 21:01:03 +0200
Subject: [PATCH 347/656] update

---
 flake.lock | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/flake.lock b/flake.lock
index bd26dc4..24c2b4f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1723350205,
-        "narHash": "sha256-+Nks9F8VuC9w8X2YaHU1+420Ky2DHP8n6aTg78l3dRE=",
+        "lastModified": 1723481173,
+        "narHash": "sha256-4gQy/B8PEdoU8BgrADdBlqZEZ8pY+UW2qOoVRtkvO3g=",
         "ref": "refs/heads/main",
-        "rev": "1cbeb264c908fecfe54c3fff260be28169852c09",
-        "revCount": 6877,
+        "rev": "3e0a5d3a73a433cd5840165abd0a51c433505045",
+        "revCount": 6898,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -189,11 +189,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1723015306,
-        "narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=",
+        "lastModified": 1723399884,
+        "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e",
+        "rev": "086f619dd991a4d355c07837448244029fc2d9ab",
         "type": "github"
       },
       "original": {
@@ -328,11 +328,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1723291738,
-        "narHash": "sha256-C3DobEyzw47Rvs9tRpe8XGrqGl4hLABu1wocjxczJ/U=",
+        "lastModified": 1717848532,
+        "narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=",
         "owner": "mitchellh",
         "repo": "zig-overlay",
-        "rev": "d132903f2088ee03cf3561368a81cd3bd850f5ff",
+        "rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43",
         "type": "github"
       },
       "original": {
@@ -352,11 +352,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1722600600,
-        "narHash": "sha256-bRpvmyAvt4OFbQJlmAURyW1To8nlRjNcQJdbOyI1MLE=",
+        "lastModified": 1718539737,
+        "narHash": "sha256-hvQ900gSqzGnJWMRQwv65TixciIbC44iX0Nh5ENRwCU=",
         "owner": "mitchellh",
         "repo": "zig-overlay",
-        "rev": "4c95bb8378ca31cc06eba0a9ee0c04851221c193",
+        "rev": "6eb42ce6f85d247b1aecf854c45d80902821d0ad",
         "type": "github"
       },
       "original": {
@@ -377,11 +377,11 @@
         "zig-overlay": "zig-overlay"
       },
       "locked": {
-        "lastModified": 1722987529,
-        "narHash": "sha256-r7tnq70psZQXfLlDj+XzidBj352vfQFrICC7hfKHw7M=",
+        "lastModified": 1718930611,
+        "narHash": "sha256-FtfVhs6XHNfSQRQorrrz03nD0LCNp2FCnGllRntHBts=",
         "owner": "zigtools",
         "repo": "zls",
-        "rev": "d8084a342f40b444addf772fdef36a589299ebe6",
+        "rev": "0b9746b60c2020ab948f6556f1c729858b82a0f0",
         "type": "github"
       },
       "original": {

From 65761d7b3f1020554ac871961cc824bfda1426b6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 13 Aug 2024 20:21:59 +0200
Subject: [PATCH 348/656] ghostty / nvim: font + keybinding tweaks

---
 files/config/nvim/lua/config/keymaps.lua | 21 +++++++++++++--------
 home/common/ghostty.nix                  | 13 ++++++-------
 home/common/tmux.nix                     |  2 +-
 3 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/files/config/nvim/lua/config/keymaps.lua b/files/config/nvim/lua/config/keymaps.lua
index 84bc508..2fb2a64 100644
--- a/files/config/nvim/lua/config/keymaps.lua
+++ b/files/config/nvim/lua/config/keymaps.lua
@@ -3,12 +3,17 @@
 -- Add any additional keymaps here
 
 -- C-/ should be comment instead of lazyterm
-vim.api.nvim_del_keymap("n", "<c-/>")
-vim.api.nvim_set_keymap("n", "<c-/>", "gcc", {})
-vim.api.nvim_set_keymap("v", "<c-/>", "gc", {})
-vim.api.nvim_set_keymap("n", "<Leader><c-/>", "gcgc", {})
-vim.api.nvim_set_keymap("n", "<Tab>", "<Space>,", {})
-vim.api.nvim_set_keymap("n", "zz", "zt", {})
+vim.keymap.del("n", "<c-/>")
+vim.keymap.set({ "n" }, "<c-/>", "gcc", { remap = true })
+vim.keymap.set({ "v" }, "<c-/>", "gc", { remap = true })
+vim.keymap.set({ "n" }, "<Leader><c-/>", "gcgc", { remap = true })
+vim.keymap.del({ "n" }, "<c-_>")
+vim.keymap.set({ "n" }, "<c-_>", "gcc", { remap = true })
+vim.keymap.set({ "v" }, "<c-_>", "gc", { remap = true })
+vim.keymap.set({ "n" }, "<Leader><c-_>", "gcgc", { remap = true })
 
-vim.api.nvim_set_keymap("n", "[d", ":lua vim.diagnostic.goto_prev { float = false }<Enter>", {})
-vim.api.nvim_set_keymap("n", "]d", ":lua vim.diagnostic.goto_next { float = false }<Enter>", {})
+vim.keymap.set("n", "<Tab>", "<Space>,", {})
+vim.keymap.set("n", "zz", "zt", {})
+
+vim.keymap.set("n", "[d", ":lua vim.diagnostic.goto_prev { float = false }<Enter>", {})
+vim.keymap.set("n", "]d", ":lua vim.diagnostic.goto_next { float = false }<Enter>", {})
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 4372aa0..0d788f2 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -30,12 +30,11 @@ in
       enable = true;
       settings = {
         font-size = 14;
-        font-family = "BerkeleyMono Nerd Font";
-        font-feature = [
-          # "ss02", -- Clean zero
-          "ss03" # Slashed zero
-          # "ss04", -- Cut zero
-        ];
+        font-family = "Berkeley Mono Variable";
+        font-codepoint-map = [ "U+2191-U+2195,U+2500-U+259F=BerkeleyMono Nerd Font" ];
+        font-family-bold-italic = "Monaspace Xenon";
+        font-style-bold-italic = "ExtraLight Italic";
+        font-variation-italic = [ "wght=100" ];
 
         mouse-hide-while-typing = true;
         cursor-style = "block";
@@ -53,7 +52,7 @@ in
         window-theme = "system";
 
         keybind = [
-          "alt+shift+c=copy_from_clipboard"
+          "alt+shift+c=copy_to_clipboard"
           "alt+shift+v=paste_from_clipboard"
           "ctrl+tab=goto_split:previous"
           "alt+enter=toggle_fullscreen"
diff --git a/home/common/tmux.nix b/home/common/tmux.nix
index 2683981..e9552af 100644
--- a/home/common/tmux.nix
+++ b/home/common/tmux.nix
@@ -4,7 +4,7 @@
     enable = true;
     baseIndex = 0;
     clock24 = true;
-    escapeTime = 10;
+    escapeTime = 500;
     mouse = true;
     shortcut = "o";
     extraConfig = ''

From 5940efb85824b1b76b2cc2f9e8c39ee92cddeb76 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 14 Aug 2024 11:48:40 +0200
Subject: [PATCH 349/656] nemo: fix netmask

---
 hosts/nemo/default.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 66a7bc3..a4ea2d9 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -112,7 +112,7 @@
   systemd.network.enable = true;
   systemd.network.networks."10-wifi" = {
     matchConfig.Name = "wlan0";
-    address = [ "10.1.100.20/24" ];
+    address = [ "10.1.100.20/22" ];
     gateway = [ "10.1.100.1" ];
     linkConfig.RequiredForOnline = "routable";
   };

From f56f6646428df57860dbd35f6c35f8e96c400cf3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 14 Aug 2024 11:48:40 +0200
Subject: [PATCH 350/656] ghostty: fixing the fixings

---
 home/common/ghostty.nix | 3 +--
 home/dln/nemo.nix       | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 0d788f2..d910c46 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -31,7 +31,7 @@ in
       settings = {
         font-size = 14;
         font-family = "Berkeley Mono Variable";
-        font-codepoint-map = [ "U+2191-U+2195,U+2500-U+259F=BerkeleyMono Nerd Font" ];
+        font-codepoint-map = [ "U+2191-U+2195,U+2500-U+259F=Berkeley Mono Variable" ];
         font-family-bold-italic = "Monaspace Xenon";
         font-style-bold-italic = "ExtraLight Italic";
         font-variation-italic = [ "wght=100" ];
@@ -55,7 +55,6 @@ in
           "alt+shift+c=copy_to_clipboard"
           "alt+shift+v=paste_from_clipboard"
           "ctrl+tab=goto_split:previous"
-          "alt+enter=toggle_fullscreen"
           "alt+one=unbind"
           "alt+two=unbind"
           "alt+three=unbind"
diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index bc690f0..e7322c9 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -8,7 +8,7 @@
   # Host specific user config goes here
   #
   programs.ghostty.settings = {
-    font-size = lib.mkForce 18;
+    font-size = lib.mkForce 20;
   };
 
   dconf.settings = {

From 28ec5c72305c94aa4e0ade900b8d1ba048bb894c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 14 Aug 2024 21:14:06 +0200
Subject: [PATCH 351/656] nemo: wifi + firmware config

---
 hosts/nemo/default.nix | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index a4ea2d9..63688f4 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -72,6 +72,8 @@
     ];
   };
 
+  hardware.enableAllFirmware = true;
+
   swapDevices = [ ];
 
   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
@@ -111,7 +113,7 @@
 
   systemd.network.enable = true;
   systemd.network.networks."10-wifi" = {
-    matchConfig.Name = "wlan0";
+    matchConfig.Name = "wlan1";
     address = [ "10.1.100.20/22" ];
     gateway = [ "10.1.100.1" ];
     linkConfig.RequiredForOnline = "routable";

From fa412f767769e8cd9c035a92fef8eca2075f8aa7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 14 Aug 2024 21:32:48 +0200
Subject: [PATCH 352/656] dinky: enable firmware

---
 hosts/dinky/default.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index d2ff2c7..9e068d7 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -58,6 +58,7 @@
     ];
   };
 
+  hardware.enableAllFirmware = true;
   hardware.nitrokey.enable = true;
 
   swapDevices = [ { device = "/dev/disk/by-uuid/c9cc5270-87b0-4ed4-9891-7df924b0f55a"; } ];

From 51ad6503eef0596b1c401800ef115e213ebb6ef4 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 14 Aug 2024 21:32:48 +0200
Subject: [PATCH 353/656] update

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index 24c2b4f..eeecd47 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1723481173,
-        "narHash": "sha256-4gQy/B8PEdoU8BgrADdBlqZEZ8pY+UW2qOoVRtkvO3g=",
+        "lastModified": 1723659157,
+        "narHash": "sha256-IW15cd4jrTK9p2arrbNxnksZLUgsNz9wWzXBhjx42rA=",
         "ref": "refs/heads/main",
-        "rev": "3e0a5d3a73a433cd5840165abd0a51c433505045",
-        "revCount": 6898,
+        "rev": "93c377c6a113b5cfb87370bdaf5cd63b58e2fe85",
+        "revCount": 6900,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -232,11 +232,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1723175592,
-        "narHash": "sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI=",
+        "lastModified": 1723362943,
+        "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "5e0ca22929f3342b19569b21b2f3462f053e497b",
+        "rev": "a58bc8ad779655e790115244571758e8de055e3d",
         "type": "github"
       },
       "original": {

From 16b07b9213793345b3244ae8dff9b4d061e85b80 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 10:23:01 +0200
Subject: [PATCH 354/656] nvim: fix keybindings

---
 files/config/nvim/lua/config/keymaps.lua | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/files/config/nvim/lua/config/keymaps.lua b/files/config/nvim/lua/config/keymaps.lua
index 2fb2a64..5fc7f2d 100644
--- a/files/config/nvim/lua/config/keymaps.lua
+++ b/files/config/nvim/lua/config/keymaps.lua
@@ -12,8 +12,8 @@ vim.keymap.set({ "n" }, "<c-_>", "gcc", { remap = true })
 vim.keymap.set({ "v" }, "<c-_>", "gc", { remap = true })
 vim.keymap.set({ "n" }, "<Leader><c-_>", "gcgc", { remap = true })
 
-vim.keymap.set("n", "<Tab>", "<Space>,", {})
-vim.keymap.set("n", "zz", "zt", {})
+vim.keymap.set("n", "<Tab>", "<Space>,", { remap = true })
+vim.keymap.set("n", "zz", "zt", { remap = true })
 
-vim.keymap.set("n", "[d", ":lua vim.diagnostic.goto_prev { float = false }<Enter>", {})
-vim.keymap.set("n", "]d", ":lua vim.diagnostic.goto_next { float = false }<Enter>", {})
+vim.keymap.set("n", "[d", ":lua vim.diagnostic.goto_prev { float = false }<Enter>", { remap = true })
+vim.keymap.set("n", "]d", ":lua vim.diagnostic.goto_next { float = false }<Enter>", { remap = true })

From 5f530bbbb2f7cfefd092c5d904640213da1565e0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 11:32:39 +0200
Subject: [PATCH 355/656] test-term: add geometric + line drawing tests

---
 files/scripts/test-term.sh | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/files/scripts/test-term.sh b/files/scripts/test-term.sh
index a19fceb..822e174 100755
--- a/files/scripts/test-term.sh
+++ b/files/scripts/test-term.sh
@@ -69,19 +69,23 @@ echo -e '◧ ◨ ◩ ◪ ◫ ◬ ◭ ◮ △ ▲ ▱ ▰ ▽ ▼ ▾ ▿'
 echo -e '◠ ◡ ◢ ◣ ◤ ◥ ◦ ◧ ◨ ◩ ◪ ◫ ◬ ◭ ◮ ◯ ◰ ◱ ◲ ◳ ◴ ◵ ◶ ◷ ◸ ◹ ◺ ◻ ◼ ◽ ◾ ◿'
 
 echo "Arrows:"
+echo -e '▲ ▶ ▼ ◀ △ ▷ ▽ ◁'
 echo -e '← → ↑ ↓ ↔ ↔ ↕ ↖ ↗ ↙ ↘ ↠ ↣ ↦ ↧ ↨ ↩ ↪ ↫ ↬ ↭ ↮ ↯ ↰ ↱ ↲ ↳ ↴ ↵ ↶ ↷ ↸ ↹ ↺ ↻ ↼ ↽ ↾ ↿ ↼ ↽ ↾ ↿'
 echo -e '⇄ ↔ ⇀ ⇂ ⇄ ⇆ ⇌ ⇎ ⇐ ⇑ ⇓ ⇕ ⇖ ⇗ ⇘ ⇙ ⇚ ⇛ ⇜ ⇝ ⇞ ⇟'
 
 echo
 echo "Blocks:"
-echo -e '🮙 ░ ▒ ▓ █ █ ▊ ▋ ▌ ▍ ▎ ▏'
-echo -e '🮙 ░ ▒ ▓ █ █ ▊ ▋ ▌ ▍ ▎ ▏'
-echo -e '🮙 ░ ▒ ▓ █ █ ▊ ▋ ▌ ▍ ▎ ▏'
-echo -e '▄ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █'
+echo -e '▄ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▀ ▔ ▏ ▎ ▍ ▌ ▋ ▊ ▉ ▐ ▕ ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ ░ ▒ ▓ 🮘 🮙 🮐  '
+echo -e '▄ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▀ ▔ ▏ ▎ ▍ ▌ ▋ ▊ ▉ ▐ ▕ ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ ░ ▒ ▓ 🮘 🮙 🮐  '
+echo -e '▄ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▀ ▔ ▏ ▎ ▍ ▌ ▋ ▊ ▉ ▐ ▕ ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ ░ ▒ ▓ 🮘 🮙 🮐  '
 echo
-echo -e '╭──────────────╮'
-echo -e '│ border chars │'
-echo -e '╰──────────────╯'
+echo -e '─────  ━━━━━ ┄┄┄┄┄ ┅┅┅┅┅ ┈┈┈┈┈ ┉┉┉┉┉ ╌╌╌╌╌ ╍╍╍╍╍ │ ┃ ┆ ┇ ┊ ┋ ╎ ╏ ║ ╵ ╷ ╹ ╻  '
+echo -e '─────  ━━━━━ ┄┄┄┄┄ ┅┅┅┅┅ ┈┈┈┈┈ ┉┉┉┉┉ ╌╌╌╌╌ ╍╍╍╍╍ │ ┃ ┆ ┇ ┊ ┋ ╎ ╏ ║ ╵ ╷ ╹ ╻  '
+echo -e '─────  ━━━━━ ┄┄┄┄┄ ┅┅┅┅┅ ┈┈┈┈┈ ┉┉┉┉┉ ╌╌╌╌╌ ╍╍╍╍╍ │ ┃ ┆ ┇ ┊ ┋ ╎ ╏ ║ ╵ ╷ ╹ ╻  '
+echo
+echo -e '╭──────────────╮ ┌─┬─┬─┬─┐ ╔═╦═╦═╦═╗ ┏━┳━┳━┳━┓ '
+echo -e '│ border chars │ │ ├─┼─┤ │ ║ ╠═╬═╣ ║ ┃ ┣━╋━┫ ┃ '
+echo -e '╰──────────────╯ └─┴─┴─┴─┘ ╚═╩═╩═╩═╝ ┗━┻━┻━┻━┛ '
 
 echo
 echo "Ligatures:"

From 4645486af3ee89b01c30eb6c0900c09a5e348624 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 11:32:39 +0200
Subject: [PATCH 356/656] ghostty: disable codepoint replacement and let
 ghostty do line drawing

---
 home/common/ghostty.nix | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index d910c46..9ef913d 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -31,7 +31,6 @@ in
       settings = {
         font-size = 14;
         font-family = "Berkeley Mono Variable";
-        font-codepoint-map = [ "U+2191-U+2195,U+2500-U+259F=Berkeley Mono Variable" ];
         font-family-bold-italic = "Monaspace Xenon";
         font-style-bold-italic = "ExtraLight Italic";
         font-variation-italic = [ "wght=100" ];
@@ -55,6 +54,8 @@ in
           "alt+shift+c=copy_to_clipboard"
           "alt+shift+v=paste_from_clipboard"
           "ctrl+tab=goto_split:previous"
+          "super+enter=toggle_fullscreen"
+          "ctrl+enter=unbind"
           "alt+one=unbind"
           "alt+two=unbind"
           "alt+three=unbind"

From f2f33573849631c247af6305a47197493712fbae Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 17:21:17 +0200
Subject: [PATCH 357/656] ghostty: thinner underlines. adjust spacing slightly
 to allow underlines more room.

---
 home/common/ghostty.nix | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 9ef913d..ecdb24c 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -35,9 +35,14 @@ in
         font-style-bold-italic = "ExtraLight Italic";
         font-variation-italic = [ "wght=100" ];
 
+        adjust-cell-height = 1;
+        adjust-cursor-thickness = 5;
+        adjust-font-baseline = 1;
+        adjust-underline-position = 2;
+        adjust-underline-thickness = -1;
+
         mouse-hide-while-typing = true;
         cursor-style = "block";
-        adjust-cursor-thickness = 5;
         unfocused-split-opacity = 1.0;
 
         shell-integration = "fish";

From 3e7b9dcf569e34144cc0b4b02bce312f63c9763e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 22:36:19 +0200
Subject: [PATCH 358/656] update

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index eeecd47..1954b55 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1723659157,
-        "narHash": "sha256-IW15cd4jrTK9p2arrbNxnksZLUgsNz9wWzXBhjx42rA=",
+        "lastModified": 1723776648,
+        "narHash": "sha256-RamgFe7V69Ndq2KLP3C5J4Nm79zxB2bbEhMwVjXBKRg=",
         "ref": "refs/heads/main",
-        "rev": "93c377c6a113b5cfb87370bdaf5cd63b58e2fe85",
-        "revCount": 6900,
+        "rev": "bbc7070c9e067505239fa7e6d4f2f409bd0a8194",
+        "revCount": 6917,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -232,11 +232,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1723362943,
-        "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
+        "lastModified": 1723637854,
+        "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "a58bc8ad779655e790115244571758e8de055e3d",
+        "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
         "type": "github"
       },
       "original": {

From 7a73fb03b462cc883fb8132c8a690870637044dd Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 22:36:19 +0200
Subject: [PATCH 359/656] nemo: network fix

---
 hosts/nemo/default.nix | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 63688f4..0ca8655 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -80,11 +80,13 @@
 
   networking = {
     hostName = "nemo"; # Define your hostname.
+    domain = "aarn.shelman.io";
     nameservers = [
       "10.1.100.11"
       "10.1.100.12"
       "10.1.100.13"
     ];
+    firewall.enable = false;
     networkmanager.enable = false;
     useDHCP = false;
     wireless.iwd = {
@@ -103,13 +105,7 @@
     };
   };
 
-  networking.firewall.allowedTCPPorts = [
-    22000 # Syncthing
-  ];
-  networking.firewall.allowedUDPPorts = [
-    22000 # Synchthing
-    21027
-  ];
+  services.nscd.enableNsncd = false;
 
   systemd.network.enable = true;
   systemd.network.networks."10-wifi" = {
@@ -136,7 +132,11 @@
 
   services.resolved = {
     enable = true;
-    domains = [ "~." ];
+    domains = [
+      "aarn.shelman.io"
+      "shelman.io"
+    ];
+    llmnr = "false";
     fallbackDns = [ "9.9.9.9" ];
   };
 
@@ -165,7 +165,6 @@
     ffado
     lm_sensors
     openconnect
-    pam_rssh
   ];
 
   programs.coolercontrol.enable = true;

From 008aed0854661f566336bbc7c41bfa0771293671 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 22:36:19 +0200
Subject: [PATCH 360/656] nemo: disable pam_rssh for now as rust 1.80 broke
 some pkgs

---
 hosts/nemo/default.nix | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 0ca8655..40e97b4 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -115,20 +115,22 @@
     linkConfig.RequiredForOnline = "routable";
   };
 
-  security = {
-    pam.services.doas =
-      { config, ... }:
-      {
-        rules.auth.rssh = {
-          order = config.rules.auth.ssh_agent_auth.order - 1;
-          control = "sufficient";
-          modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
-          settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
-            cat "/etc/ssh/authorized_keys.d/$1"
-          '';
-        };
-      };
-  };
+  # FIXME: pam_rssh is broken from rust 1.80 upgrade
+  # environment.systemPackages = [ pkgs.pam_rssh ];
+  # security = {
+  #   pam.services.doas =
+  #     { config, ... }:
+  #     {
+  #       rules.auth.rssh = {
+  #         order = config.rules.auth.ssh_agent_auth.order - 1;
+  #         control = "sufficient";
+  #         modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
+  #         settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
+  #           cat "/etc/ssh/authorized_keys.d/$1"
+  #         '';
+  #       };
+  #     };
+  # };
 
   services.resolved = {
     enable = true;

From 46b3e9cf28ed84cdcfc488976f50d5b5c0da0bd2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 17 Aug 2024 12:22:20 +0200
Subject: [PATCH 361/656] revert flake.lock until rust 1.80 npkgs fixes have
 been merged

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index 1954b55..eeecd47 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1723776648,
-        "narHash": "sha256-RamgFe7V69Ndq2KLP3C5J4Nm79zxB2bbEhMwVjXBKRg=",
+        "lastModified": 1723659157,
+        "narHash": "sha256-IW15cd4jrTK9p2arrbNxnksZLUgsNz9wWzXBhjx42rA=",
         "ref": "refs/heads/main",
-        "rev": "bbc7070c9e067505239fa7e6d4f2f409bd0a8194",
-        "revCount": 6917,
+        "rev": "93c377c6a113b5cfb87370bdaf5cd63b58e2fe85",
+        "revCount": 6900,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -232,11 +232,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1723637854,
-        "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
+        "lastModified": 1723362943,
+        "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
+        "rev": "a58bc8ad779655e790115244571758e8de055e3d",
         "type": "github"
       },
       "original": {

From 510ed39bbda6b98a3f635449dd2163027d4e56f7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 17 Aug 2024 12:22:20 +0200
Subject: [PATCH 362/656] delta: style ripgrep results

---
 home/common/vcs.nix    | 1 +
 hosts/nemo/default.nix | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index f430fe2..99071fd 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -46,6 +46,7 @@
         file-renamed-label = "[>]";
         file-style = "bold reverse";
         file-transformation = "s/$/  ░▒▓/";
+        grep-file-style = "bold reverse";
         hunk-header-decoration-style = "none";
         hunk-header-file-style = "bold";
         hunk-header-line-number-style = "bold";
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 40e97b4..e4a5143 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -135,8 +135,8 @@
   services.resolved = {
     enable = true;
     domains = [
-      "aarn.shelman.io"
       "shelman.io"
+      "aarn.shelman.io"
     ];
     llmnr = "false";
     fallbackDns = [ "9.9.9.9" ];

From 8c439e2ce1556f9fb702bf718ca869160f066a54 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 19 Aug 2024 09:37:43 +0200
Subject: [PATCH 363/656] update (rust 1.80)

---
 flake.lock             | 20 ++++++++++----------
 hosts/nemo/default.nix | 33 ++++++++++++++++-----------------
 2 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/flake.lock b/flake.lock
index eeecd47..a022703 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1723659157,
-        "narHash": "sha256-IW15cd4jrTK9p2arrbNxnksZLUgsNz9wWzXBhjx42rA=",
+        "lastModified": 1724175906,
+        "narHash": "sha256-V4aYjELMU8UtqjU99lDqkwQpkv5vx0sSWq015ZZ91Mg=",
         "ref": "refs/heads/main",
-        "rev": "93c377c6a113b5cfb87370bdaf5cd63b58e2fe85",
-        "revCount": 6900,
+        "rev": "c9f40b7b8d22e2aa157c226e406485d85d2075f9",
+        "revCount": 7013,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -189,11 +189,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1723399884,
-        "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
+        "lastModified": 1723986931,
+        "narHash": "sha256-Fy+KEvDQ+Hc8lJAV3t6leXhZJ2ncU5/esxkgt3b8DEY=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "086f619dd991a4d355c07837448244029fc2d9ab",
+        "rev": "2598861031b78aadb4da7269df7ca9ddfc3e1671",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1723362943,
-        "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
+        "lastModified": 1723991338,
+        "narHash": "sha256-Grh5PF0+gootJfOJFenTTxDTYPidA3V28dqJ/WV7iis=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "a58bc8ad779655e790115244571758e8de055e3d",
+        "rev": "8a3354191c0d7144db9756a74755672387b702ba",
         "type": "github"
       },
       "original": {
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index e4a5143..fc54560 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -89,6 +89,7 @@
     firewall.enable = false;
     networkmanager.enable = false;
     useDHCP = false;
+
     wireless.iwd = {
       enable = true;
       settings = {
@@ -97,7 +98,6 @@
           EnableIPv6 = false;
           NameResolvingService = "systemd";
         };
-        Scan.DisablePeriodicScan = true;
         Settings = {
           AutoConnect = true;
         };
@@ -115,22 +115,20 @@
     linkConfig.RequiredForOnline = "routable";
   };
 
-  # FIXME: pam_rssh is broken from rust 1.80 upgrade
-  # environment.systemPackages = [ pkgs.pam_rssh ];
-  # security = {
-  #   pam.services.doas =
-  #     { config, ... }:
-  #     {
-  #       rules.auth.rssh = {
-  #         order = config.rules.auth.ssh_agent_auth.order - 1;
-  #         control = "sufficient";
-  #         modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
-  #         settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
-  #           cat "/etc/ssh/authorized_keys.d/$1"
-  #         '';
-  #       };
-  #     };
-  # };
+  security = {
+    pam.services.doas =
+      { config, ... }:
+      {
+        rules.auth.rssh = {
+          order = config.rules.auth.ssh_agent_auth.order - 1;
+          control = "sufficient";
+          modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
+          settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
+            cat "/etc/ssh/authorized_keys.d/$1"
+          '';
+        };
+      };
+  };
 
   services.resolved = {
     enable = true;
@@ -166,6 +164,7 @@
   environment.systemPackages = with pkgs; [
     ffado
     lm_sensors
+    pkgs.pam_rssh
     openconnect
   ];
 

From e774304bd20f02cd9b63e23d02d9cddb8dad03c2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 21 Aug 2024 09:57:34 +0200
Subject: [PATCH 364/656] delta: fix changed flags

---
 home/common/fish.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 4798ae2..84c8418 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -119,7 +119,7 @@
       l = "bat";
       ls = "eza";
       tree = "eza --tree";
-      top = "btm --basic --enable_cache_memory --enable_gpu_memory --battery";
+      top = "btm --basic --enable_cache_memory --battery";
       ts = "TZ=Z date '+%Y%m%dT%H%M%SZ'";
       w = "viddy -n1 $history[1]";
       xc = "fish_clipboard_copy";

From cdb461a4c378c75cc0a2bc8f762e20ec849a7b90 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 21 Aug 2024 10:12:03 +0200
Subject: [PATCH 365/656] fish: a bit of color using grc

---
 home/common/fish.nix  | 19 ++++++++++++-------
 home/common/utils.nix |  1 +
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 84c8418..c6f0571 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -6,17 +6,22 @@
 
     plugins = [
       {
-        name = "transient-fish";
-        src = pkgs.fetchFromGitHub {
-          owner = "zzhaolei";
-          repo = "transient.fish";
-          rev = "deb35c4d07ea6acc56b073d7ba84f8ed76356abd";
-          sha256 = "sha256-BQvuqY7D+9fTDeLb7Fz9Ll/7uIlqrmRmn0S+G9v+2Uc=";
-        };
+        name = "grc";
+        src = pkgs.fishPlugins.grc.src;
+      }
+      {
+        name = "transient";
+        src = pkgs.fishPlugins.transient-fish.src;
       }
     ];
 
     functions = {
+      kubectl = {
+        description = "Wraps kubectl in grc";
+        wraps = "kubectl";
+        body = "grc.wrap kubectl $argv";
+      };
+
       edit = {
         description = "Open a file in already running nvim and switch tab";
         argumentNames = [ "file" ];
diff --git a/home/common/utils.nix b/home/common/utils.nix
index ef5f380..165b7b3 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -1,6 +1,7 @@
 { pkgs, ... }:
 {
   home.packages = with pkgs; [
+    grc
     dust
     jless
     procs

From 95461b403a5dacb6a0d065ca9afbf7161e3a23c0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 22:36:19 +0200
Subject: [PATCH 366/656] jj: more legible color for "hidden" / rest parts of
 changes and commits

---
 home/common/ghostty.nix          | 4 ++--
 home/dln/home.nix                | 5 +++++
 pkgs/jujutsu-openssh/default.nix | 2 +-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index ecdb24c..6988eea 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -88,7 +88,7 @@ in
       palette = 5=#cb01ff
       palette = 6=#00e0ff
       palette = 7=#f0f0f0
-      palette = 8=#000000
+      palette = 8=#444444
       palette = 9=#ff8c88
       palette = 10=#baff94
       palette = 11=#ffe090
@@ -112,7 +112,7 @@ in
       palette = 5=#7d009e
       palette = 6=#008a9e
       palette = 7=#f7f7f7
-      palette = 8=#000000
+      palette = 8=#b0b0b0
       palette = 9=#ff0035
       palette = 10=#509e00
       palette = 11=#ffc900
diff --git a/home/dln/home.nix b/home/dln/home.nix
index c04594f..3c5e467 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -129,6 +129,11 @@ in
         "commit_id prefix" = {
           bold = true;
         };
+
+        "rest" = {
+          fg = "bright black";
+          bold = false;
+        };
       };
     };
   };
diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
index b5bd764..aeafd76 100644
--- a/pkgs/jujutsu-openssh/default.nix
+++ b/pkgs/jujutsu-openssh/default.nix
@@ -16,7 +16,7 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "jujutsu-openssh";
-  version = "0.19.0+pr3191.openssh";
+  version = "0.20.0+pr3191.openssh";
 
   src = fetchFromGitHub {
     owner = "dln";

From 37308252954db862f12adab1a3e3e1c99b729b12 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 15 Aug 2024 22:36:19 +0200
Subject: [PATCH 367/656] nemo: disable pam_rssh (again!) for now as rust 1.80
 broke some pkgs

---
 hosts/nemo/default.nix | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index fc54560..25d5313 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -115,20 +115,22 @@
     linkConfig.RequiredForOnline = "routable";
   };
 
-  security = {
-    pam.services.doas =
-      { config, ... }:
-      {
-        rules.auth.rssh = {
-          order = config.rules.auth.ssh_agent_auth.order - 1;
-          control = "sufficient";
-          modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
-          settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
-            cat "/etc/ssh/authorized_keys.d/$1"
-          '';
-        };
-      };
-  };
+  # FIXME: pam_rssh is broken from rust 1.80 upgrade
+  # environment.systemPackages = [ pkgs.pam_rssh ];
+  # security = {
+  #   pam.services.doas =
+  #     { config, ... }:
+  #     {
+  #       rules.auth.rssh = {
+  #         order = config.rules.auth.ssh_agent_auth.order - 1;
+  #         control = "sufficient";
+  #         modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
+  #         settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
+  #           cat "/etc/ssh/authorized_keys.d/$1"
+  #         '';
+  #       };
+  #     };
+  # };
 
   services.resolved = {
     enable = true;
@@ -164,7 +166,7 @@
   environment.systemPackages = with pkgs; [
     ffado
     lm_sensors
-    pkgs.pam_rssh
+    # pkgs.pam_rssh
     openconnect
   ];
 

From 086298efa354216ee821b84c8558eef882bc6913 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 21 Aug 2024 11:31:00 +0200
Subject: [PATCH 368/656] ssh: include host-local config file if available

---
 home/dln/home.nix | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index 3c5e467..53efd83 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ config, pkgs, ... }:
 let
   realName = "Daniel Lundin";
   email = "dln@arity.se";
@@ -138,6 +138,10 @@ in
     };
   };
 
+  programs.ssh.extraConfig = ''
+    Include ${config.home.homeDirectory}/.ssh/config_local
+  '';
+
   programs.ssh.matchBlocks = {
     dev = {
       hostname = "10.1.100.16";

From 24002ffe4df053b031c8b503bff06b01ad9096f1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 21 Aug 2024 16:39:36 +0200
Subject: [PATCH 369/656] fish: keep 4 dir segements in prompt pwd

---
 home/common/fish.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index c6f0571..c29fff5 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -90,7 +90,7 @@
 
       fish_prompt.body = ''
         echo
-        string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd) (set_color green) ' ❯ ' (set_color normal)
+        string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color green) ' ❯ ' (set_color normal)
       '';
 
       fish_right_prompt.body = ''

From 60ca243a65626831ff7bb786b960f662175aaa1d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 14 Aug 2024 21:49:16 +0200
Subject: [PATCH 370/656] nvim: fix keybindings


From 66a3c221d3af53ad9feefc412d9906b7b904e092 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 14 Aug 2024 23:55:59 +0200
Subject: [PATCH 371/656] dinky: install calibre

---
 home/dln/dinky.nix | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/home/dln/dinky.nix b/home/dln/dinky.nix
index c31bbae..2a63d27 100644
--- a/home/dln/dinky.nix
+++ b/home/dln/dinky.nix
@@ -1,4 +1,4 @@
-{ ... }:
+{ pkgs, ... }:
 {
   imports = [
     ./home.nix
@@ -11,4 +11,5 @@
     };
   };
 
+  home.packages = with pkgs; [ calibre ];
 }

From 7f7855c03d4d2d1804db8ea46ecbf1bf90bb8fd8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 18 Aug 2024 23:33:07 +0200
Subject: [PATCH 372/656] dinky: use iwd as wifi backend

---
 home/common/devel.nix   |  1 +
 hosts/dinky/default.nix | 12 ++++++++++++
 2 files changed, 13 insertions(+)

diff --git a/home/common/devel.nix b/home/common/devel.nix
index 10768d9..05d23c2 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -1,6 +1,7 @@
 { pkgs, ... }:
 {
   home.packages = with pkgs; [
+    age-plugin-fido2-hmac
     bacon
     cargo
     clang
diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index 9e068d7..2ae4a16 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -11,6 +11,11 @@
 {
   imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
 
+  system.switch = {
+    enable = false;
+    enableNg = true;
+  };
+
   boot = {
     initrd = {
       availableKernelModules = [
@@ -78,9 +83,16 @@
 
   networking = {
     hostName = "dinky";
+    domain = "aarn.shelman.io";
+    search = [
+      "shelman.io"
+      "aarn.shelman.io"
+    ];
     useDHCP = lib.mkDefault true;
   };
 
+  networking.networkmanager.wifi.backend = "iwd";
+
   services.mullvad-vpn.enable = true;
 
   users.users.dln = {

From 12757040d892c0aff2446637f4c3d3c7b8ce1645 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 22 Aug 2024 09:25:58 +0200
Subject: [PATCH 373/656] update

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index a022703..7fde307 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1724175906,
-        "narHash": "sha256-V4aYjELMU8UtqjU99lDqkwQpkv5vx0sSWq015ZZ91Mg=",
+        "lastModified": 1724247947,
+        "narHash": "sha256-BrcJWSWtRQBiqZJ0K5nyDJHbAllZ407KC/oEfM7+3OA=",
         "ref": "refs/heads/main",
-        "rev": "c9f40b7b8d22e2aa157c226e406485d85d2075f9",
-        "revCount": 7013,
+        "rev": "140d1dde5a4630369f9edd686825b962fdf2ec04",
+        "revCount": 7024,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -232,11 +232,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1723991338,
-        "narHash": "sha256-Grh5PF0+gootJfOJFenTTxDTYPidA3V28dqJ/WV7iis=",
+        "lastModified": 1724224976,
+        "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "8a3354191c0d7144db9756a74755672387b702ba",
+        "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62",
         "type": "github"
       },
       "original": {

From 8ff422f9533814d985061c75b8e86996f321139c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 22 Aug 2024 09:25:58 +0200
Subject: [PATCH 374/656] devel: add mc

---
 home/common/devel.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/devel.nix b/home/common/devel.nix
index 05d23c2..c1d6dfe 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -10,6 +10,7 @@
     go
     just
     ldns
+    minio-client
     nixfmt-rfc-style
     nodejs_22
     passage

From caf1da923157ecff03ec2e6ac8d7c6d9b43fa802 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 22 Aug 2024 09:25:58 +0200
Subject: [PATCH 375/656] Use tmpfs for /tmp. Enable new nixos system switch
 implementation

---
 common/base.nix         | 16 ++++++++++++++++
 hosts/dinky/default.nix |  5 -----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/common/base.nix b/common/base.nix
index 269169b..3525ec8 100644
--- a/common/base.nix
+++ b/common/base.nix
@@ -5,8 +5,24 @@
     loader.systemd-boot.enable = true;
     loader.efi.canTouchEfiVariables = true;
     kernelPackages = pkgs.linuxPackages_zen;
+    initrd.systemd.enable = true;
+
+    binfmt.emulatedSystems = [ "aarch64-linux" ];
   };
 
+  # Temporary files
+  boot.tmp.useTmpfs = true;
+  systemd.services.nix-daemon = {
+    environment.TMPDIR = "/var/tmp";
+  };
+
+  system.switch = {
+    enable = false;
+    enableNg = true;
+  };
+
+  services.fstrim.enable = true;
+
   time.timeZone = "Europe/Stockholm";
 
   environment.systemPackages = with pkgs; [
diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index 2ae4a16..1c625b3 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -11,11 +11,6 @@
 {
   imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
 
-  system.switch = {
-    enable = false;
-    enableNg = true;
-  };
-
   boot = {
     initrd = {
       availableKernelModules = [

From c03235156c93c674cb880cec70cc508f3f812501 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 25 Aug 2024 17:12:29 +0200
Subject: [PATCH 376/656] env vars: set GOPROXY

---
 home/common/devel.nix | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/home/common/devel.nix b/home/common/devel.nix
index c1d6dfe..28501f8 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -23,4 +23,8 @@
     tree-sitter
     zig
   ];
+
+  home.sessionVariables = {
+    GOPROXY = "https://athena.patagia.dev";
+  };
 }

From 100a871a6dc8ca8fe194804548488c15be9c82a7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 25 Aug 2024 20:24:34 +0200
Subject: [PATCH 377/656] install dog(dns)

---
 home/common/devel.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/devel.nix b/home/common/devel.nix
index 28501f8..416471c 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -6,6 +6,7 @@
     cargo
     clang
     codeium
+    dogdns
     gnumake
     go
     just

From b572bf24a0901adcaaf4fa88096c54699b268079 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 27 Aug 2024 16:12:53 +0200
Subject: [PATCH 378/656] Update

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index 7fde307..e765ca0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1724247947,
-        "narHash": "sha256-BrcJWSWtRQBiqZJ0K5nyDJHbAllZ407KC/oEfM7+3OA=",
+        "lastModified": 1724604890,
+        "narHash": "sha256-WivY48Jiu2Z4TzhshAl9S5DtDRDTacIdkrx0XE6Aaro=",
         "ref": "refs/heads/main",
-        "rev": "140d1dde5a4630369f9edd686825b962fdf2ec04",
-        "revCount": 7024,
+        "rev": "a2bb4a7cd1e84f9034ebfd456452d5746f95d0e6",
+        "revCount": 7063,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -189,11 +189,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1723986931,
-        "narHash": "sha256-Fy+KEvDQ+Hc8lJAV3t6leXhZJ2ncU5/esxkgt3b8DEY=",
+        "lastModified": 1724435763,
+        "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "2598861031b78aadb4da7269df7ca9ddfc3e1671",
+        "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be",
         "type": "github"
       },
       "original": {

From eaf4d1fd00c105ad544677ade4048c58870762a2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 27 Aug 2024 16:12:53 +0200
Subject: [PATCH 379/656] fish: yellow prompt symbol

---
 home/common/fish.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index c29fff5..4f328ad 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -90,7 +90,7 @@
 
       fish_prompt.body = ''
         echo
-        string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color green) ' ❯ ' (set_color normal)
+        string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color yellow) ' ❯ ' (set_color normal)
       '';
 
       fish_right_prompt.body = ''
@@ -99,7 +99,7 @@
 
       transient_prompt_func.body = ''
         echo
-        string join "" -- (set_color green) '❯ ' (set_color normal)
+        string join "" -- (set_color yellow) '❯ ' (set_color normal)
       '';
 
       rg.body = ''

From 467946b1af197d0c0b2e713a3130c8dbb7635190 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 28 Aug 2024 08:49:15 +0200
Subject: [PATCH 380/656] update

---
 common/desktop.nix | 16 ++++++++--------
 flake.lock         | 14 +++++++-------
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/common/desktop.nix b/common/desktop.nix
index ba48368..f09a95a 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -24,21 +24,21 @@ in
         snapshot
       ])
       ++ (with pkgs; [
+        atomix # puzzle game
         baobab # disk usage analyzer
         cheese # webcam tool
         epiphany # web browser
         geary # email reader
-        gnome.atomix # puzzle game
+        gnome-clocks
+        gnome-contacts
         gnome-disk-utility
-        gnome.gnome-clocks
-        gnome.gnome-contacts
-        gnome.gnome-logs
-        gnome.gnome-music
-        gnome.hitori # sudoku game
-        gnome.iagno # go game
-        gnome.tali # poker game
+        gnome-logs
+        gnome-music
         gnome-terminal
+        hitori # sudoku game
+        iagno # go game
         simple-scan
+        tali # poker game
         yelp # help viewer
       ]);
 
diff --git a/flake.lock b/flake.lock
index e765ca0..de17519 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1724604890,
-        "narHash": "sha256-WivY48Jiu2Z4TzhshAl9S5DtDRDTacIdkrx0XE6Aaro=",
+        "lastModified": 1724776272,
+        "narHash": "sha256-D8GnyjKRKCi11LLjS7hPD4MDYfkjR3Avuq0XT0QlcbU=",
         "ref": "refs/heads/main",
-        "rev": "a2bb4a7cd1e84f9034ebfd456452d5746f95d0e6",
-        "revCount": 7063,
+        "rev": "89e16ebef5e490f742431d2c9b0c41e194e9fc6d",
+        "revCount": 7081,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -232,11 +232,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1724224976,
-        "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=",
+        "lastModified": 1724479785,
+        "narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62",
+        "rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be",
         "type": "github"
       },
       "original": {

From d3dad5fd525c033de3efe9a651112defdae3dda4 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 30 Aug 2024 13:46:11 +0200
Subject: [PATCH 381/656] nemo: install calibre

---
 home/dln/nemo.nix | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index e7322c9..8095e57 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -1,4 +1,4 @@
-{ lib, ... }:
+{ lib, pkgs, ... }:
 {
   imports = [
     ./home.nix
@@ -16,4 +16,6 @@
       enabled-extensions = [ "azclock@azclock.gitlab.com" ];
     };
   };
+
+  home.packages = with pkgs; [ calibre ];
 }

From b44fd4cd3a1b97c926ddb98adcd0157799674a16 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 30 Aug 2024 13:53:23 +0200
Subject: [PATCH 382/656] update

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index de17519..9482afe 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1724776272,
-        "narHash": "sha256-D8GnyjKRKCi11LLjS7hPD4MDYfkjR3Avuq0XT0QlcbU=",
+        "lastModified": 1724969132,
+        "narHash": "sha256-XAYTVVxWoCXpHGqoNj0uhIbjD4MimFQXEke9eKYufK4=",
         "ref": "refs/heads/main",
-        "rev": "89e16ebef5e490f742431d2c9b0c41e194e9fc6d",
-        "revCount": 7081,
+        "rev": "602bf6ba1e1169750e233ed2431f71dbcf754362",
+        "revCount": 7103,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -232,11 +232,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1724479785,
-        "narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=",
+        "lastModified": 1724819573,
+        "narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be",
+        "rev": "71e91c409d1e654808b2621f28a327acfdad8dc2",
         "type": "github"
       },
       "original": {

From 694a5f152c2194f59559402610e143a486f2490e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Sep 2024 19:26:10 +0200
Subject: [PATCH 383/656] jj: use default immutable_heads function

---
 home/dln/home.nix | 1 -
 1 file changed, 1 deletion(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index 53efd83..e3385c2 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -117,7 +117,6 @@ in
 
       "revset-aliases" = {
         # Prevent rewriting commits on main@origin and commits authored by other users;
-        "immutable_heads()" = "main@origin | (main@origin.. & ~mine())";
         "user(x)" = "author(x) | committer(x)";
         "trunk()" = "latest((present(main) | present(master)) & remote_branches())";
         "open" = "(mine() ~ ::trunk()) ~ heads(empty())";

From d52f10ccd9e9291a0ac7a30803e34f978a9d376e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Sep 2024 19:31:16 +0200
Subject: [PATCH 384/656] gnome: enable emoji-copy extension

---
 home/common/gnome.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index 3aa5800..f35f579 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -11,6 +11,7 @@ with lib.hm.gvariant;
       gnome-tweaks
       gnome-pomodoro
       gnomeExtensions.desktop-clock
+      gnomeExtensions.emoji-copy
       gnomeExtensions.just-perfection
       gnomeExtensions.vitals
     ];

From 2fb1f90dbe950fa5b69e874f9c7640281ca0a980 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Sep 2024 19:31:16 +0200
Subject: [PATCH 385/656] update

---
 flake.lock | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/flake.lock b/flake.lock
index 9482afe..47ab7e0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1724969132,
-        "narHash": "sha256-XAYTVVxWoCXpHGqoNj0uhIbjD4MimFQXEke9eKYufK4=",
+        "lastModified": 1725209919,
+        "narHash": "sha256-Mv3L/a/Qa7sWtHP5kMGq3SJ/KYdiD1qeZZEoU5bvAWk=",
         "ref": "refs/heads/main",
-        "rev": "602bf6ba1e1169750e233ed2431f71dbcf754362",
-        "revCount": 7103,
+        "rev": "5ade197f91581a1d80eca5a734012aa60f40245e",
+        "revCount": 7122,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -189,11 +189,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1724435763,
-        "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=",
+        "lastModified": 1725180166,
+        "narHash": "sha256-fzssXuGR/mCeGbzM1ExaTqDz7QDGta3WA4jJsZyRruo=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be",
+        "rev": "471e3eb0a114265bcd62d11d58ba8d3421ee68eb",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1724819573,
-        "narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=",
+        "lastModified": 1725103162,
+        "narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "71e91c409d1e654808b2621f28a327acfdad8dc2",
+        "rev": "12228ff1752d7b7624a54e9c1af4b222b3c1073b",
         "type": "github"
       },
       "original": {

From 030f54c5df65753fb121f5a70455528c15795c4b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Sep 2024 19:48:06 +0200
Subject: [PATCH 386/656] vcs: remove unused git commands

---
 home/common/vcs.nix | 2 --
 1 file changed, 2 deletions(-)

diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index 99071fd..fde4105 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -5,10 +5,8 @@
     delta
     diffedit3
     difftastic
-    git-branchless
     git-get
     git-graph
-    git-town
     lazyjj
     tea
   ];

From ad56904021c206eb3baa0e8fb6aaa6c41a4660f5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Sep 2024 13:10:06 +0200
Subject: [PATCH 387/656] update

---
 flake.lock | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/flake.lock b/flake.lock
index 47ab7e0..6f40849 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1725209919,
-        "narHash": "sha256-Mv3L/a/Qa7sWtHP5kMGq3SJ/KYdiD1qeZZEoU5bvAWk=",
+        "lastModified": 1725250745,
+        "narHash": "sha256-tXw59mE2WYu0OtjOUkolk2QUwREum5wUKztuYgkVwdk=",
         "ref": "refs/heads/main",
-        "rev": "5ade197f91581a1d80eca5a734012aa60f40245e",
-        "revCount": 7122,
+        "rev": "d8fc54d1bf360a3a886a9c4a9d28204b770dcb36",
+        "revCount": 7125,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },

From 9bbd3fa12e22366a6de8fae233836776c57c5fd0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Sep 2024 14:43:17 +0200
Subject: [PATCH 388/656] shelman->patagia

---
 README.md                                     |  2 +-
 common/desktop.nix                            |  4 ++--
 common/laptop.nix                             |  4 ++--
 common/plymouth.nix                           |  4 ++--
 common/podman.nix                             |  4 ++--
 files/config/nvim/lua/plugins/colorscheme.lua |  2 +-
 home/common/default.nix                       |  2 +-
 home/common/ghostty.nix                       |  2 +-
 home/common/gnome.nix                         |  2 +-
 home/common/web.nix                           |  2 +-
 home/common/wezterm.nix                       |  2 +-
 home/dln/desktop.nix                          |  2 +-
 hosts/dinky/default.nix                       | 10 +++++-----
 hosts/nemo/default.nix                        |  9 +++++----
 14 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/README.md b/README.md
index fee8b5d..ea9d7aa 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ IT in a box!
 2. Clone this repo:
 
    ```
-   nix-shell -p git --command 'git clone https://git.shelman.io/shelmangroup/nixos-config.git'
+   nix-shell -p git --command 'git clone https://patagia.dev/dln/nixos-config.git'
    ```
 
 3. Ensure host configuration exists at `./nixos-config/hosts/${HOSTNAME}` and contains at minimum the hardware configuration. The NixOS installer will write this out to `/etc/nixos/hardware-configuration.nix`.
diff --git a/common/desktop.nix b/common/desktop.nix
index f09a95a..bfa8c5f 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -7,10 +7,10 @@
 
 let
   inherit (lib) mkIf mkEnableOption;
-  cfg = config.shelman.podman;
+  cfg = config.patagia.podman;
 in
 {
-  options.shelman.desktop.enable = mkEnableOption "Desktop environment and common applications";
+  options.patagia.desktop.enable = mkEnableOption "Desktop environment and common applications";
 
   config = mkIf cfg.enable {
     environment.systemPackages = with pkgs; [ gnome-ssh-askpass4 ];
diff --git a/common/laptop.nix b/common/laptop.nix
index c9d5688..a18c765 100644
--- a/common/laptop.nix
+++ b/common/laptop.nix
@@ -7,10 +7,10 @@
 
 let
   inherit (lib) mkIf mkEnableOption;
-  cfg = config.shelman.podman;
+  cfg = config.patagia.podman;
 in
 {
-  options.shelman.laptop.enable = mkEnableOption "Laptop tools and configuration";
+  options.patagia.laptop.enable = mkEnableOption "Laptop tools and configuration";
 
   config = mkIf cfg.enable {
     environment.systemPackages = with pkgs; [ gnomeExtensions.battery-health-charging ];
diff --git a/common/plymouth.nix b/common/plymouth.nix
index bcf73cc..ecca293 100644
--- a/common/plymouth.nix
+++ b/common/plymouth.nix
@@ -7,10 +7,10 @@
 
 let
   inherit (lib) mkIf mkEnableOption;
-  cfg = config.shelman.plymouth;
+  cfg = config.patagia.plymouth;
 in
 {
-  options.shelman.plymouth.enable = mkEnableOption "Fancy boot splash";
+  options.patagia.plymouth.enable = mkEnableOption "Fancy boot splash";
 
   config = mkIf cfg.enable {
     boot = {
diff --git a/common/podman.nix b/common/podman.nix
index 02540ee..5997bd6 100644
--- a/common/podman.nix
+++ b/common/podman.nix
@@ -7,10 +7,10 @@
 
 let
   inherit (lib) mkIf mkEnableOption;
-  cfg = config.shelman.podman;
+  cfg = config.patagia.podman;
 in
 {
-  options.shelman.podman.enable = mkEnableOption "Podman";
+  options.patagia.podman.enable = mkEnableOption "Podman";
 
   config = mkIf cfg.enable {
     environment.extraInit = ''
diff --git a/files/config/nvim/lua/plugins/colorscheme.lua b/files/config/nvim/lua/plugins/colorscheme.lua
index b2967b9..738a94e 100644
--- a/files/config/nvim/lua/plugins/colorscheme.lua
+++ b/files/config/nvim/lua/plugins/colorscheme.lua
@@ -1,6 +1,6 @@
 return {
 	{
-		"https://git.shelman.io/shelmangroup/dieter.nvim.git",
+		"https://patagia.dev/patagia/dieter.nvim.git",
 		lazy = false,
 		priority = 1000,
 	},
diff --git a/home/common/default.nix b/home/common/default.nix
index a362e5b..2ad0154 100644
--- a/home/common/default.nix
+++ b/home/common/default.nix
@@ -19,5 +19,5 @@
     ./wezterm.nix
   ];
 
-  options.shelman.desktop.enable = lib.mkEnableOption "Desktop environment";
+  options.patagia.desktop.enable = lib.mkEnableOption "Desktop environment";
 }
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 6988eea..2980988 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -19,7 +19,7 @@ let
   };
 in
 {
-  config = lib.mkIf config.shelman.desktop.enable {
+  config = lib.mkIf config.patagia.desktop.enable {
 
     home.packages = with pkgs; [
       inputs.ghostty.packages.${pkgs.system}.default
diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index f35f579..948712f 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -6,7 +6,7 @@
 }:
 with lib.hm.gvariant;
 {
-  config = lib.mkIf config.shelman.desktop.enable {
+  config = lib.mkIf config.patagia.desktop.enable {
     home.packages = with pkgs; [
       gnome-tweaks
       gnome-pomodoro
diff --git a/home/common/web.nix b/home/common/web.nix
index 5062a94..880604a 100644
--- a/home/common/web.nix
+++ b/home/common/web.nix
@@ -5,7 +5,7 @@
   ...
 }:
 {
-  config = lib.mkIf config.shelman.desktop.enable {
+  config = lib.mkIf config.patagia.desktop.enable {
 
     home.packages = with pkgs; [ tor-browser ];
 
diff --git a/home/common/wezterm.nix b/home/common/wezterm.nix
index 2aa7913..95238ea 100644
--- a/home/common/wezterm.nix
+++ b/home/common/wezterm.nix
@@ -1,6 +1,6 @@
 { config, lib, ... }:
 {
-  config = lib.mkIf config.shelman.desktop.enable {
+  config = lib.mkIf config.patagia.desktop.enable {
 
     programs.wezterm = {
       enable = true;
diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index 8525e8f..0da8840 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -1,6 +1,6 @@
 { inputs, pkgs, ... }:
 {
-  shelman = {
+  patagia = {
     desktop.enable = true;
   };
 
diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index 1c625b3..58dd239 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -78,10 +78,10 @@
 
   networking = {
     hostName = "dinky";
-    domain = "aarn.shelman.io";
+    domain = "aarn.patagia.dev";
     search = [
-      "shelman.io"
-      "aarn.shelman.io"
+      "patagia.dev"
+      "aarn.patagia.dev"
     ];
     useDHCP = lib.mkDefault true;
   };
@@ -105,7 +105,7 @@
     ];
   };
 
-  shelman = {
+  patagia = {
     desktop.enable = true;
     laptop.enable = true;
     plymouth.enable = true;
@@ -119,7 +119,7 @@
 
   nix.buildMachines = [
     {
-      hostName = "nemo.aarn.shelman.io";
+      hostName = "nemo.aarn.patagia.dev";
       sshUser = "nixremote";
       system = "x86_64-linux";
       protocol = "ssh-ng";
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 25d5313..80dee15 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -80,7 +80,7 @@
 
   networking = {
     hostName = "nemo"; # Define your hostname.
-    domain = "aarn.shelman.io";
+    domain = "aarn.patagia.dev";
     nameservers = [
       "10.1.100.11"
       "10.1.100.12"
@@ -135,8 +135,8 @@
   services.resolved = {
     enable = true;
     domains = [
-      "shelman.io"
-      "aarn.shelman.io"
+      "patagia.dev"
+      "aarn.patagia.dev"
     ];
     llmnr = "false";
     fallbackDns = [ "9.9.9.9" ];
@@ -157,7 +157,7 @@
     settings = { };
   };
 
-  shelman = {
+  patagia = {
     desktop.enable = true;
     plymouth.enable = true;
     podman.enable = true;
@@ -165,6 +165,7 @@
 
   environment.systemPackages = with pkgs; [
     ffado
+    libcamera
     lm_sensors
     # pkgs.pam_rssh
     openconnect

From 8b1a4651c15ef6d86ac0ff4d0656ac89ca2f1401 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Sep 2024 20:44:43 +0200
Subject: [PATCH 389/656] gnome: configure emoji copy extension

---
 home/common/gnome.nix | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index 948712f..de67eb7 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -166,11 +166,16 @@ with lib.hm.gvariant;
 
       "org/gnome/shell" = {
         enabled-extensions = [
+          "emoji-copy@felipeftn"
           "just-perfection-desktop@just-perfection"
           "Vitals@CoreCoding.com"
         ];
       };
 
+      "org/gnome/shell/extensions/emoji-copy" = {
+        emoji-keybind = [ "<Super>e" ];
+      };
+
       "org/gnome/shell/extensions/just-perfection" = {
         animation = 0;
         notification-banner-position = 2;

From 72f087261827c665f4c2d467cf1884e975d7210d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Sep 2024 19:48:38 +0200
Subject: [PATCH 390/656] ghostty: disable synthetic styles

---
 home/common/ghostty.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 2980988..b518ff9 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -33,6 +33,7 @@ in
         font-family = "Berkeley Mono Variable";
         font-family-bold-italic = "Monaspace Xenon";
         font-style-bold-italic = "ExtraLight Italic";
+        font-synthetic-style = false;
         font-variation-italic = [ "wght=100" ];
 
         adjust-cell-height = 1;

From 318c9c9cc3f5a302f296fd189f1b149e00907ea3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Sep 2024 19:48:38 +0200
Subject: [PATCH 391/656] update

---
 flake.lock | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/flake.lock b/flake.lock
index 6f40849..9733c55 100644
--- a/flake.lock
+++ b/flake.lock
@@ -132,11 +132,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1725250745,
-        "narHash": "sha256-tXw59mE2WYu0OtjOUkolk2QUwREum5wUKztuYgkVwdk=",
+        "lastModified": 1725298527,
+        "narHash": "sha256-WAttmsNzqkw4tm0Po/ZzeFtp83BvJAnYIbGyBIdGnMU=",
         "ref": "refs/heads/main",
-        "rev": "d8fc54d1bf360a3a886a9c4a9d28204b770dcb36",
-        "revCount": 7125,
+        "rev": "2f32efbc82c938c3502ce20d2479ea867cc3ed0a",
+        "revCount": 7161,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },

From d8cd9df7d37b6050301a11a141ab75da99f541e7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 3 Sep 2024 17:13:48 +0200
Subject: [PATCH 392/656] Add pearl host

---
 .gitignore                             |   1 +
 flake.lock                             | 105 +++--------------------
 flake.nix                              |   5 +-
 home/dln/pearl.nix                     |   9 ++
 hosts/pearl/default.nix                | 111 +++++++++++++++++++++++++
 hosts/pearl/hardware-configuration.nix |  38 +++++++++
 6 files changed, 173 insertions(+), 96 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 home/dln/pearl.nix
 create mode 100644 hosts/pearl/default.nix
 create mode 100644 hosts/pearl/hardware-configuration.nix

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c4a847d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/result
diff --git a/flake.lock b/flake.lock
index 9733c55..2021fa5 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,41 +1,6 @@
 {
   "nodes": {
-    "colmena": {
-      "inputs": {
-        "flake-compat": "flake-compat",
-        "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs",
-        "stable": "stable"
-      },
-      "locked": {
-        "lastModified": 1711386353,
-        "narHash": "sha256-gWEpb8Hybnoqb4O4tmpohGZk6+aerAbJpywKcFIiMlg=",
-        "path": "/nix/store/in94zdj4ls6p21r3q4zzvmbd61g9ap3b-source",
-        "rev": "cd65ef7a25cdc75052fbd04b120aeb066c3881db",
-        "type": "path"
-      },
-      "original": {
-        "id": "colmena",
-        "type": "indirect"
-      }
-    },
     "flake-compat": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1650374568,
-        "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-compat_2": {
       "flake": false,
       "locked": {
         "lastModified": 1696426674,
@@ -52,21 +17,6 @@
       }
     },
     "flake-utils": {
-      "locked": {
-        "lastModified": 1659877975,
-        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_2": {
       "inputs": {
         "systems": "systems"
       },
@@ -84,7 +34,7 @@
         "type": "github"
       }
     },
-    "flake-utils_3": {
+    "flake-utils_2": {
       "inputs": {
         "systems": "systems_2"
       },
@@ -102,7 +52,7 @@
         "type": "github"
       }
     },
-    "flake-utils_4": {
+    "flake-utils_3": {
       "inputs": {
         "systems": "systems_3"
       },
@@ -132,11 +82,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1725298527,
-        "narHash": "sha256-WAttmsNzqkw4tm0Po/ZzeFtp83BvJAnYIbGyBIdGnMU=",
+        "lastModified": 1725337181,
+        "narHash": "sha256-qahlxe7TBQBdpCVahSauLPx/Wp1+HDpFClArt2HNQaI=",
         "ref": "refs/heads/main",
-        "rev": "2f32efbc82c938c3502ce20d2479ea867cc3ed0a",
-        "revCount": 7161,
+        "rev": "d885c814234060679dcd5bd0d9259be39b938be9",
+        "revCount": 7176,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -215,22 +165,6 @@
       }
     },
     "nixpkgs": {
-      "locked": {
-        "lastModified": 1696019113,
-        "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_2": {
       "locked": {
         "lastModified": 1725103162,
         "narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=",
@@ -248,27 +182,10 @@
     },
     "root": {
       "inputs": {
-        "colmena": "colmena",
         "ghostty": "ghostty",
         "ghostty-hm": "ghostty-hm",
         "home-manager": "home-manager",
-        "nixpkgs": "nixpkgs_2"
-      }
-    },
-    "stable": {
-      "locked": {
-        "lastModified": 1696039360,
-        "narHash": "sha256-g7nIUV4uq1TOVeVIDEZLb005suTWCUjSY0zYOlSBsyE=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "32dcb45f66c0487e92db8303a798ebc548cadedc",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-23.05",
-        "repo": "nixpkgs",
-        "type": "github"
+        "nixpkgs": "nixpkgs"
       }
     },
     "systems": {
@@ -321,7 +238,7 @@
         "flake-compat": [
           "ghostty"
         ],
-        "flake-utils": "flake-utils_2",
+        "flake-utils": "flake-utils",
         "nixpkgs": [
           "ghostty",
           "nixpkgs-stable"
@@ -343,8 +260,8 @@
     },
     "zig-overlay": {
       "inputs": {
-        "flake-compat": "flake-compat_2",
-        "flake-utils": "flake-utils_4",
+        "flake-compat": "flake-compat",
+        "flake-utils": "flake-utils_3",
         "nixpkgs": [
           "ghostty",
           "zls",
@@ -367,7 +284,7 @@
     },
     "zls": {
       "inputs": {
-        "flake-utils": "flake-utils_3",
+        "flake-utils": "flake-utils_2",
         "gitignore": "gitignore",
         "langref": "langref",
         "nixpkgs": [
diff --git a/flake.nix b/flake.nix
index adc2cd2..07a7f01 100644
--- a/flake.nix
+++ b/flake.nix
@@ -21,7 +21,6 @@
     {
       self,
       nixpkgs,
-      colmena,
       ghostty,
       ghostty-hm,
       home-manager,
@@ -82,19 +81,21 @@
       devShells = forEachSystem' (
         { system, pkgs, ... }:
         {
-          default = pkgs.mkShell { packages = [ pkgs.colmena ]; };
+          default = pkgs.mkShell { packages = [ ]; };
         }
       );
 
       homeConfigurations = {
         "dln@dinky" = mkHome [ ./home/dln/dinky.nix ];
         "dln@nemo" = mkHome [ ./home/dln/nemo.nix ];
+        "dln@pearl" = mkHome [ ./home/dln/pearl.nix ];
         "lsjostro@nemo" = mkHome [ ./home/lsjostro/nemo.nix ];
       };
 
       nixosConfigurations = {
         dinky = mkHost [ ./hosts/dinky ];
         nemo = mkHost [ ./hosts/nemo ];
+        pearl = mkHost [ ./hosts/pearl ];
       };
     };
 }
diff --git a/home/dln/pearl.nix b/home/dln/pearl.nix
new file mode 100644
index 0000000..18a1715
--- /dev/null
+++ b/home/dln/pearl.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }:
+{
+  imports = [
+    ./home.nix
+  ];
+
+  home.packages = with pkgs; [
+  ];
+}
diff --git a/hosts/pearl/default.nix b/hosts/pearl/default.nix
new file mode 100644
index 0000000..226044c
--- /dev/null
+++ b/hosts/pearl/default.nix
@@ -0,0 +1,111 @@
+{
+  inputs,
+  outputs,
+  lib,
+  config,
+  pkgs,
+  modulesPath,
+  ...
+}:
+{
+  imports = [ ./hardware-configuration.nix ];
+
+  boot.loader.systemd-boot.enable = true;
+  boot.loader.efi.canTouchEfiVariables = true;
+
+  hardware.graphics = {
+    enable = true;
+    extraPackages = with pkgs; [
+      vpl-gpu-rt
+      intel-media-driver
+      vaapiVdpau
+      libvdpau-va-gl
+    ];
+  };
+
+  hardware.enableAllFirmware = true;
+
+  #environment.systemPackages = with pkgs; [
+  #];
+
+  services.printing.enable = true;
+  services.printing.drivers = [ pkgs.brlaser ];
+
+  programs.adb.enable = true;
+
+  networking = {
+    hostName = "pearl";
+    domain = "aarn.patagia.dev";
+    search = [
+      "patagia.dev"
+      "aarn.patagia.dev"
+    ];
+    useDHCP = lib.mkDefault true;
+  };
+
+  networking.networkmanager.enable = true;
+  networking.networkmanager.wifi.backend = "iwd";
+
+  time.timeZone = "Europe/Stockholm";
+
+  users.users.dln = {
+    isNormalUser = true;
+    description = "Daniel Lundin";
+    extraGroups = [
+      "lp"
+      "wheel"
+    ];
+    openssh.authorizedKeys.keys = [
+      "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAILwakA+EeuR23vRhjvjMkzK+FtWIhpnbs7z1pfnBehCUAAAABHNzaDo= dln@dinky"
+      "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJNOBFoU7Cdsgi4KpYRcv7EhR/8kD4DYjEZnwk6urRx7AAAABHNzaDo= dln@nemo"
+    ];
+  };
+
+  patagia = {
+    desktop.enable = true;
+    laptop.enable = true;
+    plymouth.enable = true;
+    podman.enable = false;
+  };
+
+  systemd.services."getty@tty1".enable = false;
+  systemd.services."autovt@tty1".enable = false;
+
+    # Enable the X11 windowing system.
+  services.xserver.enable = true;
+
+  # Enable the GNOME Desktop Environment.
+  services.xserver.displayManager.gdm.enable = true;
+  services.xserver.desktopManager.gnome.enable = true;
+
+  # Configure keymap in X11
+  services.xserver.xkb = {
+    layout = "se";
+    variant = "us";
+  };
+
+  # Configure console keymap
+  console.keyMap = "sv-latin1";
+
+  # Enable sound with pipewire.
+  hardware.pulseaudio.enable = false;
+  security.rtkit.enable = true;
+  services.pipewire = {
+    enable = true;
+    alsa.enable = true;
+    alsa.support32Bit = true;
+    pulse.enable = true;
+    # If you want to use JACK applications, uncomment this
+    #jack.enable = true;
+
+    # use the example session manager (no others are packaged yet so this is enabled by default,
+    # no need to redefine it in your config for now)
+    #media-session.enable = true;
+  };
+
+  nixpkgs.config.allowUnfree = true;
+
+  services.openssh.enable = true;
+
+  system.stateVersion = "24.05"; # Did you read the comment?
+}
diff --git a/hosts/pearl/hardware-configuration.nix b/hosts/pearl/hardware-configuration.nix
new file mode 100644
index 0000000..f1105d5
--- /dev/null
+++ b/hosts/pearl/hardware-configuration.nix
@@ -0,0 +1,38 @@
+# Do not modify this file!  It was generated by ‘nixos-generate-config’
+# and may be overwritten by future invocations.  Please make changes
+# to /etc/nixos/configuration.nix instead.
+{ config, lib, pkgs, modulesPath, ... }:
+
+{
+  imports =
+    [ (modulesPath + "/installer/scan/not-detected.nix")
+    ];
+
+  boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
+  boot.initrd.kernelModules = [ ];
+  boot.kernelModules = [ "kvm-intel" ];
+  boot.extraModulePackages = [ ];
+
+  fileSystems."/" =
+    { device = "/dev/disk/by-uuid/5ab8f3b9-4f74-4bc3-ac8e-3392a6120240";
+      fsType = "ext4";
+    };
+
+  fileSystems."/boot" =
+    { device = "/dev/disk/by-uuid/4C5D-8244";
+      fsType = "vfat";
+      options = [ "fmask=0077" "dmask=0077" ];
+    };
+
+  swapDevices = [ ];
+
+  # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+  # (the default) this is the recommended approach. When using systemd-networkd it's
+  # still possible to use this option, but it's recommended to use it in conjunction
+  # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+  networking.useDHCP = lib.mkDefault true;
+  # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
+
+  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}

From d3be213bd899c9d400350962f5e5c97698ab6bbb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 3 Sep 2024 19:07:26 +0200
Subject: [PATCH 393/656] pearl: setup

---
 common/desktop.nix      |  1 -
 hosts/pearl/apps.nix    | 37 +++++++++++++++++++++++++++++++
 hosts/pearl/default.nix | 49 +++++++++++++++++++++++++----------------
 3 files changed, 67 insertions(+), 20 deletions(-)
 create mode 100644 hosts/pearl/apps.nix

diff --git a/common/desktop.nix b/common/desktop.nix
index bfa8c5f..cb2ee7b 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -50,7 +50,6 @@ in
         defaultFonts = {
           serif = [ "Liberation Serif" ];
           sansSerif = [ "Inter" ];
-          monospace = [ "BerkeleyMono Nerd Font" ];
         };
         hinting.enable = true;
         hinting.style = "slight";
diff --git a/hosts/pearl/apps.nix b/hosts/pearl/apps.nix
new file mode 100644
index 0000000..b856fea
--- /dev/null
+++ b/hosts/pearl/apps.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  pkgs,
+  ...
+}:
+{
+  programs.firefox.enable = true;
+
+  environment.systemPackages = with pkgs; [
+    calibre
+    gimp
+    gnomeExtensions.emoji-copy
+    gnomeExtensions.just-perfection
+    gnomeExtensions.vitals
+    gnome-pomodoro
+    gnome-tweaks
+    hitori
+    inkscape
+    krita
+    moonlight-qt
+    obsidian
+    pavucontrol
+    plexamp
+    signal-desktop
+  ];
+
+  environment.gnome.excludePackages =
+    [
+    ];
+
+  programs.steam = {
+    enable = true;
+    remotePlay.openFirewall = true;
+    dedicatedServer.openFirewall = true;
+    localNetworkGameTransfers.openFirewall = true;
+  };
+}
diff --git a/hosts/pearl/default.nix b/hosts/pearl/default.nix
index 226044c..a44a372 100644
--- a/hosts/pearl/default.nix
+++ b/hosts/pearl/default.nix
@@ -8,7 +8,10 @@
   ...
 }:
 {
-  imports = [ ./hardware-configuration.nix ];
+  imports = [
+    ./hardware-configuration.nix
+    ./apps.nix
+  ];
 
   boot.loader.systemd-boot.enable = true;
   boot.loader.efi.canTouchEfiVariables = true;
@@ -25,14 +28,9 @@
 
   hardware.enableAllFirmware = true;
 
-  #environment.systemPackages = with pkgs; [
-  #];
-
   services.printing.enable = true;
   services.printing.drivers = [ pkgs.brlaser ];
 
-  programs.adb.enable = true;
-
   networking = {
     hostName = "pearl";
     domain = "aarn.patagia.dev";
@@ -48,17 +46,30 @@
 
   time.timeZone = "Europe/Stockholm";
 
-  users.users.dln = {
-    isNormalUser = true;
-    description = "Daniel Lundin";
-    extraGroups = [
-      "lp"
-      "wheel"
-    ];
-    openssh.authorizedKeys.keys = [
-      "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAILwakA+EeuR23vRhjvjMkzK+FtWIhpnbs7z1pfnBehCUAAAABHNzaDo= dln@dinky"
-      "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJNOBFoU7Cdsgi4KpYRcv7EhR/8kD4DYjEZnwk6urRx7AAAABHNzaDo= dln@nemo"
-    ];
+  users.users = {
+    annso = {
+      isNormalUser = true;
+      description = "Ann-Sofie Stenberg";
+      extraGroups = [
+        "lp"
+        "video"
+        "audio"
+        "wheel"
+      ];
+    };
+
+    dln = {
+      isNormalUser = true;
+      description = "Daniel Lundin";
+      extraGroups = [
+        "lp"
+        "wheel"
+      ];
+      openssh.authorizedKeys.keys = [
+        "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAILwakA+EeuR23vRhjvjMkzK+FtWIhpnbs7z1pfnBehCUAAAABHNzaDo= dln@dinky"
+        "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJNOBFoU7Cdsgi4KpYRcv7EhR/8kD4DYjEZnwk6urRx7AAAABHNzaDo= dln@nemo"
+      ];
+    };
   };
 
   patagia = {
@@ -71,7 +82,7 @@
   systemd.services."getty@tty1".enable = false;
   systemd.services."autovt@tty1".enable = false;
 
-    # Enable the X11 windowing system.
+  # Enable the X11 windowing system.
   services.xserver.enable = true;
 
   # Enable the GNOME Desktop Environment.
@@ -81,7 +92,7 @@
   # Configure keymap in X11
   services.xserver.xkb = {
     layout = "se";
-    variant = "us";
+    # variant = "us";
   };
 
   # Configure console keymap

From d40ac202fefab54f8e0dfa4d8fe0acf8497ebf92 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 3 Sep 2024 10:39:59 +0200
Subject: [PATCH 394/656] atuin: move server to atuin.patagia.dev

---
 home/common/atuin.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/atuin.nix b/home/common/atuin.nix
index 6e7f79f..e197b73 100644
--- a/home/common/atuin.nix
+++ b/home/common/atuin.nix
@@ -13,7 +13,7 @@
       search_mode_shell_up_key_binding = "prefix";
       show_help = false;
       style = "compact";
-      sync_address = "https://atuin.aarn.shelman.io";
+      sync_address = "https://atuin.patagia.dev";
       sync.records = true;
 
       stats.common_subcommands = [

From 7af8b78892fde6313146028b0c6e3abfe4520fa2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 3 Sep 2024 10:39:59 +0200
Subject: [PATCH 395/656] nemo: install obs studio

---
 home/dln/nemo.nix      | 11 ++++++++++-
 hosts/nemo/default.nix |  7 ++++++-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index 8095e57..9b63dab 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -8,7 +8,16 @@
   # Host specific user config goes here
   #
   programs.ghostty.settings = {
-    font-size = lib.mkForce 20;
+    font-size = lib.mkForce 18;
+  };
+
+  programs.obs-studio = {
+    enable = true;
+    plugins = with pkgs; [
+      obs-studio-plugins.wlrobs
+      obs-studio-plugins.obs-vaapi
+      obs-studio-plugins.obs-pipewire-audio-capture
+    ];
   };
 
   dconf.settings = {
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 80dee15..dd553b0 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -10,7 +10,10 @@
   imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
 
   boot = {
-    extraModulePackages = with config.boot.kernelPackages; [ nct6687d ];
+    extraModulePackages = with config.boot.kernelPackages; [
+      nct6687d
+      v4l2loopback
+    ];
     initrd.availableKernelModules = [
       "xhci_pci"
       "ahci"
@@ -28,6 +31,7 @@
     ];
     extraModprobeConfig = ''
       options nct6687 force=1
+      options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
     '';
     kernelParams = [ "mitigations=off" ];
   };
@@ -169,6 +173,7 @@
     lm_sensors
     # pkgs.pam_rssh
     openconnect
+    v4l-utils
   ];
 
   programs.coolercontrol.enable = true;

From 04b6a1157fa003945cce191badd570f26411842e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 3 Sep 2024 10:39:59 +0200
Subject: [PATCH 396/656] update

---
 flake.lock | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/flake.lock b/flake.lock
index 2021fa5..eda16f6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -82,11 +82,11 @@
         "zls": "zls"
       },
       "locked": {
-        "lastModified": 1725337181,
-        "narHash": "sha256-qahlxe7TBQBdpCVahSauLPx/Wp1+HDpFClArt2HNQaI=",
+        "lastModified": 1725399065,
+        "narHash": "sha256-QVIt+kIrLkn3B13qBKFlE7a1kHHjt9TEm1vypSNCfyE=",
         "ref": "refs/heads/main",
-        "rev": "d885c814234060679dcd5bd0d9259be39b938be9",
-        "revCount": 7176,
+        "rev": "f0c4afdf9cea34d7b15cbb18736a3bad840cc929",
+        "revCount": 7184,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },

From 1fcacebf5a65e4ed7087133a55997313585c2ab3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 4 Sep 2024 09:58:55 +0200
Subject: [PATCH 397/656] update

---
 flake.lock        | 177 ++--------------------------------------------
 home/dln/nemo.nix |   2 -
 2 files changed, 5 insertions(+), 174 deletions(-)

diff --git a/flake.lock b/flake.lock
index eda16f6..e94b31b 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,21 +1,5 @@
 {
   "nodes": {
-    "flake-compat": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1696426674,
-        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
     "flake-utils": {
       "inputs": {
         "systems": "systems"
@@ -34,42 +18,6 @@
         "type": "github"
       }
     },
-    "flake-utils_2": {
-      "inputs": {
-        "systems": "systems_2"
-      },
-      "locked": {
-        "lastModified": 1710146030,
-        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_3": {
-      "inputs": {
-        "systems": "systems_3"
-      },
-      "locked": {
-        "lastModified": 1705309234,
-        "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
     "ghostty": {
       "inputs": {
         "nixpkgs-stable": [
@@ -78,15 +26,14 @@
         "nixpkgs-unstable": [
           "nixpkgs"
         ],
-        "zig": "zig",
-        "zls": "zls"
+        "zig": "zig"
       },
       "locked": {
-        "lastModified": 1725399065,
-        "narHash": "sha256-QVIt+kIrLkn3B13qBKFlE7a1kHHjt9TEm1vypSNCfyE=",
+        "lastModified": 1725412681,
+        "narHash": "sha256-B5Zuo+f50FBtE8jY1Rx/ZXMLh5jLrfLpSzbkxPx3yso=",
         "ref": "refs/heads/main",
-        "rev": "f0c4afdf9cea34d7b15cbb18736a3bad840cc929",
-        "revCount": 7184,
+        "rev": "3e9163e4c60ed04fd6b2911c9f9304ad4cdb2d9c",
+        "revCount": 7189,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -110,28 +57,6 @@
         "type": "github"
       }
     },
-    "gitignore": {
-      "inputs": {
-        "nixpkgs": [
-          "ghostty",
-          "zls",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1709087332,
-        "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
-        "owner": "hercules-ci",
-        "repo": "gitignore.nix",
-        "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
-        "type": "github"
-      },
-      "original": {
-        "owner": "hercules-ci",
-        "repo": "gitignore.nix",
-        "type": "github"
-      }
-    },
     "home-manager": {
       "inputs": {
         "nixpkgs": [
@@ -152,18 +77,6 @@
         "type": "github"
       }
     },
-    "langref": {
-      "flake": false,
-      "locked": {
-        "narHash": "sha256-O6p2tiKD8ZMhSX+DeA/o5hhAvcPkU2J9lFys/r11peY=",
-        "type": "file",
-        "url": "https://raw.githubusercontent.com/ziglang/zig/0fb2015fd3422fc1df364995f9782dfe7255eccd/doc/langref.html.in"
-      },
-      "original": {
-        "type": "file",
-        "url": "https://raw.githubusercontent.com/ziglang/zig/0fb2015fd3422fc1df364995f9782dfe7255eccd/doc/langref.html.in"
-      }
-    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1725103162,
@@ -203,36 +116,6 @@
         "type": "github"
       }
     },
-    "systems_2": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    },
-    "systems_3": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    },
     "zig": {
       "inputs": {
         "flake-compat": [
@@ -257,56 +140,6 @@
         "repo": "zig-overlay",
         "type": "github"
       }
-    },
-    "zig-overlay": {
-      "inputs": {
-        "flake-compat": "flake-compat",
-        "flake-utils": "flake-utils_3",
-        "nixpkgs": [
-          "ghostty",
-          "zls",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1718539737,
-        "narHash": "sha256-hvQ900gSqzGnJWMRQwv65TixciIbC44iX0Nh5ENRwCU=",
-        "owner": "mitchellh",
-        "repo": "zig-overlay",
-        "rev": "6eb42ce6f85d247b1aecf854c45d80902821d0ad",
-        "type": "github"
-      },
-      "original": {
-        "owner": "mitchellh",
-        "repo": "zig-overlay",
-        "type": "github"
-      }
-    },
-    "zls": {
-      "inputs": {
-        "flake-utils": "flake-utils_2",
-        "gitignore": "gitignore",
-        "langref": "langref",
-        "nixpkgs": [
-          "ghostty",
-          "nixpkgs-stable"
-        ],
-        "zig-overlay": "zig-overlay"
-      },
-      "locked": {
-        "lastModified": 1718930611,
-        "narHash": "sha256-FtfVhs6XHNfSQRQorrrz03nD0LCNp2FCnGllRntHBts=",
-        "owner": "zigtools",
-        "repo": "zls",
-        "rev": "0b9746b60c2020ab948f6556f1c729858b82a0f0",
-        "type": "github"
-      },
-      "original": {
-        "owner": "zigtools",
-        "ref": "master",
-        "repo": "zls",
-        "type": "github"
-      }
     }
   },
   "root": "root",
diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index 9b63dab..46863ff 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -5,8 +5,6 @@
     ./desktop.nix
   ];
 
-  # Host specific user config goes here
-  #
   programs.ghostty.settings = {
     font-size = lib.mkForce 18;
   };

From 369d3792dc490c9d3317185c65fc52977bf4e570 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 7 Sep 2024 20:36:03 +0200
Subject: [PATCH 398/656] update

---
 flake.lock | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/flake.lock b/flake.lock
index e94b31b..0b03aac 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1725412681,
-        "narHash": "sha256-B5Zuo+f50FBtE8jY1Rx/ZXMLh5jLrfLpSzbkxPx3yso=",
+        "lastModified": 1725674415,
+        "narHash": "sha256-8fR9vI1Mi02DBmkqY99v5G6KuuZJCkMm+su7pt5KN3k=",
         "ref": "refs/heads/main",
-        "rev": "3e9163e4c60ed04fd6b2911c9f9304ad4cdb2d9c",
-        "revCount": 7189,
+        "rev": "4501991325810c478ca6452214d773ebf46b899c",
+        "revCount": 7224,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1725180166,
-        "narHash": "sha256-fzssXuGR/mCeGbzM1ExaTqDz7QDGta3WA4jJsZyRruo=",
+        "lastModified": 1725694918,
+        "narHash": "sha256-+HsjshXpqNiJHLaJaK0JnIicJ/a1NquKcfn4YZ3ILgg=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "471e3eb0a114265bcd62d11d58ba8d3421ee68eb",
+        "rev": "aaebdea769a5c10f1c6e50ebdf5924c1a13f0cda",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1725103162,
-        "narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=",
+        "lastModified": 1725634671,
+        "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "12228ff1752d7b7624a54e9c1af4b222b3c1073b",
+        "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
         "type": "github"
       },
       "original": {

From 433787237fbe00242d0fcf981b62d2d15c27fb34 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 8 Sep 2024 13:59:11 +0200
Subject: [PATCH 399/656] update

---
 flake.lock | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/flake.lock b/flake.lock
index 0b03aac..69cae00 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1725694918,
-        "narHash": "sha256-+HsjshXpqNiJHLaJaK0JnIicJ/a1NquKcfn4YZ3ILgg=",
+        "lastModified": 1725781935,
+        "narHash": "sha256-o6LRtdpgBTzev9n243Ktu3rn0/qsv0frFyJwU6vJsdE=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "aaebdea769a5c10f1c6e50ebdf5924c1a13f0cda",
+        "rev": "ec4c6928bbacc89cf10e9c959a7a47cbaad95344",
         "type": "github"
       },
       "original": {

From 2a64fc24e3850fe27fa4b07b8a3273338b83c481 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 8 Sep 2024 14:02:29 +0200
Subject: [PATCH 400/656] nvim: fix indentline glyph

---
 files/config/nvim/lua/plugins/ui.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/files/config/nvim/lua/plugins/ui.lua b/files/config/nvim/lua/plugins/ui.lua
index 0fc1c59..6928f1a 100644
--- a/files/config/nvim/lua/plugins/ui.lua
+++ b/files/config/nvim/lua/plugins/ui.lua
@@ -50,7 +50,7 @@ return {
 		enabled = false,
 	},
 
-	{ "nvimdev/indentmini.nvim", opts = { char = "⸽" } },
+	{ "nvimdev/indentmini.nvim", opts = { char = "│" } },
 
 	{
 		"mvllow/modes.nvim",

From 3e0ab74c99604f76936603d4ccdeb8e7440f204f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 9 Sep 2024 09:40:04 +0200
Subject: [PATCH 401/656] update

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index 69cae00..2e290d4 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1725674415,
-        "narHash": "sha256-8fR9vI1Mi02DBmkqY99v5G6KuuZJCkMm+su7pt5KN3k=",
+        "lastModified": 1725856207,
+        "narHash": "sha256-7s7U8+BetbUdBewwqdzCVxR5nbc2wo+hQKFZw+jKsco=",
         "ref": "refs/heads/main",
-        "rev": "4501991325810c478ca6452214d773ebf46b899c",
-        "revCount": 7224,
+        "rev": "12bf107bcbac28202c5fab828416e8aa43b1b798",
+        "revCount": 7228,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1725781935,
-        "narHash": "sha256-o6LRtdpgBTzev9n243Ktu3rn0/qsv0frFyJwU6vJsdE=",
+        "lastModified": 1725863684,
+        "narHash": "sha256-HmdTBpuCsw35Ii35JUKO6AE6nae+kJliQb0XGd4hoLE=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "ec4c6928bbacc89cf10e9c959a7a47cbaad95344",
+        "rev": "be47a2bdf278c57c2d05e747a13ed31cef54a037",
         "type": "github"
       },
       "original": {

From 663ccea86b399e97babbf5c6a70bda8771832ca7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 9 Sep 2024 19:52:49 +0200
Subject: [PATCH 402/656] update

---
 flake.lock | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/flake.lock b/flake.lock
index 2e290d4..d8f33de 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1725863684,
-        "narHash": "sha256-HmdTBpuCsw35Ii35JUKO6AE6nae+kJliQb0XGd4hoLE=",
+        "lastModified": 1725893417,
+        "narHash": "sha256-fj2LxTZAncL/s5NrtXe1nLfO0XDvRixtCu3kmV9jDPw=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "be47a2bdf278c57c2d05e747a13ed31cef54a037",
+        "rev": "10541f19c584fe9633c921903d8c095d5411e041",
         "type": "github"
       },
       "original": {

From 9d4202d7d287206da917b46eeceb1e1b2073659d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Sep 2024 22:05:37 +0200
Subject: [PATCH 403/656] update

---
 flake.lock | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index d8f33de..32b722f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1725856207,
-        "narHash": "sha256-7s7U8+BetbUdBewwqdzCVxR5nbc2wo+hQKFZw+jKsco=",
+        "lastModified": 1726081898,
+        "narHash": "sha256-IOcXPfrQ/tWgydfoQ0uaql22X1JbILx5EeakvYw/s28=",
         "ref": "refs/heads/main",
-        "rev": "12bf107bcbac28202c5fab828416e8aa43b1b798",
-        "revCount": 7228,
+        "rev": "58b435516fbc1e6644087831cdf49cf4a64ef4c5",
+        "revCount": 7273,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -66,9 +66,12 @@
       "locked": {
         "lastModified": 1725893417,
         "narHash": "sha256-fj2LxTZAncL/s5NrtXe1nLfO0XDvRixtCu3kmV9jDPw=",
+        "lastModified": 1726036828,
+        "narHash": "sha256-ZQHbpyti0jcAKnwQY1lwmooecLmSG6wX1JakQ/eZNeM=",
         "owner": "nix-community",
         "repo": "home-manager",
         "rev": "10541f19c584fe9633c921903d8c095d5411e041",
+        "rev": "8a1671642826633586d12ac3158e463c7a50a112",
         "type": "github"
       },
       "original": {
@@ -79,11 +82,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1725634671,
-        "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
+        "lastModified": 1725983898,
+        "narHash": "sha256-4b3A9zPpxAxLnkF9MawJNHDtOOl6ruL0r6Og1TEDGCE=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
+        "rev": "1355a0cbfeac61d785b7183c0caaec1f97361b43",
         "type": "github"
       },
       "original": {

From 913caf1281b43f0baa885752d55e8274bb44425e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Sep 2024 23:02:19 +0200
Subject: [PATCH 404/656] jj: update to v0.21.0

---
 pkgs/jujutsu-openssh/Cargo.lock  | 647 +++++++++++++------------------
 pkgs/jujutsu-openssh/default.nix |   8 +-
 2 files changed, 279 insertions(+), 376 deletions(-)

diff --git a/pkgs/jujutsu-openssh/Cargo.lock b/pkgs/jujutsu-openssh/Cargo.lock
index f1dc3c5..8d81f33 100644
--- a/pkgs/jujutsu-openssh/Cargo.lock
+++ b/pkgs/jujutsu-openssh/Cargo.lock
@@ -17,6 +17,12 @@ version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
 [[package]]
 name = "ahash"
 version = "0.8.11"
@@ -68,9 +74,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
 
 [[package]]
 name = "anstream"
-version = "0.6.14"
+version = "0.6.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
+checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -83,33 +89,33 @@ dependencies = [
 
 [[package]]
 name = "anstyle"
-version = "1.0.7"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
 
 [[package]]
 name = "anstyle-parse"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
+checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
 dependencies = [
  "utf8parse",
 ]
 
 [[package]]
 name = "anstyle-query"
-version = "1.1.0"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391"
+checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
 dependencies = [
  "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "anstyle-wincon"
-version = "3.0.3"
+version = "3.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
+checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
 dependencies = [
  "anstyle",
  "windows-sys 0.52.0",
@@ -129,19 +135,20 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
 
 [[package]]
 name = "arrayvec"
-version = "0.7.4"
+version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
 
 [[package]]
 name = "assert_cmd"
-version = "2.0.14"
+version = "2.0.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8"
+checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d"
 dependencies = [
  "anstyle",
  "bstr",
  "doc-comment",
+ "libc",
  "predicates",
  "predicates-core",
  "predicates-tree",
@@ -156,9 +163,9 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
 
 [[package]]
 name = "async-trait"
-version = "0.1.81"
+version = "0.1.82"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
+checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -192,7 +199,7 @@ dependencies = [
  "cc",
  "cfg-if",
  "libc",
- "miniz_oxide",
+ "miniz_oxide 0.7.4",
  "object",
  "rustc-demangle",
 ]
@@ -252,45 +259,13 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.6.1"
+version = "1.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
+checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
 dependencies = [
  "serde",
 ]
 
-[[package]]
-name = "camino"
-version = "1.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "cargo-platform"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "cargo_metadata"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592"
-dependencies = [
- "camino",
- "cargo-platform",
- "semver",
- "serde",
- "serde_json",
- "thiserror",
-]
-
 [[package]]
 name = "cassowary"
 version = "0.3.0"
@@ -314,13 +289,13 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.1.2"
+version = "1.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47de7e88bbbd467951ae7f5a6f34f70d1b4d9cfce53d5fd70f74ebe118b3db56"
+checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48"
 dependencies = [
  "jobserver",
  "libc",
- "once_cell",
+ "shlex",
 ]
 
 [[package]]
@@ -382,9 +357,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.13"
+version = "4.5.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc"
+checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -401,9 +376,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.13"
+version = "4.5.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99"
+checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6"
 dependencies = [
  "anstream",
  "anstyle",
@@ -414,9 +389,9 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.5.12"
+version = "4.5.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8670053e87c316345e384ca1f3eba3006fc6355ed8b8a1140d104e109e3df34"
+checksum = "6d7db6eca8c205649e8d3ccd05aa5042b1800a784e56bc7c43524fde8abbfa9b"
 dependencies = [
  "clap",
 ]
@@ -445,15 +420,15 @@ dependencies = [
 
 [[package]]
 name = "clap_lex"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
+checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
 
 [[package]]
 name = "clap_mangen"
-version = "0.2.22"
+version = "0.2.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f50dde5bc0c853d6248de457e5eb6e5a674a54b93810a34ded88d882ca1fe2de"
+checksum = "f17415fd4dfbea46e3274fcd8d368284519b358654772afb700dc2e8d2b24eeb"
 dependencies = [
  "clap",
  "roff",
@@ -467,9 +442,9 @@ checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59"
 
 [[package]]
 name = "colorchoice"
-version = "1.0.1"
+version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
+checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
 
 [[package]]
 name = "compact_str"
@@ -512,15 +487,15 @@ dependencies = [
 
 [[package]]
 name = "core-foundation-sys"
-version = "0.8.6"
+version = "0.8.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.12"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad"
 dependencies = [
  "libc",
 ]
@@ -570,19 +545,6 @@ dependencies = [
  "itertools 0.10.5",
 ]
 
-[[package]]
-name = "crossbeam"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
-dependencies = [
- "crossbeam-channel",
- "crossbeam-deque",
- "crossbeam-epoch",
- "crossbeam-queue",
- "crossbeam-utils",
-]
-
 [[package]]
 name = "crossbeam-channel"
 version = "0.5.13"
@@ -611,15 +573,6 @@ dependencies = [
  "crossbeam-utils",
 ]
 
-[[package]]
-name = "crossbeam-queue"
-version = "0.3.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
-dependencies = [
- "crossbeam-utils",
-]
-
 [[package]]
 name = "crossbeam-utils"
 version = "0.8.20"
@@ -669,26 +622,18 @@ dependencies = [
 
 [[package]]
 name = "dashmap"
-version = "5.5.3"
+version = "6.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+checksum = "804c8821570c3f8b70230c2ba75ffa5c0f9a4189b9a432b6656c536712acae28"
 dependencies = [
  "cfg-if",
+ "crossbeam-utils",
  "hashbrown",
  "lock_api",
  "once_cell",
  "parking_lot_core",
 ]
 
-[[package]]
-name = "deranged"
-version = "0.3.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
-dependencies = [
- "powerfmt",
-]
-
 [[package]]
 name = "diff"
 version = "0.1.13"
@@ -806,14 +751,14 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
 
 [[package]]
 name = "filetime"
-version = "0.2.23"
+version = "0.2.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
+checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall 0.4.1",
- "windows-sys 0.52.0",
+ "libredox",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -824,12 +769,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
 
 [[package]]
 name = "flate2"
-version = "1.0.30"
+version = "1.0.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
+checksum = "9c0596c1eac1f9e04ed902702e9878208b336edc9d6fddc8a48387349bab3666"
 dependencies = [
  "crc32fast",
- "miniz_oxide",
+ "miniz_oxide 0.8.0",
 ]
 
 [[package]]
@@ -945,7 +890,7 @@ dependencies = [
 
 [[package]]
 name = "gen-protos"
-version = "0.20.0"
+version = "0.21.0"
 dependencies = [
  "prost-build",
 ]
@@ -979,8 +924,8 @@ checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
 
 [[package]]
 name = "git2"
-version = "0.18.3"
-source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=8fd23a45f#8fd23a45f4166d4e87debc02d9ba70ef601fe751"
+version = "0.19.0"
+source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=60e29ff0d#60e29ff0d84cdffd9f366455d32606e582a4c378"
 dependencies = [
  "bitflags 2.6.0",
  "libc",
@@ -993,9 +938,9 @@ dependencies = [
 
 [[package]]
 name = "gix"
-version = "0.64.0"
+version = "0.66.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d78414d29fcc82329080166077e0f7689f4016551fdb334d787c3d040fe2634f"
+checksum = "9048b8d1ae2104f045cb37e5c450fc49d5d8af22609386bfc739c11ba88995eb"
 dependencies = [
  "gix-actor",
  "gix-attributes",
@@ -1014,7 +959,6 @@ dependencies = [
  "gix-ignore",
  "gix-index",
  "gix-lock",
- "gix-macros",
  "gix-object",
  "gix-odb",
  "gix-pack",
@@ -1040,23 +984,23 @@ dependencies = [
 
 [[package]]
 name = "gix-actor"
-version = "0.31.5"
+version = "0.32.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0e454357e34b833cc3a00b6efbbd3dd4d18b24b9fb0c023876ec2645e8aa3f2"
+checksum = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665"
 dependencies = [
  "bstr",
  "gix-date",
  "gix-utils",
  "itoa",
  "thiserror",
- "winnow 0.6.13",
+ "winnow 0.6.18",
 ]
 
 [[package]]
 name = "gix-attributes"
-version = "0.22.3"
+version = "0.22.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e37ce99c7e81288c28b703641b6d5d119aacc45c1a6b247156e6249afa486257"
+checksum = "ebccbf25aa4a973dd352564a9000af69edca90623e8a16dad9cbc03713131311"
 dependencies = [
  "bstr",
  "gix-glob",
@@ -1089,9 +1033,9 @@ dependencies = [
 
 [[package]]
 name = "gix-command"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d76867867da891cbe32021ad454e8cae90242f6afb06762e4dd0d357afd1d7b"
+checksum = "dff2e692b36bbcf09286c70803006ca3fd56551a311de450be317a0ab8ea92e7"
 dependencies = [
  "bstr",
  "gix-path",
@@ -1115,9 +1059,9 @@ dependencies = [
 
 [[package]]
 name = "gix-config"
-version = "0.38.0"
+version = "0.40.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28f53fd03d1bf09ebcc2c8654f08969439c4556e644ca925f27cf033bc43e658"
+checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0"
 dependencies = [
  "bstr",
  "gix-config-value",
@@ -1131,14 +1075,14 @@ dependencies = [
  "smallvec",
  "thiserror",
  "unicode-bom",
- "winnow 0.6.13",
+ "winnow 0.6.18",
 ]
 
 [[package]]
 name = "gix-config-value"
-version = "0.14.7"
+version = "0.14.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b328997d74dd15dc71b2773b162cb4af9a25c424105e4876e6d0686ab41c383e"
+checksum = "03f76169faa0dec598eac60f83d7fcdd739ec16596eca8fb144c88973dbe6f8c"
 dependencies = [
  "bitflags 2.6.0",
  "bstr",
@@ -1149,21 +1093,21 @@ dependencies = [
 
 [[package]]
 name = "gix-date"
-version = "0.8.7"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9eed6931f21491ee0aeb922751bd7ec97b4b2fe8fbfedcb678e2a2dce5f3b8c0"
+checksum = "35c84b7af01e68daf7a6bb8bb909c1ff5edb3ce4326f1f43063a5a96d3c3c8a5"
 dependencies = [
  "bstr",
  "itoa",
+ "jiff",
  "thiserror",
- "time",
 ]
 
 [[package]]
 name = "gix-diff"
-version = "0.44.1"
+version = "0.46.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1996d5c8a305b59709467d80617c9fde48d9d75fd1f4179ea970912630886c9d"
+checksum = "92c9afd80fff00f8b38b1c1928442feb4cd6d2232a6ed806b6b193151a3d336c"
 dependencies = [
  "bstr",
  "gix-command",
@@ -1181,9 +1125,9 @@ dependencies = [
 
 [[package]]
 name = "gix-discover"
-version = "0.33.0"
+version = "0.35.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67662731cec3cb31ba3ed2463809493f76d8e5d6c6d245de8b0560438c13450e"
+checksum = "0577366b9567376bc26e815fd74451ebd0e6218814e242f8e5b7072c58d956d2"
 dependencies = [
  "bstr",
  "dunce",
@@ -1207,7 +1151,6 @@ dependencies = [
  "gix-hash",
  "gix-trace",
  "gix-utils",
- "jwalk",
  "libc",
  "once_cell",
  "parking_lot",
@@ -1219,9 +1162,9 @@ dependencies = [
 
 [[package]]
 name = "gix-filter"
-version = "0.11.3"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6547738da28275f4dff4e9f3a0f28509f53f94dd6bd822733c91cb306bca61a"
+checksum = "4121790ae140066e5b953becc72e7496278138d19239be2e63b5067b0843119e"
 dependencies = [
  "bstr",
  "encoding_rs",
@@ -1240,9 +1183,9 @@ dependencies = [
 
 [[package]]
 name = "gix-fs"
-version = "0.11.2"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6adf99c27cdf17b1c4d77680c917e0d94d8783d4e1c73d3be0d1d63107163d7a"
+checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575"
 dependencies = [
  "fastrand",
  "gix-features",
@@ -1251,9 +1194,9 @@ dependencies = [
 
 [[package]]
 name = "gix-glob"
-version = "0.16.4"
+version = "0.16.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa7df15afa265cc8abe92813cd354d522f1ac06b29ec6dfa163ad320575cb447"
+checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111"
 dependencies = [
  "bitflags 2.6.0",
  "bstr",
@@ -1284,9 +1227,9 @@ dependencies = [
 
 [[package]]
 name = "gix-ignore"
-version = "0.11.3"
+version = "0.11.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e6afb8f98e314d4e1adc822449389ada863c174b5707cedd327d67b84dba527"
+checksum = "e447cd96598460f5906a0f6c75e950a39f98c2705fc755ad2f2020c9e937fab7"
 dependencies = [
  "bstr",
  "gix-glob",
@@ -1297,9 +1240,9 @@ dependencies = [
 
 [[package]]
 name = "gix-index"
-version = "0.33.1"
+version = "0.35.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a9a44eb55bd84bb48f8a44980e951968ced21e171b22d115d1cdcef82a7d73f"
+checksum = "0cd4203244444017682176e65fd0180be9298e58ed90bd4a8489a357795ed22d"
 dependencies = [
  "bitflags 2.6.0",
  "bstr",
@@ -1334,22 +1277,11 @@ dependencies = [
  "thiserror",
 ]
 
-[[package]]
-name = "gix-macros"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "999ce923619f88194171a67fb3e6d613653b8d4d6078b529b15a765da0edcc17"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
 [[package]]
 name = "gix-object"
-version = "0.42.3"
+version = "0.44.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25da2f46b4e7c2fa7b413ce4dffb87f69eaf89c2057e386491f4c55cadbfe386"
+checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa"
 dependencies = [
  "bstr",
  "gix-actor",
@@ -1361,14 +1293,14 @@ dependencies = [
  "itoa",
  "smallvec",
  "thiserror",
- "winnow 0.6.13",
+ "winnow 0.6.18",
 ]
 
 [[package]]
 name = "gix-odb"
-version = "0.61.1"
+version = "0.63.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20d384fe541d93d8a3bb7d5d5ef210780d6df4f50c4e684ccba32665a5e3bc9b"
+checksum = "a3158068701c17df54f0ab2adda527f5a6aca38fd5fd80ceb7e3c0a2717ec747"
 dependencies = [
  "arc-swap",
  "gix-date",
@@ -1386,9 +1318,9 @@ dependencies = [
 
 [[package]]
 name = "gix-pack"
-version = "0.51.1"
+version = "0.53.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e0594491fffe55df94ba1c111a6566b7f56b3f8d2e1efc750e77d572f5f5229"
+checksum = "3223aa342eee21e1e0e403cad8ae9caf9edca55ef84c347738d10681676fd954"
 dependencies = [
  "clru",
  "gix-chunk",
@@ -1405,9 +1337,9 @@ dependencies = [
 
 [[package]]
 name = "gix-packetline-blocking"
-version = "0.17.4"
+version = "0.17.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c31d42378a3d284732e4d589979930d0d253360eccf7ec7a80332e5ccb77e14a"
+checksum = "b9802304baa798dd6f5ff8008a2b6516d54b74a69ca2d3a2b9e2d6c3b5556b40"
 dependencies = [
  "bstr",
  "faster-hex",
@@ -1417,9 +1349,9 @@ dependencies = [
 
 [[package]]
 name = "gix-path"
-version = "0.10.9"
+version = "0.10.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d23d5bbda31344d8abc8de7c075b3cf26e5873feba7c4a15d916bce67382bd9"
+checksum = "38d5b8722112fa2fa87135298780bc833b0e9f6c56cc82795d209804b3a03484"
 dependencies = [
  "bstr",
  "gix-trace",
@@ -1430,9 +1362,9 @@ dependencies = [
 
 [[package]]
 name = "gix-pathspec"
-version = "0.7.6"
+version = "0.7.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d307d1b8f84dc8386c4aa20ce0cf09242033840e15469a3ecba92f10cfb5c046"
+checksum = "5d23bf239532b4414d0e63b8ab3a65481881f7237ed9647bb10c1e3cc54c5ceb"
 dependencies = [
  "bitflags 2.6.0",
  "bstr",
@@ -1456,9 +1388,9 @@ dependencies = [
 
 [[package]]
 name = "gix-ref"
-version = "0.45.0"
+version = "0.47.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "636e96a0a5562715153fee098c217110c33a6f8218f08f4687ff99afde159bb5"
+checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5"
 dependencies = [
  "gix-actor",
  "gix-features",
@@ -1472,14 +1404,14 @@ dependencies = [
  "gix-validate",
  "memmap2",
  "thiserror",
- "winnow 0.6.13",
+ "winnow 0.6.18",
 ]
 
 [[package]]
 name = "gix-refspec"
-version = "0.23.1"
+version = "0.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6868f8cd2e62555d1f7c78b784bece43ace40dd2a462daf3b588d5416e603f37"
+checksum = "ebb005f82341ba67615ffdd9f7742c87787544441c88090878393d0682869ca6"
 dependencies = [
  "bstr",
  "gix-hash",
@@ -1491,9 +1423,9 @@ dependencies = [
 
 [[package]]
 name = "gix-revision"
-version = "0.27.2"
+version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01b13e43c2118c4b0537ddac7d0821ae0dfa90b7b8dbf20c711e153fb749adce"
+checksum = "ba4621b219ac0cdb9256883030c3d56a6c64a6deaa829a92da73b9a576825e1e"
 dependencies = [
  "bstr",
  "gix-date",
@@ -1505,9 +1437,9 @@ dependencies = [
 
 [[package]]
 name = "gix-revwalk"
-version = "0.13.2"
+version = "0.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b030ccaab71af141f537e0225f19b9e74f25fefdba0372246b844491cab43e0"
+checksum = "b41e72544b93084ee682ef3d5b31b1ba4d8fa27a017482900e5e044d5b1b3984"
 dependencies = [
  "gix-commitgraph",
  "gix-date",
@@ -1520,9 +1452,9 @@ dependencies = [
 
 [[package]]
 name = "gix-sec"
-version = "0.10.7"
+version = "0.10.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1547d26fa5693a7f34f05b4a3b59a90890972922172653bcb891ab3f09f436df"
+checksum = "0fe4d52f30a737bbece5276fab5d3a8b276dc2650df963e293d0673be34e7a5f"
 dependencies = [
  "bitflags 2.6.0",
  "gix-path",
@@ -1532,9 +1464,9 @@ dependencies = [
 
 [[package]]
 name = "gix-submodule"
-version = "0.12.0"
+version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f2e0f69aa00805e39d39ec80472a7e9da20ed5d73318b27925a2cc198e854fd"
+checksum = "529d0af78cc2f372b3218f15eb1e3d1635a21c8937c12e2dd0b6fc80c2ca874b"
 dependencies = [
  "bstr",
  "gix-config",
@@ -1547,9 +1479,9 @@ dependencies = [
 
 [[package]]
 name = "gix-tempfile"
-version = "14.0.0"
+version = "14.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3b0e276cd08eb2a22e9f286a4f13a222a01be2defafa8621367515375644b99"
+checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa"
 dependencies = [
  "dashmap",
  "gix-fs",
@@ -1567,9 +1499,9 @@ checksum = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e"
 
 [[package]]
 name = "gix-traverse"
-version = "0.39.2"
+version = "0.41.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e499a18c511e71cf4a20413b743b9f5bcf64b3d9e81e9c3c6cd399eae55a8840"
+checksum = "030da39af94e4df35472e9318228f36530989327906f38e27807df305fccb780"
 dependencies = [
  "bitflags 2.6.0",
  "gix-commitgraph",
@@ -1584,9 +1516,9 @@ dependencies = [
 
 [[package]]
 name = "gix-url"
-version = "0.27.4"
+version = "0.27.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2eb9b35bba92ea8f0b5ab406fad3cf6b87f7929aa677ff10aa042c6da621156"
+checksum = "fd280c5e84fb22e128ed2a053a0daeacb6379469be6a85e3d518a0636e160c89"
 dependencies = [
  "bstr",
  "gix-features",
@@ -1608,9 +1540,9 @@ dependencies = [
 
 [[package]]
 name = "gix-validate"
-version = "0.8.5"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82c27dd34a49b1addf193c92070bcbf3beaf6e10f16a78544de6372e146a0acf"
+checksum = "81f2badbb64e57b404593ee26b752c26991910fd0d81fe6f9a71c1a8309b6c86"
 dependencies = [
  "bstr",
  "thiserror",
@@ -1618,9 +1550,9 @@ dependencies = [
 
 [[package]]
 name = "gix-worktree"
-version = "0.34.1"
+version = "0.36.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26f7326ebe0b9172220694ea69d344c536009a9b98fb0f9de092c440f3efe7a6"
+checksum = "c312ad76a3f2ba8e865b360d5cb3aa04660971d16dec6dd0ce717938d903149a"
 dependencies = [
  "bstr",
  "gix-attributes",
@@ -1686,6 +1618,12 @@ version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
 [[package]]
 name = "hex"
 version = "0.4.3"
@@ -1752,9 +1690,9 @@ dependencies = [
 
 [[package]]
 name = "imara-diff"
-version = "0.1.6"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af13c8ceb376860ff0c6a66d83a8cdd4ecd9e464da24621bbffcd02b49619434"
+checksum = "fc9da1a252bd44cd341657203722352efc9bc0c847d06ea6d2dc1cd1135e0a01"
 dependencies = [
  "ahash",
  "hashbrown",
@@ -1762,9 +1700,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.3.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
 dependencies = [
  "equivalent",
  "hashbrown",
@@ -1800,20 +1738,20 @@ dependencies = [
 
 [[package]]
 name = "is-terminal"
-version = "0.4.12"
+version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
+checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.4.0",
  "libc",
  "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "is_terminal_polyfill"
-version = "1.70.0"
+version = "1.70.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
 
 [[package]]
 name = "itertools"
@@ -1848,16 +1786,40 @@ version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
+[[package]]
+name = "jiff"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db2b7379a75544c94b3da32821b0bf41f9062e9970e23b78cc577d0d89676d16"
+dependencies = [
+ "jiff-tzdb-platform",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "jiff-tzdb"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05fac328b3df1c0f18a3c2ab6cb7e06e4e549f366017d796e3e66b6d6889abe6"
+
+[[package]]
+name = "jiff-tzdb-platform"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8da387d5feaf355954c2c122c194d6df9c57d865125a67984bb453db5336940"
+dependencies = [
+ "jiff-tzdb",
+]
+
 [[package]]
 name = "jj-cli"
-version = "0.20.0"
+version = "0.21.0"
 dependencies = [
  "anyhow",
  "assert_cmd",
  "assert_matches",
  "async-trait",
  "bstr",
- "cargo_metadata",
  "chrono",
  "clap",
  "clap-markdown",
@@ -1909,7 +1871,7 @@ dependencies = [
 
 [[package]]
 name = "jj-lib"
-version = "0.20.0"
+version = "0.21.0"
 dependencies = [
  "assert_matches",
  "async-trait",
@@ -1918,6 +1880,7 @@ dependencies = [
  "bstr",
  "chrono",
  "chrono-english",
+ "clru",
  "config",
  "criterion",
  "digest",
@@ -1930,6 +1893,7 @@ dependencies = [
  "glob",
  "hex",
  "ignore",
+ "indexmap",
  "indoc",
  "insta",
  "itertools 0.13.0",
@@ -1967,7 +1931,7 @@ dependencies = [
 
 [[package]]
 name = "jj-lib-proc-macros"
-version = "0.20.0"
+version = "0.21.0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1976,37 +1940,27 @@ dependencies = [
 
 [[package]]
 name = "jobserver"
-version = "0.1.31"
+version = "0.1.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
-version = "0.3.69"
+version = "0.3.70"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
 dependencies = [
  "wasm-bindgen",
 ]
 
-[[package]]
-name = "jwalk"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2735847566356cd2179a2a38264839308f7079fa96e6bd5a42d740460e003c56"
-dependencies = [
- "crossbeam",
- "rayon",
-]
-
 [[package]]
 name = "kstring"
-version = "2.0.0"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"
+checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1"
 dependencies = [
  "static_assertions",
 ]
@@ -2019,14 +1973,14 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "libc"
-version = "0.2.155"
+version = "0.2.158"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
 
 [[package]]
 name = "libgit2-sys"
 version = "0.17.0+1.8.1"
-source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=8fd23a45f#8fd23a45f4166d4e87debc02d9ba70ef601fe751"
+source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=60e29ff0d#60e29ff0d84cdffd9f366455d32606e582a4c378"
 dependencies = [
  "cc",
  "libc",
@@ -2043,13 +1997,14 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
 dependencies = [
  "bitflags 2.6.0",
  "libc",
+ "redox_syscall",
 ]
 
 [[package]]
 name = "libz-sys"
-version = "1.1.18"
+version = "1.1.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e"
+checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647"
 dependencies = [
  "cc",
  "libc",
@@ -2087,9 +2042,9 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
 
 [[package]]
 name = "lru"
-version = "0.12.3"
+version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc"
+checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
 dependencies = [
  "hashbrown",
 ]
@@ -2139,6 +2094,15 @@ dependencies = [
  "adler",
 ]
 
+[[package]]
+name = "miniz_oxide"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+dependencies = [
+ "adler2",
+]
+
 [[package]]
 name = "minus"
 version = "5.6.1"
@@ -2168,11 +2132,11 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "1.0.1"
+version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4"
+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.9",
  "libc",
  "wasi",
  "windows-sys 0.52.0",
@@ -2204,12 +2168,6 @@ dependencies = [
  "winapi",
 ]
 
-[[package]]
-name = "num-conv"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
-
 [[package]]
 name = "num-traits"
 version = "0.2.19"
@@ -2225,24 +2183,15 @@ version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 dependencies = [
- "hermit-abi",
- "libc",
-]
-
-[[package]]
-name = "num_threads"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
-dependencies = [
+ "hermit-abi 0.3.9",
  "libc",
 ]
 
 [[package]]
 name = "object"
-version = "0.36.1"
+version = "0.36.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
+checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9"
 dependencies = [
  "memchr",
 ]
@@ -2279,9 +2228,9 @@ dependencies = [
 
 [[package]]
 name = "openssl-sys"
-version = "0.9.102"
+version = "0.9.103"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
+checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
 dependencies = [
  "cc",
  "libc",
@@ -2320,7 +2269,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall 0.5.2",
+ "redox_syscall",
  "smallvec",
  "windows-targets 0.52.6",
 ]
@@ -2450,23 +2399,20 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2"
 
-[[package]]
-name = "powerfmt"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
-
 [[package]]
 name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
 
 [[package]]
 name = "predicates"
-version = "3.1.0"
+version = "3.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8"
+checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97"
 dependencies = [
  "anstyle",
  "difflib",
@@ -2475,15 +2421,15 @@ dependencies = [
 
 [[package]]
 name = "predicates-core"
-version = "1.0.6"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174"
+checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931"
 
 [[package]]
 name = "predicates-tree"
-version = "1.0.9"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf"
+checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13"
 dependencies = [
  "predicates-core",
  "termtree",
@@ -2579,9 +2525,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.36"
+version = "1.0.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
 dependencies = [
  "proc-macro2",
 ]
@@ -2658,27 +2604,18 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.4.1"
+version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
 dependencies = [
  "bitflags 2.6.0",
 ]
 
 [[package]]
 name = "redox_users"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
+checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
 dependencies = [
  "getrandom",
  "libredox",
@@ -2751,9 +2688,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 
 [[package]]
 name = "roff"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316"
+checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3"
 
 [[package]]
 name = "rpassword"
@@ -2784,9 +2721,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustix"
-version = "0.38.34"
+version = "0.38.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
+checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f"
 dependencies = [
  "bitflags 2.6.0",
  "errno",
@@ -2845,20 +2782,11 @@ version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
-[[package]]
-name = "semver"
-version = "1.0.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
-dependencies = [
- "serde",
-]
-
 [[package]]
 name = "serde"
-version = "1.0.204"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
+checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
 dependencies = [
  "serde_derive",
 ]
@@ -2888,9 +2816,9 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.204"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
+checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2899,9 +2827,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.122"
+version = "1.0.127"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da"
+checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad"
 dependencies = [
  "itoa",
  "memchr",
@@ -2911,18 +2839,18 @@ dependencies = [
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.6"
+version = "0.6.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"
+checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "sha1_smol"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d"
 
 [[package]]
 name = "sha2"
@@ -2950,6 +2878,12 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
 
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
 [[package]]
 name = "signal-hook"
 version = "0.3.17"
@@ -2962,9 +2896,9 @@ dependencies = [
 
 [[package]]
 name = "signal-hook-mio"
-version = "0.2.3"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
+checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd"
 dependencies = [
  "libc",
  "mio 0.8.11",
@@ -2982,9 +2916,9 @@ dependencies = [
 
 [[package]]
 name = "similar"
-version = "2.5.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640"
+checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e"
 
 [[package]]
 name = "slab"
@@ -3069,9 +3003,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.72"
+version = "2.0.77"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3142,7 +3076,7 @@ dependencies = [
 
 [[package]]
 name = "testutils"
-version = "0.20.0"
+version = "0.21.0"
 dependencies = [
  "async-trait",
  "config",
@@ -3196,39 +3130,6 @@ dependencies = [
  "once_cell",
 ]
 
-[[package]]
-name = "time"
-version = "0.3.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
-dependencies = [
- "deranged",
- "itoa",
- "libc",
- "num-conv",
- "num_threads",
- "powerfmt",
- "serde",
- "time-core",
- "time-macros",
-]
-
-[[package]]
-name = "time-core"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
-
-[[package]]
-name = "time-macros"
-version = "0.2.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
-dependencies = [
- "num-conv",
- "time-core",
-]
-
 [[package]]
 name = "timeago"
 version = "0.4.2"
@@ -3262,14 +3163,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.39.2"
+version = "1.40.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1"
+checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
 dependencies = [
  "backtrace",
  "bytes",
  "libc",
- "mio 1.0.1",
+ "mio 1.0.2",
  "parking_lot",
  "pin-project-lite",
  "signal-hook-registry",
@@ -3316,9 +3217,9 @@ dependencies = [
 
 [[package]]
 name = "toml_datetime"
-version = "0.6.6"
+version = "0.6.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
 dependencies = [
  "serde",
 ]
@@ -3553,19 +3454,20 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
 dependencies = [
  "cfg-if",
+ "once_cell",
  "wasm-bindgen-macro",
 ]
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
 dependencies = [
  "bumpalo",
  "log",
@@ -3578,9 +3480,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -3588,9 +3490,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3601,9 +3503,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.92"
+version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
 
 [[package]]
 name = "watchman_client"
@@ -3625,9 +3527,9 @@ dependencies = [
 
 [[package]]
 name = "web-sys"
-version = "0.3.69"
+version = "0.3.70"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
+checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -3635,11 +3537,11 @@ dependencies = [
 
 [[package]]
 name = "whoami"
-version = "1.5.1"
+version = "1.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9"
+checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d"
 dependencies = [
- "redox_syscall 0.4.1",
+ "redox_syscall",
  "wasite",
  "web-sys",
 ]
@@ -3662,11 +3564,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.8"
+version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
 dependencies = [
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -3843,9 +3745,9 @@ dependencies = [
 
 [[package]]
 name = "winnow"
-version = "0.6.13"
+version = "0.6.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1"
+checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
 dependencies = [
  "memchr",
 ]
@@ -3872,6 +3774,7 @@ version = "0.7.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
 dependencies = [
+ "byteorder",
  "zerocopy-derive",
 ]
 
@@ -3907,9 +3810,9 @@ dependencies = [
 
 [[package]]
 name = "zstd-sys"
-version = "2.0.12+zstd.1.5.6"
+version = "2.0.13+zstd.1.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13"
+checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
 dependencies = [
  "cc",
  "pkg-config",
diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
index aeafd76..e6a6912 100644
--- a/pkgs/jujutsu-openssh/default.nix
+++ b/pkgs/jujutsu-openssh/default.nix
@@ -16,18 +16,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "jujutsu-openssh";
-  version = "0.20.0+pr3191.openssh";
+  version = "0.21.0+pr3191.openssh";
 
   src = fetchFromGitHub {
     owner = "dln";
     repo = "jj";
-    rev = "02d38813680f9c78bebad75b3aa69f3523584f1e"; # https://github.com/dln/jj/tree/openssh
-    hash = "sha256-D9H6o1+l2wgDlX1idIXTqq9FHqKb9+lgI7haRUrQlKw=";
+    rev = "5eb51bddb5fe3dbc08fd141cf50c62c73a0e1432"; # https://github.com/dln/jj/tree/openssh
+    hash = "sha256-sKMq8xgb2oJ3gi3cThdyjeQ0lfNfgkv495LcRo8H+uc=";
   };
 
   cargoLock.lockFile = ./Cargo.lock;
   cargoLock.outputHashes = {
-    "git2-0.18.3" = "sha256-3g7ajPfLfuPWh46rIa70wQRWLZ+jZXBApkyPlJULi/I=";
+    "git2-0.19.0" = "sha256-fV8dFChGeDhb20bMyqefpAD5/+raQQ2sMdkEtlA1jaE=";
   };
 
   cargoBuildFlags = [

From c0e0e41004492ddbc81aeff2ae2d1318a8b84874 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Sep 2024 23:56:45 +0200
Subject: [PATCH 405/656] ghostty: disable titlebar

---
 home/common/ghostty.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index b518ff9..caa6992 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -50,6 +50,7 @@ in
 
         window-decoration = false;
         gtk-tabs-location = "bottom";
+        gtk-titlebar = false;
         window-padding-x = 12;
         window-padding-y = 0;
         window-padding-balance = true;

From b1d5eb1fc350e2da681ca42d4e29b5705ac07022 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 12 Sep 2024 00:13:55 +0200
Subject: [PATCH 406/656] nvim: show projects list on startup by default. Add
 C-p for project list.

---
 files/config/nvim/lua/plugins/editor.lua |  5 ++++
 files/config/nvim/lua/plugins/ui.lua     | 30 ++++++++----------------
 2 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/files/config/nvim/lua/plugins/editor.lua b/files/config/nvim/lua/plugins/editor.lua
index e237117..eaf6f32 100644
--- a/files/config/nvim/lua/plugins/editor.lua
+++ b/files/config/nvim/lua/plugins/editor.lua
@@ -22,6 +22,11 @@ return {
 				end,
 				desc = "VCS Files",
 			},
+			{
+				"<C-p>",
+				"<cmd>Telescope projects<cr>",
+				desc = "Projects",
+			},
 		},
 		opts = function(_, opts)
 			local actions = require("telescope.actions")
diff --git a/files/config/nvim/lua/plugins/ui.lua b/files/config/nvim/lua/plugins/ui.lua
index 6928f1a..7645a72 100644
--- a/files/config/nvim/lua/plugins/ui.lua
+++ b/files/config/nvim/lua/plugins/ui.lua
@@ -1,25 +1,7 @@
-local logo = [[
-███████ ██   ██ ███████ ██      ███    ███  █████  ███    ██      ██████  ██████   ██████  ██    ██ ██████ 
-██      ██   ██ ██      ██      ████  ████ ██   ██ ████   ██     ██       ██   ██ ██    ██ ██    ██ ██   ██
-███████ ███████ █████   ██      ██ ████ ██ ███████ ██ ██  ██     ██   ███ ██████  ██    ██ ██    ██ ██████ 
-     ██ ██   ██ ██      ██      ██  ██  ██ ██   ██ ██  ██ ██     ██    ██ ██   ██ ██    ██ ██    ██ ██     
-███████ ██   ██ ███████ ███████ ██      ██ ██   ██ ██   ████      ██████  ██   ██  ██████   ██████  ██     
-]]
-
 return {
 	{
 		"nvimdev/dashboard-nvim",
-		opts = {
-			theme = "hyper",
-			config = {
-				header = vim.split(string.rep("\n", 8) .. logo, "\n"),
-				week_header = { enable = false },
-				packages = { enable = false },
-				project = { enable = false },
-				footer = {},
-				shortcut = {},
-			},
-		},
+		enabled = false,
 	},
 
 	{
@@ -126,7 +108,15 @@ return {
 	},
 
 	{
-		"ahmedkhalf/project.nvim",
+		"DrKJeff16/project.nvim",
+		config = function(_, opts)
+			if vim.fn.argv()[1] == nil then
+				require("project_nvim").setup(opts) -- Workaround for project.nvim not setting up
+				vim.schedule(function()
+					vim.cmd("Telescope projects")
+				end)
+			end
+		end,
 		opts = {
 			exclude_dirs = {
 				"~/.cargo/*",

From e6002533da34f496e49bfc9d1dddcf4f5aba5211 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 14 Sep 2024 10:32:23 +0200
Subject: [PATCH 407/656] dln: install asciinema

---
 home/dln/home.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index e3385c2..7034da0 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -8,6 +8,7 @@ in
     username = "dln";
     homeDirectory = "/home/dln";
     packages = with pkgs; [
+      asciinema
       openconnect
       ouch
     ];

From 7efb24059c712fa917006a329cafdc8f710f1a3f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 14 Sep 2024 10:32:23 +0200
Subject: [PATCH 408/656] fish: add tmux-refresh-env function

---
 home/common/fish.nix | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 4f328ad..64f8eb5 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -16,6 +16,18 @@
     ];
 
     functions = {
+      tmux-refresh-env = {
+        description = "Refresh environment variables from tmux session";
+        body = ''
+          for var in (tmux show-environment | string match -rv '^-')
+            set -l parts (string split -m 1 '=' $var)
+            if test (count $parts) -eq 2
+              set -Ux $parts[1] $parts[2]
+            end
+          end
+        '';
+      };
+
       kubectl = {
         description = "Wraps kubectl in grc";
         wraps = "kubectl";

From c7ca94e3c1ab87b2db1cd02fe70dd00298c350b8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 14 Sep 2024 13:40:04 +0200
Subject: [PATCH 409/656] update

---
 flake.lock | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/flake.lock b/flake.lock
index 32b722f..2f1eabc 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1726081898,
-        "narHash": "sha256-IOcXPfrQ/tWgydfoQ0uaql22X1JbILx5EeakvYw/s28=",
+        "lastModified": 1726286796,
+        "narHash": "sha256-5mop4eJrzPTuEsUaqRZizzjySOx+vK9ZXl7HlJqWh1M=",
         "ref": "refs/heads/main",
-        "rev": "58b435516fbc1e6644087831cdf49cf4a64ef4c5",
-        "revCount": 7273,
+        "rev": "4241eac890b8f4b6bbadf27b2d109ce483813fe9",
+        "revCount": 7314,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,14 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1725893417,
-        "narHash": "sha256-fj2LxTZAncL/s5NrtXe1nLfO0XDvRixtCu3kmV9jDPw=",
-        "lastModified": 1726036828,
-        "narHash": "sha256-ZQHbpyti0jcAKnwQY1lwmooecLmSG6wX1JakQ/eZNeM=",
+        "lastModified": 1726308872,
+        "narHash": "sha256-d4vwO5N4RsLnCY7k5tY9xbdYDWQsY3RDMeUoIa4ms2A=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "10541f19c584fe9633c921903d8c095d5411e041",
-        "rev": "8a1671642826633586d12ac3158e463c7a50a112",
+        "rev": "6c1a461a444e6ccb3f3e42bb627b510c3a722a57",
         "type": "github"
       },
       "original": {
@@ -82,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1725983898,
-        "narHash": "sha256-4b3A9zPpxAxLnkF9MawJNHDtOOl6ruL0r6Og1TEDGCE=",
+        "lastModified": 1726062873,
+        "narHash": "sha256-IiA3jfbR7K/B5+9byVi9BZGWTD4VSbWe8VLpp9B/iYk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "1355a0cbfeac61d785b7183c0caaec1f97361b43",
+        "rev": "4f807e8940284ad7925ebd0a0993d2a1791acb2f",
         "type": "github"
       },
       "original": {

From dc79f572ce012fd91cfab34a8e97dfa9436a6735 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 16 Sep 2024 09:23:06 +0200
Subject: [PATCH 410/656] update

---
 flake.lock | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/flake.lock b/flake.lock
index 2f1eabc..e394562 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1726308872,
-        "narHash": "sha256-d4vwO5N4RsLnCY7k5tY9xbdYDWQsY3RDMeUoIa4ms2A=",
+        "lastModified": 1726440980,
+        "narHash": "sha256-ChhIrjtdu5d83W+YDRH+Ec5g1MmM0xk6hJnkz15Ot7M=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "6c1a461a444e6ccb3f3e42bb627b510c3a722a57",
+        "rev": "a9c9cc6e50f7cbd2d58ccb1cd46a1e06e9e445ff",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1726062873,
-        "narHash": "sha256-IiA3jfbR7K/B5+9byVi9BZGWTD4VSbWe8VLpp9B/iYk=",
+        "lastModified": 1726243404,
+        "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "4f807e8940284ad7925ebd0a0993d2a1791acb2f",
+        "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059",
         "type": "github"
       },
       "original": {

From 4ffb39118aedf36c3d86c1e9c0c83639056ee595 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 17 Sep 2024 11:50:56 +0200
Subject: [PATCH 411/656] update

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index e394562..dce0320 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1726286796,
-        "narHash": "sha256-5mop4eJrzPTuEsUaqRZizzjySOx+vK9ZXl7HlJqWh1M=",
+        "lastModified": 1726527664,
+        "narHash": "sha256-9so8Ke7mZNOh6/cLxn7FIGHbaobzzwWQs47njO9w7gM=",
         "ref": "refs/heads/main",
-        "rev": "4241eac890b8f4b6bbadf27b2d109ce483813fe9",
-        "revCount": 7314,
+        "rev": "0109cb5ba49aa5af0f32b04a0075183242175cd9",
+        "revCount": 7327,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1726243404,
-        "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=",
+        "lastModified": 1726463316,
+        "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059",
+        "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172",
         "type": "github"
       },
       "original": {

From f2bdcd904cb67dbbe509e2e76e5b05f4027e55fb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 17 Sep 2024 14:56:04 +0200
Subject: [PATCH 412/656] tmux: config

---
 home/common/tmux.nix | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/home/common/tmux.nix b/home/common/tmux.nix
index e9552af..6c11008 100644
--- a/home/common/tmux.nix
+++ b/home/common/tmux.nix
@@ -11,16 +11,19 @@
       set -g allow-passthrough on
       set -g default-terminal "tmux-256color"
       set -g display-panes-time 3000
-      set -g history-limit 10000
+      set -g escape-time 10
+      set -g history-limit 50000
+      set -g set-clipboard on
+      set -g set-titles on
+      set -g set-titles-string "#H - #T"
       set -g status off
+      set -g status-interval 30
       set -g status-style "italics,reverse"
       set -g status-left-length 0
       set -g status-right-length 0
       set -g status-left '#W #{pane_current_path}'
       set -g status-right '%F |  %R'
       set -g status off
-      set -g set-titles on
-      set -g set-titles-string "#H - #T"
       set -g update-environment "SSH_AUTH_SOCK"
       setenv -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/ssh-agent"
       setw -g alternate-screen on
@@ -41,6 +44,7 @@
       bind -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 1 scroll-up
       bind -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-down
       bind C-s set-option -g status
+      bind-key ] paste-buffer -p
       bind K confirm kill-server
     '';
   };

From 028321603435ea5741394d59d9b679c646531658 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 19 Sep 2024 16:51:53 +0200
Subject: [PATCH 413/656] Enable fwupd

---
 common/base.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/common/base.nix b/common/base.nix
index 3525ec8..5eb3b4e 100644
--- a/common/base.nix
+++ b/common/base.nix
@@ -22,6 +22,7 @@
   };
 
   services.fstrim.enable = true;
+  services.fwupd.enable = true;
 
   time.timeZone = "Europe/Stockholm";
 

From 0f26b880805a3cd192ec1d1ff832702c0917a45c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 19 Sep 2024 16:51:53 +0200
Subject: [PATCH 414/656] jj: set git branch push prefix. remove unused
 aliases.

---
 home/dln/home.nix | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index 7034da0..1b6c51f 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -40,6 +40,10 @@ in
         key = "/home/dln/.ssh/git_signing_key.pub";
       };
 
+      git = {
+        push-branch-prefix = "dln/push-"
+      };
+
       ui = {
         "default-command" = [
           "log"
@@ -86,14 +90,6 @@ in
           "-r"
           "all()"
         ];
-        b = [
-          "branch"
-          "list"
-        ];
-        n = [
-          "new"
-          "main"
-        ];
         d = [
           "diff"
           "--tool=difftu"

From f5245e6450b3a2e6c4677c717d26a832cbaa4fc1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 19 Sep 2024 16:51:53 +0200
Subject: [PATCH 415/656] Install comma. Remove unused programs.

---
 home/common/devel.nix | 3 +--
 home/dln/home.nix     | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/home/common/devel.nix b/home/common/devel.nix
index 416471c..3a49ea3 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -6,6 +6,7 @@
     cargo
     clang
     codeium
+    comma
     dogdns
     gnumake
     go
@@ -19,10 +20,8 @@
     prettierd
     rust-analyzer
     rustc
-    sqlite
     stylua
     tree-sitter
-    zig
   ];
 
   home.sessionVariables = {
diff --git a/home/dln/home.nix b/home/dln/home.nix
index 1b6c51f..c7e9ab4 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -41,7 +41,7 @@ in
       };
 
       git = {
-        push-branch-prefix = "dln/push-"
+        push-branch-prefix = "dln/push-";
       };
 
       ui = {

From 3bf22d6276f57705ca1f549c3d000a8beacda6fe Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 19 Sep 2024 16:51:53 +0200
Subject: [PATCH 416/656] update

---
 flake.lock | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/flake.lock b/flake.lock
index dce0320..91e038d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1726527664,
-        "narHash": "sha256-9so8Ke7mZNOh6/cLxn7FIGHbaobzzwWQs47njO9w7gM=",
+        "lastModified": 1726894861,
+        "narHash": "sha256-bmPOdKSvE6d3ZaFi4zt6GAfr0z1BherseiS6IRQ6oF0=",
         "ref": "refs/heads/main",
-        "rev": "0109cb5ba49aa5af0f32b04a0075183242175cd9",
-        "revCount": 7327,
+        "rev": "c6bbdfb7bfec3d5f08eef999fa86510b01e18c07",
+        "revCount": 7389,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1726440980,
-        "narHash": "sha256-ChhIrjtdu5d83W+YDRH+Ec5g1MmM0xk6hJnkz15Ot7M=",
+        "lastModified": 1726902823,
+        "narHash": "sha256-Gkc7pwTVLKj4HSvRt8tXNvosl8RS9hrBAEhOjAE0Tt4=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "a9c9cc6e50f7cbd2d58ccb1cd46a1e06e9e445ff",
+        "rev": "14929f7089268481d86b83ed31ffd88713dcd415",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1726463316,
-        "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=",
+        "lastModified": 1726755586,
+        "narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172",
+        "rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e",
         "type": "github"
       },
       "original": {

From 2a1f0398e29fb9f359d4867bb8e45880b8516e07 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 24 Sep 2024 10:23:50 +0200
Subject: [PATCH 417/656] Remove docker/podman-compose

---
 common/nix.nix    |  2 +-
 common/podman.nix |  5 -----
 flake.lock        | 20 ++++++++++----------
 3 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/common/nix.nix b/common/nix.nix
index c03e5e2..17c8f5d 100644
--- a/common/nix.nix
+++ b/common/nix.nix
@@ -20,7 +20,7 @@
         # Workaround for https://github.com/NixOS/nix/issues/9574
         nix-path = config.nix.nixPath;
         substituters = [
-          "https://cache-nixos-org.aarn.shelman.io"
+          # "https://cache-nixos-org.aarn.shelman.io"
           "https://cache.nixos.org/"
         ];
         trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
diff --git a/common/podman.nix b/common/podman.nix
index 5997bd6..717facf 100644
--- a/common/podman.nix
+++ b/common/podman.nix
@@ -19,11 +19,6 @@ in
       fi
     '';
 
-    environment.systemPackages = with pkgs; [
-      docker-compose
-      podman-compose
-    ];
-
     virtualisation = {
       containers = {
         enable = true;
diff --git a/flake.lock b/flake.lock
index 91e038d..c4a8a08 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1726894861,
-        "narHash": "sha256-bmPOdKSvE6d3ZaFi4zt6GAfr0z1BherseiS6IRQ6oF0=",
+        "lastModified": 1727413615,
+        "narHash": "sha256-pa9GcL2RJvHLJ/mOsyNjMZZCf+vAcPATzlybGfT9KT4=",
         "ref": "refs/heads/main",
-        "rev": "c6bbdfb7bfec3d5f08eef999fa86510b01e18c07",
-        "revCount": 7389,
+        "rev": "6d70ee7e2a4230d281cf231bc38560c33b1b0336",
+        "revCount": 7479,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1726902823,
-        "narHash": "sha256-Gkc7pwTVLKj4HSvRt8tXNvosl8RS9hrBAEhOjAE0Tt4=",
+        "lastModified": 1727383923,
+        "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "14929f7089268481d86b83ed31ffd88713dcd415",
+        "rev": "ffe2d07e771580a005e675108212597e5b367d2d",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1726755586,
-        "narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=",
+        "lastModified": 1727122398,
+        "narHash": "sha256-o8VBeCWHBxGd4kVMceIayf5GApqTavJbTa44Xcg5Rrk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e",
+        "rev": "30439d93eb8b19861ccbe3e581abf97bdc91b093",
         "type": "github"
       },
       "original": {

From 68f80d321ad9783820fb47600ed547638a2cad6a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 27 Sep 2024 18:56:13 +0200
Subject: [PATCH 418/656] update

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index c4a8a08..a1b80d8 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1727413615,
-        "narHash": "sha256-pa9GcL2RJvHLJ/mOsyNjMZZCf+vAcPATzlybGfT9KT4=",
+        "lastModified": 1727583959,
+        "narHash": "sha256-PoXw38fIy70oDgJu6ZlImu6kco7z+wOCjLBxNnFrPGs=",
         "ref": "refs/heads/main",
-        "rev": "6d70ee7e2a4230d281cf231bc38560c33b1b0336",
-        "revCount": 7479,
+        "rev": "c2fe2ccc715f8a2b009527b7205fdb6fe393d342",
+        "revCount": 7536,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1727122398,
-        "narHash": "sha256-o8VBeCWHBxGd4kVMceIayf5GApqTavJbTa44Xcg5Rrk=",
+        "lastModified": 1727348695,
+        "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "30439d93eb8b19861ccbe3e581abf97bdc91b093",
+        "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
         "type": "github"
       },
       "original": {

From c72bec3aa30b56d93964c4cb672ff2f6294db555 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 27 Sep 2024 18:56:13 +0200
Subject: [PATCH 419/656] dinky: disable printing but leave configured. Add
 nitrokey.

---
 hosts/dinky/default.nix | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index 58dd239..d2e7681 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -66,14 +66,14 @@
   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
 
   environment.systemPackages = with pkgs; [
-    android-tools
-    android-udev-rules
     mullvad-vpn
   ];
 
-  services.printing.enable = true;
+  services.printing.enable = lib.mkForce false;
   services.printing.drivers = [ pkgs.brlaser ];
 
+  services.udev.packages = [ pkgs.nitrokey-udev-rules ];
+
   programs.adb.enable = true;
 
   networking = {

From 52fe78851bf0ba440df2a78af0df8cde548c4c1c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 27 Sep 2024 18:56:13 +0200
Subject: [PATCH 420/656] dinky: enable gpg agent

---
 home/dln/dinky.nix | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/home/dln/dinky.nix b/home/dln/dinky.nix
index 2a63d27..4742f12 100644
--- a/home/dln/dinky.nix
+++ b/home/dln/dinky.nix
@@ -12,4 +12,10 @@
   };
 
   home.packages = with pkgs; [ calibre ];
+
+  programs.gpg.enable = true;
+  services.gpg-agent = {
+    enable = true;
+    pinentryPackage = pkgs.pinentry-curses;
+  };
 }

From 026d5f813b7cbe530cb963e98956d6a9a534d1cc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 27 Sep 2024 18:56:13 +0200
Subject: [PATCH 421/656] atuin: run as daemon

---
 home/common/atuin.nix | 42 +++++++++++++++++++++++++++++++++++++++++-
 home/dln/home.nix     | 10 ++++++++++
 2 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/home/common/atuin.nix b/home/common/atuin.nix
index e197b73..720459b 100644
--- a/home/common/atuin.nix
+++ b/home/common/atuin.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ lib, pkgs, ... }:
 {
   programs.atuin = {
     enable = true;
@@ -16,6 +16,12 @@
       sync_address = "https://atuin.patagia.dev";
       sync.records = true;
 
+      daemon = {
+        enabled = true;
+        socket_path = "/run/user/1000/atuin.socket"; # FIXME: remove hard coded uid
+        systemd_socket = true;
+      };
+
       stats.common_subcommands = [
         "cargo"
         "git"
@@ -37,4 +43,38 @@
       ];
     };
   };
+
+  systemd.user.services.atuin-daemon = {
+    Unit = {
+      Description = "atuin shell history daemon";
+      Requires = [ "atuin-daemon.socket" ];
+    };
+    Service = {
+      ExecStart = "${lib.getExe pkgs.atuin} daemon";
+      Environment = [ "ATUIN_LOG=info" ];
+      Restart = "on-failure";
+      RestartSteps = 5;
+      RestartMaxDelaySec = 10;
+    };
+    Install = {
+      Also = [ "atuin-daemon.socket" ];
+      WantedBy = [ "default.target" ];
+    };
+  };
+
+  systemd.user.sockets.atuin-daemon = {
+    Unit = {
+      Description = "Unix socket activation for atuin shell history daemon";
+    };
+
+    Socket = {
+      ListenStream = "%t/atuin.socket";
+      SocketMode = "0600";
+      RemoveOnStop = true;
+    };
+
+    Install = {
+      WantedBy = [ "sockets.target" ];
+    };
+  };
 }
diff --git a/home/dln/home.nix b/home/dln/home.nix
index c7e9ab4..d2487f5 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -15,9 +15,19 @@ in
   };
 
   programs.atuin.settings = {
+    show_tabs = false;
+
     cwd_filter = [
       "^~/media"
       "^/home/dln/media"
+      "^/tmp"
+    ];
+
+    history_filter = [
+      "^kubectl create secret.*--from-literal"
+      "^kubectl delete ns"
+      "^kubectl delete namespace"
+      "^talosctl reset"
     ];
   };
 

From 2d58c4714ab14b6fbbe4eeb1f9adb4e2e76409cf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 27 Sep 2024 18:51:25 +0200
Subject: [PATCH 422/656] nemo: enable gpg-agent

---
 home/dln/nemo.nix | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index 46863ff..4a4f79a 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -25,4 +25,12 @@
   };
 
   home.packages = with pkgs; [ calibre ];
+
+  programs.gpg.enable = true;
+
+  services.gpg-agent = {
+    enable = true;
+    enableScDaemon = false;
+    pinentryPackage = pkgs.pinentry-curses;
+  };
 }

From 21c038baf5fa8e2052d4f2eda2bf53f26690710c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 29 Sep 2024 13:52:19 +0200
Subject: [PATCH 423/656] neovim: add nil, nxd langauge servers

couldn't get the mason installed one to work
---
 files/config/nvim/lua/plugins/lsp.lua | 2 ++
 home/common/devel.nix                 | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/files/config/nvim/lua/plugins/lsp.lua b/files/config/nvim/lua/plugins/lsp.lua
index c7c4f6e..f317693 100644
--- a/files/config/nvim/lua/plugins/lsp.lua
+++ b/files/config/nvim/lua/plugins/lsp.lua
@@ -10,6 +10,8 @@ return {
 			-- 	enabled = true,
 			-- },
 			servers = {
+				nil_ls = {},
+				nixd = {},
 				starpls = {},
 				yamlls = {
 					settings = {
diff --git a/home/common/devel.nix b/home/common/devel.nix
index 3a49ea3..2ae0a64 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -13,6 +13,8 @@
     just
     ldns
     minio-client
+    nil
+    nixd
     nixfmt-rfc-style
     nodejs_22
     passage

From 7c2b46120eaa9073e68208647765031b45aa007b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 29 Sep 2024 19:40:08 +0200
Subject: [PATCH 424/656] direnv: hide env diff. load .env files by default.

---
 home/common/utils.nix | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/home/common/utils.nix b/home/common/utils.nix
index 165b7b3..7d5fd93 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -25,6 +25,12 @@
       enable = true;
       nix-direnv.enable = true;
       silent = false;
+      config.global = {
+        hide_env_diff = true;
+        load_dotenv = true;
+        strict_env = true;
+        warn_timeout = "10s";
+      };
     };
 
     eza = {

From adc9fdbba901e669656f3635f237b4601d6a9791 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 29 Sep 2024 19:40:08 +0200
Subject: [PATCH 425/656] jj: fancy status and diff on <M-s> and <M-S>
 respectively

---
 files/config/fish/vcs.fish |  6 ++++--
 home/dln/home.nix          | 10 ++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/files/config/fish/vcs.fish b/files/config/fish/vcs.fish
index ae510d5..4859d3b 100644
--- a/files/config/fish/vcs.fish
+++ b/files/config/fish/vcs.fish
@@ -23,9 +23,11 @@ end
 
 function vcs_status
     if __jj_in_repo
-        jj status
         echo
-        jj log --limit=20 -T builtin_log_comfortable -r "(main..@) | (main..@)-"
+        printf '\e[38;5;240m\u2504%.0s\e[0m' (seq 1 (tput cols)) '\n'
+        jj show --stat
+        printf '\e[38;5;240m\u2504%.0s\e[0m' (seq 1 (tput cols)) '\n'
+        jj log --ignore-working-copy --limit=20 -T builtin_log_comfortable -r "(main..@) | (main..@)-"
     else
         git status -sb
     end
diff --git a/home/dln/home.nix b/home/dln/home.nix
index d2487f5..329f326 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -140,6 +140,16 @@ in
           fg = "bright black";
           bold = false;
         };
+
+        "diff added token" = {
+          bg = "#002200";
+          fg = "#66ffcc";
+          underline = false;
+        };
+        "diff removed token" = {
+          bg = "#220011";
+          underline = true;
+        };
       };
     };
   };

From ca7a0646b520fcb96f32c530bfef659ba4001af2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 29 Sep 2024 20:47:52 +0200
Subject: [PATCH 426/656] lazyjj: upgrade to 0.3.1

---
 pkgs/lazyjj/default.nix | 45 +++++++++++++++++++++--------------------
 1 file changed, 23 insertions(+), 22 deletions(-)

diff --git a/pkgs/lazyjj/default.nix b/pkgs/lazyjj/default.nix
index cf68629..c253e67 100644
--- a/pkgs/lazyjj/default.nix
+++ b/pkgs/lazyjj/default.nix
@@ -1,29 +1,30 @@
 {
   stdenvNoCC,
   fetchzip,
-}: let
-  version = "0.2.1";
+}:
+let
+  version = "0.3.1";
 in
-  stdenvNoCC.mkDerivation {
-    name = "lazyjj";
-    inherit version;
+stdenvNoCC.mkDerivation {
+  name = "lazyjj";
+  inherit version;
 
-    src = fetchzip {
-      url = "https://github.com/Cretezy/lazyjj/releases/download/v0.2.1/lazyjj-v0.2.1-x86_64-unknown-linux-musl.tar.gz";
-      hash = "sha256-yMfGWuzsl94elFxRvGaLA61KBopBnBT3j5pxbCrKl0w=";
-    };
+  src = fetchzip {
+    url = "https://github.com/Cretezy/lazyjj/releases/download/v0.3.1/lazyjj-v0.3.1-x86_64-unknown-linux-musl.tar.gz";
+    hash = "sha256-6R4W6uyq8sns8WLoJxp06xAYaJ0Zn+pZLtwhVIPobmc=";
+  };
 
-    installPhase = ''
-      runHook preInstall
-      mkdir -p $out/bin
-      install -m755 -D $src/lazyjj $out/bin/lazyjj
-      runHook postInstall
-    '';
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    install -m755 -D $src/lazyjj $out/bin/lazyjj
+    runHook postInstall
+  '';
 
-    meta = {
-      homepage = "https://github.com/Cretezy/lazyjj";
-      description = "TUI for jj";
-      mainProgram = "lazyjj";
-      platforms = ["x86_64-linux"];
-    };
-  }
+  meta = {
+    homepage = "https://github.com/Cretezy/lazyjj";
+    description = "TUI for jj";
+    mainProgram = "lazyjj";
+    platforms = [ "x86_64-linux" ];
+  };
+}

From 213feda67bc774738c88038cfbaa82b5a79714e1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 30 Sep 2024 09:29:52 +0200
Subject: [PATCH 427/656] Update. Add helix editor package

---
 flake.lock             | 20 ++++++++++----------
 home/dln/desktop.nix   | 10 ++++++----
 home/dln/home.nix      |  5 +++++
 hosts/nemo/default.nix |  1 +
 4 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/flake.lock b/flake.lock
index a1b80d8..6ff0123 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1727583959,
-        "narHash": "sha256-PoXw38fIy70oDgJu6ZlImu6kco7z+wOCjLBxNnFrPGs=",
+        "lastModified": 1727840326,
+        "narHash": "sha256-yns/VnttWxCuc3TuY+hswCDnnTngp3fBWy2mg4EJfoQ=",
         "ref": "refs/heads/main",
-        "rev": "c2fe2ccc715f8a2b009527b7205fdb6fe393d342",
-        "revCount": 7536,
+        "rev": "03abc18adb29267aa7a3baec77bcf2a6af205b75",
+        "revCount": 7579,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1727383923,
-        "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=",
+        "lastModified": 1727817100,
+        "narHash": "sha256-dlyV9/eiWkm/Y/t2+k4CFZ29tBvCANmJogEYaHeAOTw=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "ffe2d07e771580a005e675108212597e5b367d2d",
+        "rev": "437ec62009fa8ceb684eb447d455ffba25911cf9",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1727348695,
-        "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
+        "lastModified": 1727634051,
+        "narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
+        "rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9",
         "type": "github"
       },
       "original": {
diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index 0da8840..1de95aa 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -5,19 +5,21 @@
   };
 
   home.packages = with pkgs; [
-    audacity
-    bitwig-studio
+    # audacity
+    # bitwig-studio
+    # helvum
+    # reaper
+    cameractrls-gtk4
     dynamic-wallpaper
     gimp-with-plugins
-    helvum
     inkscape
     inputs.ghostty.packages.${pkgs.system}.default
     moonlight-qt
     obsidian
     pavucontrol
     plexamp
-    reaper
     signal-desktop
+    zed-editor
   ];
 
   xdg.desktopEntries = {
diff --git a/home/dln/home.nix b/home/dln/home.nix
index 329f326..a5feb57 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -36,6 +36,11 @@ in
     userEmail = email;
   };
 
+  programs.helix = {
+    enable = true;
+    # extraPackages = [];
+  };
+
   programs.jujutsu = {
     settings = {
       user = {
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index dd553b0..66189a4 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -91,6 +91,7 @@
       "10.1.100.13"
     ];
     firewall.enable = false;
+
     networkmanager.enable = false;
     useDHCP = false;
 

From f1e29fd5f8b624978e86d8a1fe96d3c3fee03091 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 6 Oct 2024 19:47:53 +0200
Subject: [PATCH 428/656] jujutsu: upgrade to 0.22.0

---
 flake.lock                       |  20 +--
 pkgs/jujutsu-openssh/Cargo.lock  | 229 ++++++++++++++++---------------
 pkgs/jujutsu-openssh/default.nix |   6 +-
 3 files changed, 134 insertions(+), 121 deletions(-)

diff --git a/flake.lock b/flake.lock
index 6ff0123..8554e9b 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1727840326,
-        "narHash": "sha256-yns/VnttWxCuc3TuY+hswCDnnTngp3fBWy2mg4EJfoQ=",
+        "lastModified": 1728230852,
+        "narHash": "sha256-JEJ/9E6w4bTPtySEP1WASxemNP9bPALM0KIRyOlf9TA=",
         "ref": "refs/heads/main",
-        "rev": "03abc18adb29267aa7a3baec77bcf2a6af205b75",
-        "revCount": 7579,
+        "rev": "50b52da63856d46ac79a2a115f13ca92a2063730",
+        "revCount": 7618,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1727817100,
-        "narHash": "sha256-dlyV9/eiWkm/Y/t2+k4CFZ29tBvCANmJogEYaHeAOTw=",
+        "lastModified": 1728041527,
+        "narHash": "sha256-03liqiJtk9UP7YQHW4r8MduKCK242FQzud8iWvvlK+o=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "437ec62009fa8ceb684eb447d455ffba25911cf9",
+        "rev": "509dbf8d45606b618e9ec3bbe4e936b7c5bc6c1e",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1727634051,
-        "narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=",
+        "lastModified": 1728018373,
+        "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9",
+        "rev": "bc947f541ae55e999ffdb4013441347d83b00feb",
         "type": "github"
       },
       "original": {
diff --git a/pkgs/jujutsu-openssh/Cargo.lock b/pkgs/jujutsu-openssh/Cargo.lock
index 8d81f33..59484a9 100644
--- a/pkgs/jujutsu-openssh/Cargo.lock
+++ b/pkgs/jujutsu-openssh/Cargo.lock
@@ -123,9 +123,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.86"
+version = "1.0.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
+checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
 
 [[package]]
 name = "arc-swap"
@@ -163,9 +163,9 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
 
 [[package]]
 name = "async-trait"
-version = "0.1.82"
+version = "0.1.83"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
+checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -241,7 +241,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
 dependencies = [
  "memchr",
- "regex-automata 0.4.7",
+ "regex-automata 0.4.8",
  "serde",
 ]
 
@@ -289,9 +289,9 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.1.13"
+version = "1.1.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48"
+checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b"
 dependencies = [
  "jobserver",
  "libc",
@@ -357,9 +357,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.16"
+version = "4.5.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019"
+checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -376,9 +376,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.15"
+version = "4.5.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6"
+checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b"
 dependencies = [
  "anstream",
  "anstyle",
@@ -389,9 +389,9 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.5.24"
+version = "4.5.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d7db6eca8c205649e8d3ccd05aa5042b1800a784e56bc7c43524fde8abbfa9b"
+checksum = "bb31f1f3041ef3636e425b09e588911b72fc5513b2428b5b7df130f497e6a728"
 dependencies = [
  "clap",
 ]
@@ -408,9 +408,9 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.13"
+version = "4.5.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
+checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -493,9 +493,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.13"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad"
+checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
 dependencies = [
  "libc",
 ]
@@ -622,13 +622,13 @@ dependencies = [
 
 [[package]]
 name = "dashmap"
-version = "6.0.1"
+version = "6.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "804c8821570c3f8b70230c2ba75ffa5c0f9a4189b9a432b6656c536712acae28"
+checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
 dependencies = [
  "cfg-if",
  "crossbeam-utils",
- "hashbrown",
+ "hashbrown 0.14.5",
  "lock_api",
  "once_cell",
  "parking_lot_core",
@@ -745,15 +745,15 @@ checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183"
 
 [[package]]
 name = "fastrand"
-version = "2.1.0"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
 
 [[package]]
 name = "filetime"
-version = "0.2.24"
+version = "0.2.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550"
+checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
 dependencies = [
  "cfg-if",
  "libc",
@@ -769,9 +769,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
 
 [[package]]
 name = "flate2"
-version = "1.0.32"
+version = "1.0.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c0596c1eac1f9e04ed902702e9878208b336edc9d6fddc8a48387349bab3666"
+checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
 dependencies = [
  "crc32fast",
  "miniz_oxide 0.8.0",
@@ -890,7 +890,7 @@ dependencies = [
 
 [[package]]
 name = "gen-protos"
-version = "0.21.0"
+version = "0.22.0"
 dependencies = [
  "prost-build",
 ]
@@ -1221,7 +1221,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242"
 dependencies = [
  "gix-hash",
- "hashbrown",
+ "hashbrown 0.14.5",
  "parking_lot",
 ]
 
@@ -1257,7 +1257,7 @@ dependencies = [
  "gix-traverse",
  "gix-utils",
  "gix-validate",
- "hashbrown",
+ "hashbrown 0.14.5",
  "itoa",
  "libc",
  "memmap2",
@@ -1349,9 +1349,9 @@ dependencies = [
 
 [[package]]
 name = "gix-path"
-version = "0.10.10"
+version = "0.10.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38d5b8722112fa2fa87135298780bc833b0e9f6c56cc82795d209804b3a03484"
+checksum = "ebfc4febd088abdcbc9f1246896e57e37b7a34f6909840045a1767c6dafac7af"
 dependencies = [
  "bstr",
  "gix-trace",
@@ -1493,9 +1493,9 @@ dependencies = [
 
 [[package]]
 name = "gix-trace"
-version = "0.1.9"
+version = "0.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e"
+checksum = "6cae0e8661c3ff92688ce1c8b8058b3efb312aba9492bbe93661a21705ab431b"
 
 [[package]]
 name = "gix-traverse"
@@ -1575,15 +1575,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
 [[package]]
 name = "globset"
-version = "0.4.14"
+version = "0.4.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
+checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19"
 dependencies = [
  "aho-corasick",
  "bstr",
  "log",
- "regex-automata 0.4.7",
- "regex-syntax 0.8.4",
+ "regex-automata 0.4.8",
+ "regex-syntax 0.8.5",
 ]
 
 [[package]]
@@ -1606,6 +1606,12 @@ dependencies = [
  "allocator-api2",
 ]
 
+[[package]]
+name = "hashbrown"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
+
 [[package]]
 name = "heck"
 version = "0.5.0"
@@ -1674,15 +1680,15 @@ dependencies = [
 
 [[package]]
 name = "ignore"
-version = "0.4.22"
+version = "0.4.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1"
+checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b"
 dependencies = [
  "crossbeam-deque",
  "globset",
  "log",
  "memchr",
- "regex-automata 0.4.7",
+ "regex-automata 0.4.8",
  "same-file",
  "walkdir",
  "winapi-util",
@@ -1695,17 +1701,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fc9da1a252bd44cd341657203722352efc9bc0c847d06ea6d2dc1cd1135e0a01"
 dependencies = [
  "ahash",
- "hashbrown",
+ "hashbrown 0.14.5",
 ]
 
 [[package]]
 name = "indexmap"
-version = "2.5.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
+checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
 dependencies = [
  "equivalent",
- "hashbrown",
+ "hashbrown 0.15.0",
 ]
 
 [[package]]
@@ -1716,9 +1722,9 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
 
 [[package]]
 name = "insta"
-version = "1.39.0"
+version = "1.40.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5"
+checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60"
 dependencies = [
  "console",
  "lazy_static",
@@ -1788,9 +1794,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "jiff"
-version = "0.1.8"
+version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db2b7379a75544c94b3da32821b0bf41f9062e9970e23b78cc577d0d89676d16"
+checksum = "437651126da47900d4d70255ab15f5c69510ca4e0d88c9f01b5b8d41a45c3a9b"
 dependencies = [
  "jiff-tzdb-platform",
  "windows-sys 0.59.0",
@@ -1813,7 +1819,7 @@ dependencies = [
 
 [[package]]
 name = "jj-cli"
-version = "0.21.0"
+version = "0.22.0"
 dependencies = [
  "anyhow",
  "assert_cmd",
@@ -1835,7 +1841,6 @@ dependencies = [
  "futures 0.3.30",
  "git2",
  "gix",
- "hex",
  "indexmap",
  "indoc",
  "insta",
@@ -1871,7 +1876,7 @@ dependencies = [
 
 [[package]]
 name = "jj-lib"
-version = "0.21.0"
+version = "0.22.0"
 dependencies = [
  "assert_matches",
  "async-trait",
@@ -1931,7 +1936,7 @@ dependencies = [
 
 [[package]]
 name = "jj-lib-proc-macros"
-version = "0.21.0"
+version = "0.22.0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1973,9 +1978,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "libc"
-version = "0.2.158"
+version = "0.2.159"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
 
 [[package]]
 name = "libgit2-sys"
@@ -2002,9 +2007,9 @@ dependencies = [
 
 [[package]]
 name = "libz-sys"
-version = "1.1.19"
+version = "1.1.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647"
+checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472"
 dependencies = [
  "cc",
  "libc",
@@ -2046,7 +2051,7 @@ version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
 dependencies = [
- "hashbrown",
+ "hashbrown 0.14.5",
 ]
 
 [[package]]
@@ -2189,20 +2194,21 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.36.3"
+version = "0.36.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9"
+checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "once_cell"
-version = "1.19.0"
+version = "1.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
 dependencies = [
  "parking_lot_core",
+ "portable-atomic",
 ]
 
 [[package]]
@@ -2219,9 +2225,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
 name = "openssl-src"
-version = "300.3.1+3.3.1"
+version = "300.3.2+3.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91"
+checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b"
 dependencies = [
  "cc",
 ]
@@ -2294,9 +2300,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pest"
-version = "2.7.11"
+version = "2.7.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95"
+checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9"
 dependencies = [
  "memchr",
  "thiserror",
@@ -2305,9 +2311,9 @@ dependencies = [
 
 [[package]]
 name = "pest_derive"
-version = "2.7.11"
+version = "2.7.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a"
+checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0"
 dependencies = [
  "pest",
  "pest_generator",
@@ -2315,9 +2321,9 @@ dependencies = [
 
 [[package]]
 name = "pest_generator"
-version = "2.7.11"
+version = "2.7.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183"
+checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e"
 dependencies = [
  "pest",
  "pest_meta",
@@ -2328,9 +2334,9 @@ dependencies = [
 
 [[package]]
 name = "pest_meta"
-version = "2.7.11"
+version = "2.7.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f"
+checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f"
 dependencies = [
  "once_cell",
  "pest",
@@ -2399,6 +2405,12 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2"
 
+[[package]]
+name = "portable-atomic"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"
+
 [[package]]
 name = "ppv-lite86"
 version = "0.2.20"
@@ -2437,9 +2449,9 @@ dependencies = [
 
 [[package]]
 name = "pretty_assertions"
-version = "1.4.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
+checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
 dependencies = [
  "diff",
  "yansi",
@@ -2447,9 +2459,9 @@ dependencies = [
 
 [[package]]
 name = "prettyplease"
-version = "0.2.20"
+version = "0.2.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
+checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
 dependencies = [
  "proc-macro2",
  "syn",
@@ -2644,14 +2656,14 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.6"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-automata 0.4.7",
- "regex-syntax 0.8.4",
+ "regex-automata 0.4.8",
+ "regex-syntax 0.8.5",
 ]
 
 [[package]]
@@ -2665,13 +2677,13 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.7"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.8.4",
+ "regex-syntax 0.8.5",
 ]
 
 [[package]]
@@ -2682,9 +2694,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.4"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 
 [[package]]
 name = "roff"
@@ -2721,9 +2733,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustix"
-version = "0.38.35"
+version = "0.38.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f"
+checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
 dependencies = [
  "bitflags 2.6.0",
  "errno",
@@ -2784,9 +2796,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "serde"
-version = "1.0.209"
+version = "1.0.210"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
+checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
 dependencies = [
  "serde_derive",
 ]
@@ -2816,9 +2828,9 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.209"
+version = "1.0.210"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
+checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2827,9 +2839,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.127"
+version = "1.0.128"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad"
+checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
 dependencies = [
  "itoa",
  "memchr",
@@ -3003,9 +3015,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.77"
+version = "2.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3014,9 +3026,9 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.12.0"
+version = "3.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
+checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
 dependencies = [
  "cfg-if",
  "fastrand",
@@ -3027,12 +3039,12 @@ dependencies = [
 
 [[package]]
 name = "terminal_size"
-version = "0.3.0"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
+checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef"
 dependencies = [
  "rustix",
- "windows-sys 0.48.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -3076,7 +3088,7 @@ dependencies = [
 
 [[package]]
 name = "testutils"
-version = "0.21.0"
+version = "0.22.0"
 dependencies = [
  "async-trait",
  "config",
@@ -3085,6 +3097,7 @@ dependencies = [
  "hex",
  "itertools 0.13.0",
  "jj-lib",
+ "pollster",
  "rand",
  "tempfile",
 ]
@@ -3102,18 +3115,18 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.63"
+version = "1.0.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.63"
+version = "1.0.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3382,9 +3395,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-width"
-version = "0.1.13"
+version = "0.1.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
 
 [[package]]
 name = "url"
@@ -3764,9 +3777,9 @@ dependencies = [
 
 [[package]]
 name = "yansi"
-version = "0.5.1"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
 
 [[package]]
 name = "zerocopy"
diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
index e6a6912..8035f56 100644
--- a/pkgs/jujutsu-openssh/default.nix
+++ b/pkgs/jujutsu-openssh/default.nix
@@ -16,13 +16,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "jujutsu-openssh";
-  version = "0.21.0+pr3191.openssh";
+  version = "0.22.0+pr3191.openssh";
 
   src = fetchFromGitHub {
     owner = "dln";
     repo = "jj";
-    rev = "5eb51bddb5fe3dbc08fd141cf50c62c73a0e1432"; # https://github.com/dln/jj/tree/openssh
-    hash = "sha256-sKMq8xgb2oJ3gi3cThdyjeQ0lfNfgkv495LcRo8H+uc=";
+    rev = "da04712b5735fadb0d9c164f301723a4f9830936"; # https://github.com/dln/jj/tree/openssh
+    hash = "sha256-IhUJPH/h6Gm8zv7Ps1UxeMSqYAt1FO2ZMReLEAoOVmk=";
   };
 
   cargoLock.lockFile = ./Cargo.lock;

From 6b386be43b031fe7f2c365c9cb2d9fdb72a4ad31 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 6 Oct 2024 22:08:36 +0200
Subject: [PATCH 429/656] jj: branch -> bookmark

---
 files/config/fish/jj.fish | 44 +++++++++++++++++++--------------------
 home/common/fish.nix      |  2 +-
 home/dln/home.nix         |  2 +-
 3 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/files/config/fish/jj.fish b/files/config/fish/jj.fish
index 78be3e2..9a6257e 100644
--- a/files/config/fish/jj.fish
+++ b/files/config/fish/jj.fish
@@ -104,27 +104,27 @@ function __jj_changes
         -T 'separate("\t", change_id.shortest(), if(description, description.first_line(), "(no description set)")) ++ "\n"'
 end
 
-function __jj_branches
+function __jj_bookmarks
     set -f filter $argv[1]
     if string length --quiet -- $argv[2]
-        __jj branch list --all-remotes -r "$argv[2]" \
-            -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted branch)\") ++ \"\n\")"
+        __jj bookmark list --all-remotes -r "$argv[2]" \
+            -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted bookmark)\") ++ \"\n\")"
     else
-        __jj branch list --all-remotes \
-            -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted branch)\") ++ \"\n\")"
+        __jj bookmark list --all-remotes \
+            -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted bookmark)\") ++ \"\n\")"
     end
 end
 
-function __jj_all_branches
-    __jj_branches '!remote || !remote.starts_with("git")' $argv[1]
+function __jj_all_bookmarks
+    __jj_bookmarks '!remote || !remote.starts_with("git")' $argv[1]
 end
 
-function __jj_local_branches
-    __jj_branches '!remote' ''
+function __jj_local_bookmarks
+    __jj_bookmarks '!remote' ''
 end
 
-function __jj_remote_branches
-    __jj_branches 'remote && !remote.starts_with("git")' ''
+function __jj_remote_bookmarks
+    __jj_bookmarks 'remote && !remote.starts_with("git")' ''
 end
 
 function __jj_all_changes
@@ -134,13 +134,13 @@ function __jj_all_changes
         set -f REV "all()"
     end
     __jj_changes $REV
-    __jj_all_branches $REV
+    __jj_all_bookmarks $REV
 end
 
 function __jj_mutable_changes
     set -f REV "mutable()"
     __jj_changes $REV
-    __jj_all_branches $REV
+    __jj_all_bookmarks $REV
 end
 
 function __jj_revision_modified_files
@@ -302,7 +302,7 @@ complete -f -c jj -n '__jj_seen_subcommand_from obslog' -s r -l revision -rka '(
 complete -f -c jj -n '__jj_seen_subcommand_from parallelize' -ka '(__jj_mutable_changes)'
 complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s r -l revisions -rka '(__jj_mutable_changes)'
 complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s s -l source -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s b -l branch -rka '(__jj_mutable_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s b -l bookmark -rka '(__jj_mutable_changes)'
 complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s d -l destination -rka '(__jj_all_changes)'
 complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s A -l after -l insert-after -rka '(__jj_all_changes)'
 complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s B -l before -l insert-before -rka '(__jj_mutable_changes)'
@@ -317,18 +317,18 @@ complete -f -c jj -n '__jj_seen_subcommand_from squash' -l from -rka '(__jj_muta
 complete -f -c jj -n '__jj_seen_subcommand_from squash' -l to -l into -rka '(__jj_mutable_changes)'
 complete -f -c jj -n '__jj_seen_subcommand_from unsquash' -s r -l revision -rka '(__jj_mutable_changes)'
 
-# Branches.
-complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from delete forget rename set d f r s' -ka '(__jj_local_branches)'
-complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from track t' -ka '(__jj_branches "remote && !tracked" "")'
-complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from untrack' -ka '(__jj_branches "remote && tracked && !remote.starts_with(\"git\")" "")'
-complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from create move set c m s' -s r -l revision -kra '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from move' -l from -rka '(__jj_changes "all()")'
-complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from move' -l to -rka '(__jj_changes "all()")'
+# Bookmarks
+complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from delete forget rename set d f r s' -ka '(__jj_local_bookmarks)'
+complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from track t' -ka '(__jj_bookmarks "remote && !tracked" "")'
+complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from untrack' -ka '(__jj_bookmarks "remote && tracked && !remote.starts_with(\"git\")" "")'
+complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from create move set c m s' -s r -l revision -kra '(__jj_all_changes)'
+complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from move' -l from -rka '(__jj_changes "all()")'
+complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from move' -l to -rka '(__jj_changes "all()")'
 
 # Git.
 complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from push' -s c -l change -kra '(__jj_changes "all()")'
 complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from push' -s r -l revisions -kra '(__jj_changes "all()")'
-complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -s b -l branch -rka '(__jj_local_branches)'
+complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -s b -l bookmark -rka '(__jj_local_bookmarks)'
 complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -l remote -rka '(__jj_remotes)'
 complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from remote; and __jj_seen_subcommand_from remove rename set-url' -ka '(__jj_remotes)'
 
diff --git a/home/common/fish.nix b/home/common/fish.nix
index 64f8eb5..e91cb4d 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -90,7 +90,7 @@
                         ),
                         "(no description set)"
                     ),
-                    branches.join(", "),
+                    bookmarks.join(", "),
                     commit_id.shortest(),
                     if(conflict, "(conflict)"),
                     if(empty, "(empty)"),
diff --git a/home/dln/home.nix b/home/dln/home.nix
index a5feb57..d566360 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -56,7 +56,7 @@ in
       };
 
       git = {
-        push-branch-prefix = "dln/push-";
+        push-bookmark-prefix = "dln/push-";
       };
 
       ui = {

From 39dcb58a9bc88c50892ca1bf6229886fa0d254ec Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 6 Oct 2024 23:00:01 +0200
Subject: [PATCH 430/656] fish: show command duration after longer command

---
 home/common/fish.nix | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index e91cb4d..239fe59 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -107,6 +107,12 @@
 
       fish_right_prompt.body = ''
         fish_jj_prompt || fish_vcs_prompt
+        if test $CMD_DURATION -gt 3000
+          # Show duration of the last command in seconds
+          set duration (echo "$CMD_DURATION 1000" | awk '{printf "%.1fs", $1 / $2}')
+          echo " ⏳$duration"
+        end
+
       '';
 
       transient_prompt_func.body = ''

From c07fe99a2ed2d9f29f1f67a4476875b6e5e158be Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 12 Oct 2024 13:06:20 +0200
Subject: [PATCH 431/656] jj: branches -> bookmarks

---
 flake.lock        | 20 ++++++++++----------
 home/dln/home.nix |  2 +-
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/flake.lock b/flake.lock
index 8554e9b..9b112dc 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1728230852,
-        "narHash": "sha256-JEJ/9E6w4bTPtySEP1WASxemNP9bPALM0KIRyOlf9TA=",
+        "lastModified": 1728604055,
+        "narHash": "sha256-qFzvnwoWhGob+Huh3RlCxC+j16uF0LQKKV4dJxY4nDQ=",
         "ref": "refs/heads/main",
-        "rev": "50b52da63856d46ac79a2a115f13ca92a2063730",
-        "revCount": 7618,
+        "rev": "c26d1cb28eb5491e05ccbcff075a0eedd09ebaaa",
+        "revCount": 7679,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1728041527,
-        "narHash": "sha256-03liqiJtk9UP7YQHW4r8MduKCK242FQzud8iWvvlK+o=",
+        "lastModified": 1728726232,
+        "narHash": "sha256-8ZWr1HpciQsrFjvPMvZl0W+b0dilZOqXPoKa2Ux36bc=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "509dbf8d45606b618e9ec3bbe4e936b7c5bc6c1e",
+        "rev": "d57112db877f07387ce7104b5ac346ede556d2d7",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1728018373,
-        "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=",
+        "lastModified": 1728492678,
+        "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "bc947f541ae55e999ffdb4013441347d83b00feb",
+        "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
         "type": "github"
       },
       "original": {
diff --git a/home/dln/home.nix b/home/dln/home.nix
index d566360..929189e 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -130,7 +130,7 @@ in
       "revset-aliases" = {
         # Prevent rewriting commits on main@origin and commits authored by other users;
         "user(x)" = "author(x) | committer(x)";
-        "trunk()" = "latest((present(main) | present(master)) & remote_branches())";
+        "trunk()" = "latest((present(main) | present(master)) & remote_bookmarks())";
         "open" = "(mine() ~ ::trunk()) ~ heads(empty())";
         "wip" = ''description("wip: ")'';
         "ready" = "open() ~ (wip::)";

From 81e8bca1664c4345fe7c5687be6297b9c40087d1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 12 Oct 2024 13:24:53 +0200
Subject: [PATCH 432/656] fish: confirm before poweroff, reboot, shutdown

---
 home/common/fish.nix | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 239fe59..2166133 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -16,6 +16,33 @@
     ];
 
     functions = {
+      confirm = {
+        description = "Ask for confirmation";
+        argumentNames = [ "message" ];
+        body = ''
+          read -l -p 'printf "\\e[31;1m$message\\e[0m (y/N) "' confirm
+          test "$confirm" = 'y'
+        '';
+      };
+
+      poweroff = {
+        description = "Wraps poweroff to first prompt for confirmation";
+        wraps = "poweroff";
+        body = ''confirm "⚠ Really poweroff $(hostname)?" && command poweroff $argv'';
+      };
+
+      reboot = {
+        description = "Wraps reboot to first prompt for confirmation";
+        wraps = "reboot";
+        body = ''confirm "⚠ Really reboot $(hostname)?" && command reboot $argv'';
+      };
+
+      shutdown = {
+        description = "Wraps shutdown to first prompt for confirmation";
+        wraps = "shutdown";
+        body = ''confirm "⚠ Really shutdown $(hostname)?" && command shutdown $argv'';
+      };
+
       tmux-refresh-env = {
         description = "Refresh environment variables from tmux session";
         body = ''

From 62f93b8d5444c73aaf206c4a7442bf5f21946f7e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 18 Oct 2024 10:38:31 +0200
Subject: [PATCH 433/656] update

---
 flake.lock | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/flake.lock b/flake.lock
index 9b112dc..29f3a49 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1728604055,
-        "narHash": "sha256-qFzvnwoWhGob+Huh3RlCxC+j16uF0LQKKV4dJxY4nDQ=",
+        "lastModified": 1729220096,
+        "narHash": "sha256-4erPSUsLVTTbdAXAjKfl7FpVxohmDSL0zWfewff7jcc=",
         "ref": "refs/heads/main",
-        "rev": "c26d1cb28eb5491e05ccbcff075a0eedd09ebaaa",
-        "revCount": 7679,
+        "rev": "913c4b5801b0d3881eabbe93dec5a2c40fefe65f",
+        "revCount": 7730,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1728726232,
-        "narHash": "sha256-8ZWr1HpciQsrFjvPMvZl0W+b0dilZOqXPoKa2Ux36bc=",
+        "lastModified": 1729174520,
+        "narHash": "sha256-QxCAdgQdeIOaCiE0Sr23s9lD0+T1b/wuz5pSiGwNrCQ=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "d57112db877f07387ce7104b5ac346ede556d2d7",
+        "rev": "e78cbb20276f09c1802e62d2f77fc93ec32da268",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1728492678,
-        "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
+        "lastModified": 1728888510,
+        "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
+        "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
         "type": "github"
       },
       "original": {

From ad64ae1ecc2824916f7fe549837d3f31ea39f134 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 18 Oct 2024 10:38:31 +0200
Subject: [PATCH 434/656] clean up flake.nix

---
 flake.nix | 54 +++++++++++++++++-------------------------------------
 1 file changed, 17 insertions(+), 37 deletions(-)

diff --git a/flake.nix b/flake.nix
index 07a7f01..9e7b129 100644
--- a/flake.nix
+++ b/flake.nix
@@ -18,72 +18,52 @@
   };
 
   outputs =
-    {
+    inputs@{
       self,
       nixpkgs,
-      ghostty,
       ghostty-hm,
       home-manager,
       ...
-    }@inputs:
+    }:
     let
       inherit (self) outputs;
 
+      system = "x86_64-linux";
+
+      pkgs = nixpkgs.legacyPackages.${system};
+
       mkHome =
         modules:
         home-manager.lib.homeManagerConfiguration {
+          inherit pkgs;
+          extraSpecialArgs = {
+            inherit inputs outputs;
+          };
           modules = [
             ghostty-hm.homeModules.default
             ./home/common
           ] ++ modules;
-          pkgs = nixpkgs.legacyPackages.x86_64-linux;
-          extraSpecialArgs = {
-            inherit inputs outputs;
-          };
         };
 
       mkHost =
         modules:
         nixpkgs.lib.nixosSystem {
+          inherit system;
           specialArgs = {
             inherit inputs outputs;
           };
-          system = "x86_64-linux";
           modules = [ ./common ] ++ modules;
         };
-
-      supportedSystems = [
-        "x86_64-linux"
-        "aarch64-linux"
-      ];
-      forEachSystem =
-        f:
-        builtins.listToAttrs (
-          map (system: {
-            name = system;
-            value = f system;
-          }) supportedSystems
-        );
-      systemBits = forEachSystem (system: rec {
-        inherit system;
-        pkgs = import nixpkgs {
-          localSystem = system;
-          overlays = [ ];
-        };
-      });
-
-      forEachSystem' = f: forEachSystem (system: (f systemBits.${system}));
-      inherit (nixpkgs) lib;
     in
     {
       overlays = import ./overlays { inherit inputs outputs; };
 
-      devShells = forEachSystem' (
-        { system, pkgs, ... }:
-        {
-          default = pkgs.mkShell { packages = [ ]; };
-        }
-      );
+      devShell.${system} = pkgs.mkShell {
+        packages = with pkgs; [
+          just
+          nh
+        ];
+      };
 
       homeConfigurations = {
         "dln@dinky" = mkHome [ ./home/dln/dinky.nix ];

From c9f5febd942b4d7144b69dce3e38b10e71961ce6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 14 Oct 2024 09:21:25 +0200
Subject: [PATCH 435/656] Add stable nixpkgs. Use that for Calibre (python/qt
 is broken)

---
 common/nix.nix        |  4 +++-
 flake.lock            | 27 ++++++++++++++++++++++-----
 flake.nix             | 35 ++++++++++++++++++++++++++---------
 home/common/devel.nix |  1 +
 home/common/nix.nix   |  6 +++++-
 home/dln/nemo.nix     |  2 +-
 6 files changed, 58 insertions(+), 17 deletions(-)

diff --git a/common/nix.nix b/common/nix.nix
index 17c8f5d..f5b4c2f 100644
--- a/common/nix.nix
+++ b/common/nix.nix
@@ -46,5 +46,7 @@
   };
   programs.nix-ld.enable = true;
 
-  environment.systemPackages = with pkgs; [ nvd ];
+  environment.systemPackages = with pkgs; [
+    nvd
+  ];
 }
diff --git a/flake.lock b/flake.lock
index 29f3a49..b2cc97b 100644
--- a/flake.lock
+++ b/flake.lock
@@ -21,10 +21,10 @@
     "ghostty": {
       "inputs": {
         "nixpkgs-stable": [
-          "nixpkgs"
+          "nixpkgs-stable"
         ],
         "nixpkgs-unstable": [
-          "nixpkgs"
+          "nixpkgs-unstable"
         ],
         "zig": "zig"
       },
@@ -60,7 +60,7 @@
     "home-manager": {
       "inputs": {
         "nixpkgs": [
-          "nixpkgs"
+          "nixpkgs-unstable"
         ]
       },
       "locked": {
@@ -77,7 +77,23 @@
         "type": "github"
       }
     },
-    "nixpkgs": {
+    "nixpkgs-stable": {
+      "locked": {
+        "lastModified": 1729044727,
+        "narHash": "sha256-GKJjtPY+SXfLF/yTN7M2cAnQB6RERFKnQhD8UvPSf3M=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "dc2e0028d274394f73653c7c90cc63edbb696be1",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-24.05",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-unstable": {
       "locked": {
         "lastModified": 1728888510,
         "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
@@ -98,7 +114,8 @@
         "ghostty": "ghostty",
         "ghostty-hm": "ghostty-hm",
         "home-manager": "home-manager",
-        "nixpkgs": "nixpkgs"
+        "nixpkgs-stable": "nixpkgs-stable",
+        "nixpkgs-unstable": "nixpkgs-unstable"
       }
     },
     "systems": {
diff --git a/flake.nix b/flake.nix
index 9e7b129..bfa2684 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,16 +2,17 @@
   description = "NixOS configuration";
 
   inputs = {
-    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+    nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
+    nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
 
     home-manager.url = "github:nix-community/home-manager";
-    home-manager.inputs.nixpkgs.follows = "nixpkgs";
+    home-manager.inputs.nixpkgs.follows = "nixpkgs-unstable";
 
     ghostty = {
       url = "git+ssh://git@github.com/ghostty-org/ghostty";
       inputs = {
-        nixpkgs-stable.follows = "nixpkgs";
-        nixpkgs-unstable.follows = "nixpkgs";
+        nixpkgs-stable.follows = "nixpkgs-stable";
+        nixpkgs-unstable.follows = "nixpkgs-unstable";
       };
     };
     ghostty-hm.url = "github:clo4/ghostty-hm-module";
@@ -20,17 +21,28 @@
   outputs =
     inputs@{
       self,
-      nixpkgs,
+      nixpkgs-stable,
+      nixpkgs-unstable,
       ghostty-hm,
       home-manager,
       ...
     }:
     let
       inherit (self) outputs;
-
       system = "x86_64-linux";
 
-      pkgs = nixpkgs.legacyPackages.${system};
+      pkgs = nixpkgs-unstable.legacyPackages.${system};
+
+      overlays-nixpkgs = final: prev: {
+        stable = import nixpkgs-stable {
+          inherit system;
+          config.allowUnfree = true;
+        };
+        unstable = import nixpkgs-unstable {
+          inherit system;
+          config.allowUnfree = true;
+        };
+      };
 
       mkHome =
         modules:
@@ -42,13 +54,18 @@
           modules = [
             ghostty-hm.homeModules.default
             ./home/common
+            (
+              { ... }:
+              {
+                nixpkgs.overlays = [ overlays-nixpkgs ];
+              }
+            )
           ] ++ modules;
         };
 
       mkHost =
         modules:
-        nixpkgs.lib.nixosSystem {
-          inherit system;
+        nixpkgs-unstable.lib.nixosSystem {
           specialArgs = {
             inherit inputs outputs;
           };
diff --git a/home/common/devel.nix b/home/common/devel.nix
index 2ae0a64..61999ee 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -14,6 +14,7 @@
     ldns
     minio-client
     nil
+    nix-output-monitor
     nixd
     nixfmt-rfc-style
     nodejs_22
diff --git a/home/common/nix.nix b/home/common/nix.nix
index 3b66fd3..b1976e0 100644
--- a/home/common/nix.nix
+++ b/home/common/nix.nix
@@ -1,4 +1,8 @@
-{ outputs, ... }:
+{
+  pkgs,
+  outputs,
+  ...
+}:
 {
   nixpkgs = {
     config.allowUnfree = true;
diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index 4a4f79a..1c38f16 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -24,7 +24,7 @@
     };
   };
 
-  home.packages = with pkgs; [ calibre ];
+  home.packages = with pkgs; [ stable.calibre ];
 
   programs.gpg.enable = true;
 

From a362c3885fc137d7a0e20e424aeb7c128056bc20 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 18 Oct 2024 10:57:46 +0200
Subject: [PATCH 436/656] more cleanup

---
 flake.nix            | 45 +++++++++++++-------------------------------
 overlays/default.nix |  4 ++++
 2 files changed, 17 insertions(+), 32 deletions(-)

diff --git a/flake.nix b/flake.nix
index bfa2684..13e0fd9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -21,7 +21,6 @@
   outputs =
     inputs@{
       self,
-      nixpkgs-stable,
       nixpkgs-unstable,
       ghostty-hm,
       home-manager,
@@ -30,19 +29,16 @@
     let
       inherit (self) outputs;
       system = "x86_64-linux";
-
       pkgs = nixpkgs-unstable.legacyPackages.${system};
 
-      overlays-nixpkgs = final: prev: {
-        stable = import nixpkgs-stable {
-          inherit system;
-          config.allowUnfree = true;
+      mkHost =
+        modules:
+        nixpkgs-unstable.lib.nixosSystem {
+          specialArgs = {
+            inherit inputs outputs;
+          };
+          modules = [ ./common ] ++ modules;
         };
-        unstable = import nixpkgs-unstable {
-          inherit system;
-          config.allowUnfree = true;
-        };
-      };
 
       mkHome =
         modules:
@@ -54,23 +50,8 @@
           modules = [
             ghostty-hm.homeModules.default
             ./home/common
-            (
-              { ... }:
-              {
-                nixpkgs.overlays = [ overlays-nixpkgs ];
-              }
-            )
           ] ++ modules;
         };
-
-      mkHost =
-        modules:
-        nixpkgs-unstable.lib.nixosSystem {
-          specialArgs = {
-            inherit inputs outputs;
-          };
-          modules = [ ./common ] ++ modules;
-        };
     in
     {
       overlays = import ./overlays { inherit inputs outputs; };
@@ -82,17 +63,17 @@
         ];
       };
 
+      nixosConfigurations = {
+        dinky = mkHost [ ./hosts/dinky ];
+        nemo = mkHost [ ./hosts/nemo ];
+        pearl = mkHost [ ./hosts/pearl ];
+      };
+
       homeConfigurations = {
         "dln@dinky" = mkHome [ ./home/dln/dinky.nix ];
         "dln@nemo" = mkHome [ ./home/dln/nemo.nix ];
         "dln@pearl" = mkHome [ ./home/dln/pearl.nix ];
         "lsjostro@nemo" = mkHome [ ./home/lsjostro/nemo.nix ];
       };
-
-      nixosConfigurations = {
-        dinky = mkHost [ ./hosts/dinky ];
-        nemo = mkHost [ ./hosts/nemo ];
-        pearl = mkHost [ ./hosts/pearl ];
-      };
     };
 }
diff --git a/overlays/default.nix b/overlays/default.nix
index 1ab8f99..b058a14 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -13,6 +13,10 @@
   };
 
   unstable-packages = final: _prev: {
+    stable = import inputs.nixpkgs-stable {
+      system = final.system;
+      config.allowUnfree = true;
+    };
     unstable = import inputs.nixpkgs-unstable {
       system = final.system;
       config.allowUnfree = true;

From 0e7f1a4e361eb5d195ea9e201f3f1e7f4ca837c1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 18 Oct 2024 15:01:46 +0200
Subject: [PATCH 437/656] ghostty: override nixpkgs with unstable packages

---
 flake.lock | 2 +-
 flake.nix  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/flake.lock b/flake.lock
index b2cc97b..951d62d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -21,7 +21,7 @@
     "ghostty": {
       "inputs": {
         "nixpkgs-stable": [
-          "nixpkgs-stable"
+          "nixpkgs-unstable"
         ],
         "nixpkgs-unstable": [
           "nixpkgs-unstable"
diff --git a/flake.nix b/flake.nix
index 13e0fd9..8d79fd9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -11,7 +11,7 @@
     ghostty = {
       url = "git+ssh://git@github.com/ghostty-org/ghostty";
       inputs = {
-        nixpkgs-stable.follows = "nixpkgs-stable";
+        nixpkgs-stable.follows = "nixpkgs-unstable";
         nixpkgs-unstable.follows = "nixpkgs-unstable";
       };
     };

From 79cbb2462acdec1f672178a3d2abbe3acf5c5121 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 19 Oct 2024 11:06:43 +0200
Subject: [PATCH 438/656] nemo: deploy woodpecker agent

---
 flake.lock                | 64 +++++++++++++++++++--------------------
 flake.nix                 | 14 ++++-----
 hosts/nemo/default.nix    |  5 ++-
 hosts/nemo/woodpecker.nix | 33 ++++++++++++++++++++
 4 files changed, 76 insertions(+), 40 deletions(-)
 create mode 100644 hosts/nemo/woodpecker.nix

diff --git a/flake.lock b/flake.lock
index 951d62d..10384fc 100644
--- a/flake.lock
+++ b/flake.lock
@@ -21,19 +21,19 @@
     "ghostty": {
       "inputs": {
         "nixpkgs-stable": [
-          "nixpkgs-unstable"
+          "nixpkgs"
         ],
         "nixpkgs-unstable": [
-          "nixpkgs-unstable"
+          "nixpkgs"
         ],
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1729220096,
-        "narHash": "sha256-4erPSUsLVTTbdAXAjKfl7FpVxohmDSL0zWfewff7jcc=",
+        "lastModified": 1729515458,
+        "narHash": "sha256-AYLxdLukuWXJREYupBiAXRk9PGX1qA7w/5adKMlNpTo=",
         "ref": "refs/heads/main",
-        "rev": "913c4b5801b0d3881eabbe93dec5a2c40fefe65f",
-        "revCount": 7730,
+        "rev": "c2cbc214d5f6d45cfa171b8ed6ea7a670a5cbdab",
+        "revCount": 7762,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -60,15 +60,15 @@
     "home-manager": {
       "inputs": {
         "nixpkgs": [
-          "nixpkgs-unstable"
+          "nixpkgs"
         ]
       },
       "locked": {
-        "lastModified": 1729174520,
-        "narHash": "sha256-QxCAdgQdeIOaCiE0Sr23s9lD0+T1b/wuz5pSiGwNrCQ=",
+        "lastModified": 1729551526,
+        "narHash": "sha256-7LAGY32Xl14OVQp3y6M43/0AtHYYvV6pdyBcp3eoz0s=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "e78cbb20276f09c1802e62d2f77fc93ec32da268",
+        "rev": "5ec753a1fc4454df9285d8b3ec0809234defb975",
         "type": "github"
       },
       "original": {
@@ -77,29 +77,13 @@
         "type": "github"
       }
     },
-    "nixpkgs-stable": {
+    "nixpkgs": {
       "locked": {
-        "lastModified": 1729044727,
-        "narHash": "sha256-GKJjtPY+SXfLF/yTN7M2cAnQB6RERFKnQhD8UvPSf3M=",
+        "lastModified": 1729256560,
+        "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "dc2e0028d274394f73653c7c90cc63edbb696be1",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixos-24.05",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs-unstable": {
-      "locked": {
-        "lastModified": 1728888510,
-        "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
+        "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
         "type": "github"
       },
       "original": {
@@ -109,13 +93,29 @@
         "type": "github"
       }
     },
+    "nixpkgs-stable": {
+      "locked": {
+        "lastModified": 1729307008,
+        "narHash": "sha256-QUvb6epgKi9pCu9CttRQW4y5NqJ+snKr1FZpG/x3Wtc=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "a9b86fc2290b69375c5542b622088eb6eca2a7c3",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-24.05",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "root": {
       "inputs": {
         "ghostty": "ghostty",
         "ghostty-hm": "ghostty-hm",
         "home-manager": "home-manager",
-        "nixpkgs-stable": "nixpkgs-stable",
-        "nixpkgs-unstable": "nixpkgs-unstable"
+        "nixpkgs": "nixpkgs",
+        "nixpkgs-stable": "nixpkgs-stable"
       }
     },
     "systems": {
diff --git a/flake.nix b/flake.nix
index 8d79fd9..3cf27e9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,17 +2,17 @@
   description = "NixOS configuration";
 
   inputs = {
-    nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
 
     home-manager.url = "github:nix-community/home-manager";
-    home-manager.inputs.nixpkgs.follows = "nixpkgs-unstable";
+    home-manager.inputs.nixpkgs.follows = "nixpkgs";
 
     ghostty = {
       url = "git+ssh://git@github.com/ghostty-org/ghostty";
       inputs = {
-        nixpkgs-stable.follows = "nixpkgs-unstable";
-        nixpkgs-unstable.follows = "nixpkgs-unstable";
+        nixpkgs-stable.follows = "nixpkgs";
+        nixpkgs-unstable.follows = "nixpkgs";
       };
     };
     ghostty-hm.url = "github:clo4/ghostty-hm-module";
@@ -21,7 +21,7 @@
   outputs =
     inputs@{
       self,
-      nixpkgs-unstable,
+      nixpkgs,
       ghostty-hm,
       home-manager,
       ...
@@ -29,11 +29,11 @@
     let
       inherit (self) outputs;
       system = "x86_64-linux";
-      pkgs = nixpkgs-unstable.legacyPackages.${system};
+      pkgs = nixpkgs.legacyPackages.${system};
 
       mkHost =
         modules:
-        nixpkgs-unstable.lib.nixosSystem {
+        nixpkgs.lib.nixosSystem {
           specialArgs = {
             inherit inputs outputs;
           };
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 66189a4..ada8496 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -7,7 +7,10 @@
 }:
 
 {
-  imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
+  imports = [
+    (modulesPath + "/installer/scan/not-detected.nix")
+    ./woodpecker.nix
+  ];
 
   boot = {
     extraModulePackages = with config.boot.kernelPackages; [
diff --git a/hosts/nemo/woodpecker.nix b/hosts/nemo/woodpecker.nix
new file mode 100644
index 0000000..8a4e963
--- /dev/null
+++ b/hosts/nemo/woodpecker.nix
@@ -0,0 +1,33 @@
+{
+  config,
+  pkgs,
+  ...
+}:
+{
+  services.woodpecker-agents.agents.docker = {
+    enable = true;
+    package = pkgs.woodpecker-agent;
+    environment = {
+      DOCKER_HOST = "unix:///run/podman/podman.sock";
+      WOODPECKER_BACKEND = "docker";
+      WOODPECKER_SERVER = "10.1.100.10:8300"; # forgejo-1
+      WOODPECKER_MAX_WORKFLOWS = "5";
+      WOODPECKER_BACKEND_DOCKER_VOLUMES = "/nix:/mnt/nix:ro";
+    };
+    environmentFile = [
+      "/etc/woodpecker/woodpecker-agent.env"
+    ];
+    extraGroups = [ "podman" ];
+  };
+
+  systemd.services.woodpecker-agent-docker = {
+    after = [
+      "podman.socket"
+      "woodpecker-server.service"
+    ];
+    # restartIfChanged = false;
+    serviceConfig = {
+      BindPaths = [ "/run/podman/podman.sock" ];
+    };
+  };
+}

From 8d7ebd365689f2c68b25a18b845d9d3c6dcf8522 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 15 Oct 2024 18:12:56 +0200
Subject: [PATCH 439/656] dinky: update remote builder config

---
 hosts/dinky/default.nix | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index d2e7681..90f6d5a 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -117,22 +117,29 @@
   systemd.services."getty@tty1".enable = false;
   systemd.services."autovt@tty1".enable = false;
 
+  nix.settings.trusted-users = [ "dln" ];
   nix.buildMachines = [
     {
       hostName = "nemo.aarn.patagia.dev";
       sshUser = "nixremote";
+      sshKey = "/root/.ssh/id_ed25519";
       system = "x86_64-linux";
       protocol = "ssh-ng";
       maxJobs = 32;
       speedFactor = 2;
-      supportedFeatures = [ ];
+      supportedFeatures = [
+        "nixos-test"
+        "big-parallel"
+        "kvm"
+      ];
       mandatoryFeatures = [ ];
     }
   ];
   nix.distributedBuilds = true;
-  nix.extraOptions = ''
-    builders-use-substitutes = true
-  '';
+  nix.settings.builders-use-substitutes = true;
+  nix.settings.trusted-substituters = [
+    "ssh-ng://nemo.aarn.patagia.dev"
+  ];
 
   system.stateVersion = "24.05"; # Did you read the comment?
 }

From 5093a4fb1127cb397693b21fac9c26733cbba1df Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 15 Oct 2024 18:12:56 +0200
Subject: [PATCH 440/656] fonts: noto cjk renamed

---
 common/desktop.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/common/desktop.nix b/common/desktop.nix
index cb2ee7b..52cc9d4 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -62,7 +62,7 @@ in
         monaspace
         (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
         noto-fonts
-        noto-fonts-cjk
+        noto-fonts-cjk-sans
         noto-fonts-color-emoji
         roboto
         ubuntu_font_family

From d6a3d73411b4747ab4a8df3e47ee5aa9be1fd1d8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 15 Oct 2024 18:12:56 +0200
Subject: [PATCH 441/656] dinky: remove calibre for now

---
 home/dln/dinky.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/dln/dinky.nix b/home/dln/dinky.nix
index 4742f12..ba0b79e 100644
--- a/home/dln/dinky.nix
+++ b/home/dln/dinky.nix
@@ -11,7 +11,7 @@
     };
   };
 
-  home.packages = with pkgs; [ calibre ];
+  home.packages = with pkgs; [ ];
 
   programs.gpg.enable = true;
   services.gpg-agent = {

From 4122379694bc5a904bc666348e7427e3cc727b05 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 15 Oct 2024 18:12:56 +0200
Subject: [PATCH 442/656] nix: update

---
 flake.lock | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/flake.lock b/flake.lock
index 10384fc..ef8d639 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1729515458,
-        "narHash": "sha256-AYLxdLukuWXJREYupBiAXRk9PGX1qA7w/5adKMlNpTo=",
+        "lastModified": 1729600492,
+        "narHash": "sha256-lQ1oSHfNRvveB9YEMetEFl6a8Tpb6cQkMtSQKAYBLMQ=",
         "ref": "refs/heads/main",
-        "rev": "c2cbc214d5f6d45cfa171b8ed6ea7a670a5cbdab",
-        "revCount": 7762,
+        "rev": "5e001fcb64deeee69b92a03a51d05a21b09153bd",
+        "revCount": 7763,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1729256560,
-        "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
+        "lastModified": 1729413321,
+        "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
+        "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26",
         "type": "github"
       },
       "original": {
@@ -95,11 +95,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1729307008,
-        "narHash": "sha256-QUvb6epgKi9pCu9CttRQW4y5NqJ+snKr1FZpG/x3Wtc=",
+        "lastModified": 1729449015,
+        "narHash": "sha256-Gf04dXB0n4q0A9G5nTGH3zuMGr6jtJppqdeljxua1fo=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "a9b86fc2290b69375c5542b622088eb6eca2a7c3",
+        "rev": "89172919243df199fe237ba0f776c3e3e3d72367",
         "type": "github"
       },
       "original": {

From 890ac1e91cad423e8d4f3442d389e30f70ac93f1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 23 Oct 2024 09:39:04 +0200
Subject: [PATCH 443/656] Uninstall wezterm

---
 files/config/fish/config.fish    |   6 -
 files/config/wezterm/wezterm.lua | 316 -------------------------------
 files/scripts/wezterm-open-url   |   4 -
 home/common/default.nix          |   1 -
 home/common/wezterm.nix          |  11 --
 home/dln/desktop.nix             |  21 --
 6 files changed, 359 deletions(-)
 delete mode 100644 files/config/wezterm/wezterm.lua
 delete mode 100755 files/scripts/wezterm-open-url
 delete mode 100644 home/common/wezterm.nix

diff --git a/files/config/fish/config.fish b/files/config/fish/config.fish
index f7334c3..e794e56 100644
--- a/files/config/fish/config.fish
+++ b/files/config/fish/config.fish
@@ -9,12 +9,6 @@ bind \e\[109\;5u execute # C-m in ghostty
 set fish_greeting
 set fish_emoji_width 2
 
-# xdg-open support on ssh remotes
-if test -n SSH_TTY; and type -q wezterm-open-url
-    set -x DE generic
-    set -x BROWSER wezterm-open-url
-end
-
 # Colors
 set fish_color_command --bold
 set fish_color_comment --italics --dim
diff --git a/files/config/wezterm/wezterm.lua b/files/config/wezterm/wezterm.lua
deleted file mode 100644
index c60845e..0000000
--- a/files/config/wezterm/wezterm.lua
+++ /dev/null
@@ -1,316 +0,0 @@
-local wezterm = require("wezterm")
-local mux = wezterm.mux
-local act = wezterm.action
-
-local config = {}
-
--- ------------------------------------------------------------------------------------
--- Workspace behavior
-
--- FIXME: use of the local env var here only works with the same UID on all machines
-local nvim_args = { "nvim", "--listen", os.getenv("XDG_RUNTIME_DIR") .. "/nvim-persistent.sock" }
-
-config.exec_domains = {
-	wezterm.exec_domain("dev", function(cmd)
-		local wrapped = { "ssh", "-t", "dev" }
-		for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
-			table.insert(wrapped, arg)
-		end
-		cmd.args = wrapped
-		return cmd
-	end),
-	wezterm.exec_domain("nemo", function(cmd)
-		local wrapped = { "ssh", "-t", "nemo" }
-		for _, arg in ipairs(cmd.args or { os.getenv("SHELL") }) do
-			table.insert(wrapped, arg)
-		end
-		cmd.args = wrapped
-		return cmd
-	end),
-}
-
-local function activate_nvim(window, pane)
-	wezterm.log_info("nvim")
-	for _, t in ipairs(window:mux_window():tabs_with_info()) do
-		for _, p in ipairs(t.tab:panes()) do
-			if p:get_title() == "nvim" or t.tab:get_title() == "nvim" then
-				window:perform_action(
-					act.Multiple({
-						act.ActivateTab(t.index),
-						act.MoveTab(0),
-					}),
-					pane
-				)
-				return
-			end
-		end
-	end
-
-	local nvim_tab, nvim_pane, _ = window:mux_window():spawn_tab({ args = nvim_args })
-	window:perform_action(act.MoveTab(0), nvim_pane)
-	nvim_tab:set_title("nvim")
-end
-
-local function activate_tab(title, index)
-	return function(window, pane)
-		wezterm.log_info(title)
-		for _, t in ipairs(window:mux_window():tabs_with_info()) do
-			if t.tab:get_title() == title then
-				window:perform_action(
-					act.Multiple({
-						act.ActivateTab(t.index),
-						act.MoveTab(index),
-					}),
-					pane
-				)
-				return
-			end
-		end
-		local tab, _, _ = window:mux_window():spawn_tab({
-			cwd = "~",
-		})
-		tab:set_title(title)
-		window:perform_action(act.MoveTab(index), pane)
-	end
-end
-
-wezterm.on("activate-nvim", activate_nvim)
-wezterm.on("tab-2", activate_tab("t2", 1))
-wezterm.on("tab-3", activate_tab("t3", 2))
-wezterm.on("tab-4", activate_tab("t4", 3))
-wezterm.on("tab-5", activate_tab("t5", 4))
-wezterm.on("tab-6", activate_tab("t6", 5))
-wezterm.on("tab-7", activate_tab("t7", 6))
-wezterm.on("tab-8", activate_tab("t8", 7))
-wezterm.on("tab-9", activate_tab("t9", 8))
-wezterm.on("tab-10", activate_tab("t10", 9))
-
-wezterm.on("user-var-changed", function(window, pane, name, value)
-	if name == "nvim_activate" then
-		activate_nvim(window, pane)
-	end
-	if name == "open_url" then
-		local url = string.match(value, "%S+")
-		local u = wezterm.url.parse(string.match(value, "%S+"))
-		if u.scheme == "https" or u.scheme == "http" then
-			wezterm.log_info(url)
-			wezterm.background_child_process({ "xdg-open", url })
-		end
-	end
-end)
-
--- ------------------------------------------------------------------------------------
--- Appearance
-
-local function colors_for_appearance(appearance)
-	if appearance:find("Dark") then
-		return {
-			background = "#0d1117",
-			-- background = "#000000",
-			foreground = "#b2b2b2",
-			cursor_bg = "#00d992",
-			cursor_fg = "#000000",
-			cursor_border = "#000000",
-			selection_bg = "#d7d7d7",
-			selection_fg = "#000000",
-			ansi = { "#000000", "#ff0035", "#85ff00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#f0f0f0" },
-			brights = { "#000000", "#ff8c88", "#baff94", "#ffe090", "#88ccff", "#e38dff", "#97eeff", "#ffffff" },
-		}
-	else
-		return {
-			background = "#fefeff",
-			foreground = "#222222",
-			cursor_bg = "#aa0000",
-			cursor_fg = "#ffffff",
-			cursor_border = "#ffffff",
-			selection_bg = "#ffe6a4",
-			selection_fg = "#483600",
-			ansi = { "#000000", "#9e001d", "#306300", "#deae00", "#00669e", "#7d009e", "#008a9e", "#f7f7f7" },
-			brights = { "#000000", "#ff0035", "#509e00", "#ffc900", "#00a7ff", "#cb01ff", "#00e0ff", "#ffffff" },
-		}
-	end
-end
-
-config.colors = colors_for_appearance(wezterm.gui.get_appearance())
-
--- ------------------------------------------------------------------------------------
--- Fonts
-local berkeley_mono_features = {
-	-- "calt=1",
-	-- "dlig=0",
-	-- "liga",
-	-- "calt=1",
-	-- "clig=1",
-	-- "ss02", -- Clean Zero
-	"ss03", -- Slashed Zero
-	-- "ss04", -- Cut Zero
-}
-
--- #[ ## ### #### ################
-
-config.font = wezterm.font_with_fallback({
-	{
-		family = "BerkeleyMono Nerd Font",
-		-- family = "Ubuntu Mono",
-		-- weight = "Regular",
-		harfbuzz_features = berkeley_mono_features,
-	},
-	"Noto Sans Mono",
-	"Noto Color Emoji",
-})
-
-config.font_rules = {
-	{
-		italic = true,
-		intensity = "Bold",
-		reverse = false,
-		font = wezterm.font({
-			family = "BerkeleyMono Nerd Font",
-			-- family = "Monaspace Radon Light",
-			italic = true,
-			harfbuzz_features = berkeley_mono_features,
-		}),
-	},
-}
-
-wezterm.on("window-config-reloaded", function(window, pane)
-	local overrides = window:get_config_overrides() or {}
-	local dpi = wezterm.gui.screens().active.effective_dpi
-
-	if dpi > 96 then
-		overrides.font_size = 14
-		overrides.freetype_load_target = "Normal"
-		-- overrides.cell_width = 0.95
-		overrides.cell_width = 1.0
-	else
-		overrides.font_size = 18
-		overrides.freetype_load_target = "HorizontalLcd"
-	end
-	window:set_config_overrides(overrides)
-end)
-
-config.font_size = 14
-config.warn_about_missing_glyphs = false
-config.bold_brightens_ansi_colors = false
-config.unicode_version = 14
-
-config.custom_block_glyphs = false
-config.allow_square_glyphs_to_overflow_width = "Always"
--- config.use_cap_height_to_scale_fallback_fonts = true
-
--- Config
-config.enable_wayland = true
-config.xcursor_theme = "Adwaita"
-config.check_for_updates = false
-
--- UI
-config.command_palette_font_size = 13.5
-config.initial_cols = 116
-config.initial_rows = 36
-config.status_update_interval = 100
-config.max_fps = 90
-config.audible_bell = "Disabled"
-config.use_resize_increments = true
-config.adjust_window_size_when_changing_font_size = false
-config.use_resize_increments = true
-config.window_decorations = "RESIZE"
-config.window_frame = {
-	border_left_width = "4px",
-	border_right_width = "4px",
-	border_bottom_height = "4px",
-	border_top_height = "4px",
-	border_left_color = "#000000",
-	border_right_color = "#000000",
-	border_bottom_color = "#000000",
-	border_top_color = "#000000",
-}
-config.window_padding = {
-	left = 10,
-	right = 10,
-	top = 0,
-	bottom = 0,
-}
-
--- Hyperlinks
-config.hyperlink_rules = wezterm.default_hyperlink_rules()
-
-table.insert(config.hyperlink_rules, {
-	regex = [[E(\d+)]],
-	format = "https://doc.rust-lang.org/error_codes/E$1.html",
-})
-
--- Tabs
-config.enable_tab_bar = false
-config.tab_bar_at_bottom = true
-config.use_fancy_tab_bar = false
-config.show_tab_index_in_tab_bar = true
-
--- Cursor
-config.default_cursor_style = "SteadyBlock"
-config.cursor_thickness = "6px"
-config.cursor_blink_rate = 700
-config.hide_mouse_cursor_when_typing = false
-config.underline_position = -3
-config.underline_thickness = 2
-
--- Scrolling
-config.enable_scroll_bar = false
-config.scrollback_lines = 5000
-config.alternate_buffer_wheel_scroll_speed = 1
-
--- Keys
-config.disable_default_key_bindings = true
-config.keys = {
-	{ key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
-	{ key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") },
-	{ key = "c", mods = "CTRL|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") },
-	{ key = "v", mods = "CTRL|SHIFT", action = act.PasteFrom("Clipboard") },
-	{ key = "0", mods = "CTRL", action = "ResetFontSize" },
-	{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
-	{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
-	{ key = "UpArrow", mods = "CTRL", action = act.ScrollToPrompt(-1) },
-	{ key = "DownArrow", mods = "CTRL", action = act.ScrollToPrompt(1) },
-	{ key = "UpArrow", mods = "SHIFT", action = act.ScrollByLine(-1) },
-	{ key = "DownArrow", mods = "SHIFT", action = act.ScrollByLine(1) },
-	{ key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-0.5) },
-	{ key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(0.5) },
-	{ key = "r", mods = "ALT", action = act.ReloadConfiguration },
-	{ key = "o", mods = "ALT", action = act.ActivateCommandPalette },
-	{ key = "RightArrow", mods = "CTRL", action = act.ActivateTabRelative(1) },
-	{ key = "LeftArrow", mods = "CTRL", action = act.ActivateTabRelative(-1) },
-	{ key = "Backspace", mods = "ALT", action = act.SwitchWorkspaceRelative(1) },
-	{ key = "1", mods = "ALT", action = act.EmitEvent("activate-nvim") },
-	{ key = "2", mods = "ALT", action = act.EmitEvent("tab-2") },
-	{ key = "3", mods = "ALT", action = act.EmitEvent("tab-3") },
-	{ key = "4", mods = "ALT", action = act.EmitEvent("tab-4") },
-	{ key = "5", mods = "ALT", action = act.EmitEvent("tab-5") },
-	{ key = "6", mods = "ALT", action = act.EmitEvent("tab-6") },
-	{ key = "7", mods = "ALT", action = act.EmitEvent("tab-7") },
-	{ key = "8", mods = "ALT", action = act.EmitEvent("tab-8") },
-	{ key = "9", mods = "ALT", action = act.EmitEvent("tab-9") },
-	{ key = "0", mods = "ALT", action = act.EmitEvent("tab-10") },
-}
-
--- Mouse
-config.mouse_bindings = {
-	{
-		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-		mods = "SHIFT",
-		action = act.ScrollByLine(-5),
-	},
-	{
-		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-		mods = "SHIFT",
-		action = act.ScrollByLine(5),
-	},
-	{
-		event = { Down = { streak = 1, button = { WheelUp = 1 } } },
-		action = act.ScrollByLine(-1),
-	},
-	{
-		event = { Down = { streak = 1, button = { WheelDown = 1 } } },
-		action = act.ScrollByLine(1),
-	},
-}
-
-return config
diff --git a/files/scripts/wezterm-open-url b/files/scripts/wezterm-open-url
deleted file mode 100755
index 8cb656f..0000000
--- a/files/scripts/wezterm-open-url
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-if [[ $1 == http* ]]; then
-	printf "\033]1337;SetUserVar=open_url=%s\007" "$(echo -n "$1" | base64)"
-fi
diff --git a/home/common/default.nix b/home/common/default.nix
index 2ad0154..0697d99 100644
--- a/home/common/default.nix
+++ b/home/common/default.nix
@@ -16,7 +16,6 @@
     ./utils.nix
     ./vcs.nix
     ./web.nix
-    ./wezterm.nix
   ];
 
   options.patagia.desktop.enable = lib.mkEnableOption "Desktop environment";
diff --git a/home/common/wezterm.nix b/home/common/wezterm.nix
deleted file mode 100644
index 95238ea..0000000
--- a/home/common/wezterm.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ config, lib, ... }:
-{
-  config = lib.mkIf config.patagia.desktop.enable {
-
-    programs.wezterm = {
-      enable = true;
-      extraConfig = builtins.readFile ./../../files/config/wezterm/wezterm.lua;
-    };
-
-  };
-}
diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index 1de95aa..ae7ded3 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -5,10 +5,6 @@
   };
 
   home.packages = with pkgs; [
-    # audacity
-    # bitwig-studio
-    # helvum
-    # reaper
     cameractrls-gtk4
     dynamic-wallpaper
     gimp-with-plugins
@@ -49,22 +45,5 @@
       terminal = false;
       type = "Application";
     };
-
-    wezterm-nemo = {
-      categories = [
-        "System"
-        "TerminalEmulator"
-      ];
-      exec = "wezterm start --class=org.wezfurlong.wezterm-nemo --domain=nemo";
-      genericName = "wezterm-nemo";
-      icon = "org.wezfurlong.wezterm";
-      name = "wezterm-nemo";
-      settings = {
-        StartupWMClass = "org.wezfurlong.wezterm-nemo";
-        TryExec = "wezterm";
-      };
-      terminal = false;
-      type = "Application";
-    };
   };
 }

From aa228521fe83c2eefa23e1a65b33227681bcb07b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 6 Oct 2024 23:00:01 +0200
Subject: [PATCH 444/656] nvim: all in on mini.nvim

---
 files/config/nvim/init.lua                    |   2 -
 files/config/nvim/lua/config/autocmds.lua     |  16 ---
 files/config/nvim/lua/config/keymaps.lua      |  19 ---
 files/config/nvim/lua/config/lazy.lua         |  60 --------
 files/config/nvim/lua/config/options.lua      |  36 -----
 files/config/nvim/lua/plugins/coding.lua      |  69 ----------
 files/config/nvim/lua/plugins/colorscheme.lua |  14 --
 files/config/nvim/lua/plugins/editor.lua      | 100 --------------
 files/config/nvim/lua/plugins/extras.lua      |  99 -------------
 files/config/nvim/lua/plugins/formatting.lua  |  15 --
 files/config/nvim/lua/plugins/incline.lua     |  72 ----------
 files/config/nvim/lua/plugins/lsp.lua         |  35 -----
 files/config/nvim/lua/plugins/treesitter.lua  |  41 ------
 files/config/nvim/lua/plugins/ui.lua          | 130 ------------------
 flake.lock                                    |  26 ++--
 home/common/default.nix                       |   2 +-
 home/common/nvim.nix                          |  19 ---
 home/common/nvim/default.nix                  | 119 ++++++++++++++++
 home/common/nvim/init.lua                     |  93 +++++++++++++
 home/common/nvim/lsp.lua                      |  92 +++++++++++++
 home/common/nvim/mini.lua                     | 130 ++++++++++++++++++
 home/common/utils.nix                         |   2 +
 22 files changed, 450 insertions(+), 741 deletions(-)
 delete mode 100644 files/config/nvim/init.lua
 delete mode 100644 files/config/nvim/lua/config/autocmds.lua
 delete mode 100644 files/config/nvim/lua/config/keymaps.lua
 delete mode 100644 files/config/nvim/lua/config/lazy.lua
 delete mode 100644 files/config/nvim/lua/config/options.lua
 delete mode 100644 files/config/nvim/lua/plugins/coding.lua
 delete mode 100644 files/config/nvim/lua/plugins/colorscheme.lua
 delete mode 100644 files/config/nvim/lua/plugins/editor.lua
 delete mode 100644 files/config/nvim/lua/plugins/extras.lua
 delete mode 100644 files/config/nvim/lua/plugins/formatting.lua
 delete mode 100644 files/config/nvim/lua/plugins/incline.lua
 delete mode 100644 files/config/nvim/lua/plugins/lsp.lua
 delete mode 100644 files/config/nvim/lua/plugins/treesitter.lua
 delete mode 100644 files/config/nvim/lua/plugins/ui.lua
 delete mode 100644 home/common/nvim.nix
 create mode 100644 home/common/nvim/default.nix
 create mode 100644 home/common/nvim/init.lua
 create mode 100644 home/common/nvim/lsp.lua
 create mode 100644 home/common/nvim/mini.lua

diff --git a/files/config/nvim/init.lua b/files/config/nvim/init.lua
deleted file mode 100644
index 2514f9e..0000000
--- a/files/config/nvim/init.lua
+++ /dev/null
@@ -1,2 +0,0 @@
--- bootstrap lazy.nvim, LazyVim and your plugins
-require("config.lazy")
diff --git a/files/config/nvim/lua/config/autocmds.lua b/files/config/nvim/lua/config/autocmds.lua
deleted file mode 100644
index b5f7062..0000000
--- a/files/config/nvim/lua/config/autocmds.lua
+++ /dev/null
@@ -1,16 +0,0 @@
--- Autocmds are automatically loaded on the VeryLazy event
--- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
--- Add any additional autocmds here
-
-local function augroup(name)
-	return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true })
-end
-
--- Set comment string for CUE files
-vim.api.nvim_create_autocmd("FileType", {
-	group = augroup("cue"),
-	pattern = { "cue" },
-	callback = function(ev)
-		vim.bo[ev.buf].commentstring = "// %s"
-	end,
-})
diff --git a/files/config/nvim/lua/config/keymaps.lua b/files/config/nvim/lua/config/keymaps.lua
deleted file mode 100644
index 5fc7f2d..0000000
--- a/files/config/nvim/lua/config/keymaps.lua
+++ /dev/null
@@ -1,19 +0,0 @@
--- Keymaps are automatically loaded on the VeryLazy event
--- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
--- Add any additional keymaps here
-
--- C-/ should be comment instead of lazyterm
-vim.keymap.del("n", "<c-/>")
-vim.keymap.set({ "n" }, "<c-/>", "gcc", { remap = true })
-vim.keymap.set({ "v" }, "<c-/>", "gc", { remap = true })
-vim.keymap.set({ "n" }, "<Leader><c-/>", "gcgc", { remap = true })
-vim.keymap.del({ "n" }, "<c-_>")
-vim.keymap.set({ "n" }, "<c-_>", "gcc", { remap = true })
-vim.keymap.set({ "v" }, "<c-_>", "gc", { remap = true })
-vim.keymap.set({ "n" }, "<Leader><c-_>", "gcgc", { remap = true })
-
-vim.keymap.set("n", "<Tab>", "<Space>,", { remap = true })
-vim.keymap.set("n", "zz", "zt", { remap = true })
-
-vim.keymap.set("n", "[d", ":lua vim.diagnostic.goto_prev { float = false }<Enter>", { remap = true })
-vim.keymap.set("n", "]d", ":lua vim.diagnostic.goto_next { float = false }<Enter>", { remap = true })
diff --git a/files/config/nvim/lua/config/lazy.lua b/files/config/nvim/lua/config/lazy.lua
deleted file mode 100644
index 7d70096..0000000
--- a/files/config/nvim/lua/config/lazy.lua
+++ /dev/null
@@ -1,60 +0,0 @@
-local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
-if not vim.loop.fs_stat(lazypath) then
-  -- bootstrap lazy.nvim
-  -- stylua: ignore
-  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
-end
-vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
-
-require("lazy").setup({
-	spec = {
-		-- add LazyVim and import its plugins
-		{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-		-- extras
-		{ import = "lazyvim.plugins.extras.dap.core" },
-		{ import = "lazyvim.plugins.extras.editor.overseer" },
-		{ import = "lazyvim.plugins.extras.editor.telescope" },
-		{ import = "lazyvim.plugins.extras.formatting.prettier" },
-		{ import = "lazyvim.plugins.extras.lang.go" },
-		{ import = "lazyvim.plugins.extras.lang.json" },
-		{ import = "lazyvim.plugins.extras.lang.markdown" },
-		{ import = "lazyvim.plugins.extras.lang.nix" },
-		{ import = "lazyvim.plugins.extras.lang.rust" },
-		{ import = "lazyvim.plugins.extras.lang.toml" },
-		{ import = "lazyvim.plugins.extras.lang.typescript" },
-		{ import = "lazyvim.plugins.extras.lang.yaml" },
-		{ import = "lazyvim.plugins.extras.lsp.none-ls" },
-		{ import = "lazyvim.plugins.extras.test.core" },
-		{ import = "lazyvim.plugins.extras.ui.edgy" },
-		{ import = "lazyvim.plugins.extras.ui.treesitter-context" },
-		{ import = "lazyvim.plugins.extras.util.gitui" },
-		{ import = "lazyvim.plugins.extras.util.project" },
-		-- plugins
-		{ import = "plugins" },
-	},
-	defaults = {
-		-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
-		-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
-		lazy = false,
-		-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
-		-- have outdated releases, which may break your Neovim install.
-		version = false, -- always use the latest git commit
-		-- version = "*", -- try installing the latest stable version for plugins that support semver
-	},
-	checker = { enabled = false }, -- automatically check for plugin updates
-	performance = {
-		rtp = {
-			-- disable some rtp plugins
-			disabled_plugins = {
-				"gzip",
-				-- "matchit",
-				-- "matchparen",
-				"netrwPlugin",
-				"tarPlugin",
-				"tohtml",
-				"tutor",
-				"zipPlugin",
-			},
-		},
-	},
-})
diff --git a/files/config/nvim/lua/config/options.lua b/files/config/nvim/lua/config/options.lua
deleted file mode 100644
index 75e6b54..0000000
--- a/files/config/nvim/lua/config/options.lua
+++ /dev/null
@@ -1,36 +0,0 @@
-vim.opt.number = true
-vim.opt.relativenumber = false
-
-vim.g.do_filetype_lua = 1
-vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" }
-
-vim.o.autochdir = true
-vim.o.fillchars = "stl: ,stlnc: ,eob:░"
-vim.o.list = false
-vim.o.scrolloff = 7
-vim.o.splitkeep = "screen"
-vim.o.updatetime = 500
-vim.o.timeout = true
-vim.o.timeoutlen = 0
-
--- additional filetypes
-vim.filetype.add({
-	extension = {
-		templ = "templ",
-	},
-})
-
--- AutoCommand OSC7 workaround for tmux
--- see https://github.com/neovim/neovim/issues/21771
-vim.api.nvim_create_autocmd("dirchanged", {
-	pattern = "*",
-	command = 'call chansend(v:stderr, printf("\\033]7;%s\\033", v:event.cwd))',
-})
-
--- (No) Statusline
-
-vim.opt.laststatus = 0
-vim.api.nvim_set_hl(0, "Statusline", { link = "Normal" })
-vim.api.nvim_set_hl(0, "StatuslineNC", { link = "Normal" })
-local line = string.rep("▔", vim.api.nvim_win_get_width(0))
-vim.opt.statusline = "%#WinSeparator#" .. line .. "%*"
diff --git a/files/config/nvim/lua/plugins/coding.lua b/files/config/nvim/lua/plugins/coding.lua
deleted file mode 100644
index b2af23a..0000000
--- a/files/config/nvim/lua/plugins/coding.lua
+++ /dev/null
@@ -1,69 +0,0 @@
-return {
-
-	{
-		"echasnovski/mini.pairs",
-		enabled = false,
-	},
-
-	{
-		"nvim-cmp",
-		dependencies = { "hrsh7th/cmp-emoji" },
-		opts = function(_, opts)
-			local cmp = require("cmp")
-			table.insert(opts.sources, { name = "emoji" })
-
-			opts.view = { docs = { auto_open = false }, entries = { follow_cursor = true } }
-			opts.completion = {
-				autocomplete = false,
-			}
-
-			local winhighlight =
-				"Normal:NoiceCmdlinePopupTitle,FloatBorder:NoiceCmdlinePopupBorder,CursorLine:PMenuSel,Search:Search"
-
-			opts.window = {
-				completion = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
-				documentation = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
-				preview = cmp.config.window.bordered({ winhighlight = winhighlight, border = "rounded" }),
-			}
-
-			-- lua sorting = { comparators = { cmp.config.compare.sort_text, -- this needs to be 1st cmp.config.compare.offset, cmp.config.compare.exact, cmp.config.compare.score, cmp.config.compare.kind, cmp.config.compare.length, cmp.config.compare.order, } }
-
-			opts.sorting = {
-				priority_weight = 2,
-				comparators = {
-					cmp.config.compare.exact,
-					cmp.config.compare.recently_used,
-					cmp.config.compare.locality,
-					cmp.config.compare.offset,
-					-- cmp.config.compare.scopes,
-					cmp.config.compare.score,
-					cmp.config.compare.kind,
-					-- cmp.config.compare.sort_text,
-					cmp.config.compare.length,
-					cmp.config.compare.order,
-				},
-			}
-
-			return opts
-		end,
-	},
-
-	{
-		"Exafunction/codeium.nvim",
-		opts = {
-			enable_chat = false,
-		},
-	},
-
-	{
-		"monkoose/neocodeium",
-		event = "VeryLazy",
-		config = function()
-			local neocodeium = require("neocodeium")
-			neocodeium.setup()
-			vim.keymap.set("i", "<C-j>", neocodeium.accept)
-			vim.keymap.set("i", "<A-f>", neocodeium.accept)
-			vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete)
-		end,
-	},
-}
diff --git a/files/config/nvim/lua/plugins/colorscheme.lua b/files/config/nvim/lua/plugins/colorscheme.lua
deleted file mode 100644
index 738a94e..0000000
--- a/files/config/nvim/lua/plugins/colorscheme.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-return {
-	{
-		"https://patagia.dev/patagia/dieter.nvim.git",
-		lazy = false,
-		priority = 1000,
-	},
-
-	{
-		"LazyVim/LazyVim",
-		opts = {
-			colorscheme = "dieter",
-		},
-	},
-}
diff --git a/files/config/nvim/lua/plugins/editor.lua b/files/config/nvim/lua/plugins/editor.lua
deleted file mode 100644
index eaf6f32..0000000
--- a/files/config/nvim/lua/plugins/editor.lua
+++ /dev/null
@@ -1,100 +0,0 @@
-return {
-	{
-		"folke/flash.nvim",
-		enabled = false,
-	},
-
-	{
-		"telescope.nvim",
-		keys = {
-			{
-				"<Leader><Leader>",
-				function()
-					local telescope = require("telescope")
-					local jj_pick_status, jj_res = pcall(telescope.extensions.jj.files, opts)
-					if jj_pick_status then
-						return
-					end
-					local git_files_status, git_res = pcall(telescope.builtin.git_files, opts)
-					if not git_files_status then
-						error("Could not launch jj/git files: \n" .. jj_res .. "\n" .. git_res)
-					end
-				end,
-				desc = "VCS Files",
-			},
-			{
-				"<C-p>",
-				"<cmd>Telescope projects<cr>",
-				desc = "Projects",
-			},
-		},
-		opts = function(_, opts)
-			local actions = require("telescope.actions")
-			opts.defaults = {
-				layout_strategy = "horizontal",
-				layout_config = {
-					anchor = "top",
-					horizontal = {
-						prompt_position = "top",
-						mirror = false,
-						preview_width = 0.49,
-						-- preview_height = 0.5,
-					},
-					width = 0.99,
-					height = 0.9,
-					preview_cutoff = 10,
-				},
-				mappings = {
-					i = {
-						["<esc>"] = actions.close, -- <Esc> close popup
-						["<C-u>"] = false, -- <C-u> clear prompt
-						["<C-w>"] = false, -- <C-u> clear prompt
-					},
-				},
-				path_display = { "filename_first" },
-				-- previewer = false,
-				preview = {
-					-- hide_on_startup = true,
-				},
-				sorting_strategy = "ascending",
-				winblend = 0,
-				wrap_results = true,
-			}
-		end,
-	},
-
-	{ "avm99963/vim-jjdescription", lazy = false },
-
-	{
-		"zschreur/telescope-jj.nvim",
-		keys = {
-			{
-				"<Leader>jc",
-				function()
-					require("telescope").extensions.jj.conflicts()
-				end,
-				desc = "jj conflicts",
-			},
-			{
-				"<Leader>jd",
-				function()
-					require("telescope").extensions.jj.diff()
-				end,
-				desc = "jj diffs",
-			},
-			{
-				"<Leader>jf",
-				function()
-					require("telescope").extensions.jj.files()
-				end,
-				desc = "jj files",
-			},
-		},
-		config = function()
-			LazyVim.on_load("telescope.nvim", function()
-				local telescope = require("telescope")
-				telescope.load_extension("jj")
-			end)
-		end,
-	},
-}
diff --git a/files/config/nvim/lua/plugins/extras.lua b/files/config/nvim/lua/plugins/extras.lua
deleted file mode 100644
index 79d1a52..0000000
--- a/files/config/nvim/lua/plugins/extras.lua
+++ /dev/null
@@ -1,99 +0,0 @@
-return {
-	{
-		"direnv/direnv.vim",
-		lazy = false,
-		priority = 900,
-		config = function()
-			vim.g.direnv_silent_load = 1
-		end,
-	},
-
-	{
-		"nvimtools/none-ls.nvim",
-		opts = function(_, opts)
-			local nls = require("null-ls")
-			opts.root_dir = opts.root_dir
-				or require("null-ls.utils").root_pattern(".null-ls-root", ".neoconf.json", "Makefile", ".git")
-			opts.sources = vim.list_extend(opts.sources or {}, {
-				nls.builtins.formatting.mdformat,
-				nls.builtins.formatting.stylua,
-				nls.builtins.formatting.shfmt,
-				nls.builtins.formatting.buf,
-				nls.builtins.formatting.buildifier,
-				nls.builtins.diagnostics.buildifier,
-				nls.builtins.diagnostics.buf.with({
-					args = { "lint", "--disable-symlinks", "--path", "$FILENAME" },
-					cwd = function()
-						local file_dir = vim.fn.expand("%:p:h") .. ";"
-						local buf_yaml = vim.fn.findfile("buf.yaml", file_dir)
-						if buf_yaml then
-							return vim.fn.fnamemodify(buf_yaml, ":h")
-						end
-					end,
-				}),
-			})
-		end,
-	},
-
-	{
-		"nvim-neo-tree/neo-tree.nvim",
-		opts = {
-			window = {
-				width = 30,
-				position = "right",
-			},
-		},
-	},
-
-	{
-		"simrat39/rust-tools.nvim",
-		enabled = false,
-	},
-
-	{
-		"mrcjkb/rustaceanvim",
-		version = "^4", -- Recommended
-		ft = { "rust" },
-		opts = {
-			server = {
-				on_attach = function(_, bufnr)
-					vim.keymap.set("n", "<leader>cR", function()
-						vim.cmd.RustLsp("codeAction")
-					end, { desc = "Code Action", buffer = bufnr })
-					vim.keymap.set("n", "<leader>dr", function()
-						vim.cmd.RustLsp("debuggables")
-					end, { desc = "Rust debuggables", buffer = bufnr })
-					vim.keymap.set("n", "<leader>cD", function()
-						vim.cmd.RustLsp("externalDocs")
-					end, { desc = "Rust external documentation", buffer = bufnr })
-				end,
-			},
-
-			settings = {
-				-- rust-analyzer language server configuration
-				["rust-analyzer"] = {
-					cargo = {
-						allFeatures = true,
-						loadOutDirsFromCheck = true,
-						runBuildScripts = true,
-						targetDir = true,
-					},
-					-- Add clippy lints for Rust.
-					checkOnSave = {
-						allFeatures = true,
-						command = "clippy",
-						extraArgs = { "--no-deps" },
-					},
-					procMacro = {
-						enable = true,
-						ignored = {
-							["async-trait"] = { "async_trait" },
-							["napi-derive"] = { "napi" },
-							["async-recursion"] = { "async_recursion" },
-						},
-					},
-				},
-			},
-		},
-	},
-}
diff --git a/files/config/nvim/lua/plugins/formatting.lua b/files/config/nvim/lua/plugins/formatting.lua
deleted file mode 100644
index f1272ab..0000000
--- a/files/config/nvim/lua/plugins/formatting.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-return {
-	{
-		"stevearc/conform.nvim",
-		opts = {
-			formatters_by_ft = {
-				["cue"] = { { "cue_fmt" } },
-				["html"] = { { "prettierd", "prettier" } },
-				["nix"] = { "nixfmt" },
-				["sass"] = { { "prettierd", "prettier" } },
-				["proto"] = { { "buf" } },
-				["terraform"] = { { "terraform_fmt" } },
-			},
-		},
-	},
-}
diff --git a/files/config/nvim/lua/plugins/incline.lua b/files/config/nvim/lua/plugins/incline.lua
deleted file mode 100644
index c594785..0000000
--- a/files/config/nvim/lua/plugins/incline.lua
+++ /dev/null
@@ -1,72 +0,0 @@
-return {
-	"b0o/incline.nvim",
-	config = function()
-		local devicons = require("nvim-web-devicons")
-		require("incline").setup({
-			window = {
-				margin = {
-					horizontal = 0,
-					vertical = 0,
-				},
-				padding = 0,
-				placement = {
-					horizontal = "right",
-					vertical = "bottom",
-				},
-			},
-			render = function(props)
-				local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ":t")
-				if filename == "" then
-					filename = "[No Name]"
-				end
-				local ft_icon, ft_color = devicons.get_icon_color(filename)
-
-				local function get_git_diff()
-					local icons = { removed = " ", changed = " ", added = " " }
-					local signs = vim.b[props.buf].gitsigns_status_dict
-					local labels = {}
-					if signs == nil then
-						return labels
-					end
-					for name, icon in pairs(icons) do
-						if tonumber(signs[name]) and signs[name] > 0 then
-							table.insert(labels, { icon .. signs[name] .. " ", group = "Diff" .. name })
-						end
-					end
-					if #labels > 0 then
-						table.insert(labels, { "│ " })
-					end
-					return labels
-				end
-
-				local function get_diagnostic_label()
-					local icons = { error = " ", warn = " ", info = " ", hint = " " }
-					local label = {}
-
-					for severity, icon in pairs(icons) do
-						local n = #vim.diagnostic.get(
-							props.buf,
-							{ severity = vim.diagnostic.severity[string.upper(severity)] }
-						)
-						if n > 0 then
-							table.insert(label, { icon .. n .. " ", group = "DiagnosticSign" .. severity })
-						end
-					end
-					if #label > 0 then
-						table.insert(label, { "│ " })
-					end
-					return label
-				end
-
-				return {
-					{ "  " },
-					{ get_diagnostic_label() },
-					{ get_git_diff() },
-					{ filename, group = "Label" },
-					{ "  " },
-				}
-			end,
-		})
-	end,
-	event = "VeryLazy",
-}
diff --git a/files/config/nvim/lua/plugins/lsp.lua b/files/config/nvim/lua/plugins/lsp.lua
deleted file mode 100644
index f317693..0000000
--- a/files/config/nvim/lua/plugins/lsp.lua
+++ /dev/null
@@ -1,35 +0,0 @@
-return {
-	{
-		"neovim/nvim-lspconfig",
-		opts = {
-			diagnostics = {
-				virtual_text = false,
-			},
-			inlay_hints = { enabled = false },
-			-- codelens = {
-			-- 	enabled = true,
-			-- },
-			servers = {
-				nil_ls = {},
-				nixd = {},
-				starpls = {},
-				yamlls = {
-					settings = {
-						yaml = {
-							schemas = {
-								-- kubernetes = "*.yaml",
-								["http://json.schemastore.org/github-workflow"] = ".github/workflows/*",
-								["http://json.schemastore.org/github-action"] = ".github/action.{yml,yaml}",
-								["http://json.schemastore.org/ansible-stable-2.9"] = "roles/tasks/*.{yml,yaml}",
-								["http://json.schemastore.org/chart"] = "Chart.{yml,yaml}",
-								["https://json.schemastore.org/dependabot-v2"] = ".github/dependabot.{yml,yaml}",
-								["https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json"] = "*api*.{yml,yaml}",
-								["https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.29.1/all.json"] = "/*.yaml",
-							},
-						},
-					},
-				},
-			},
-		},
-	},
-}
diff --git a/files/config/nvim/lua/plugins/treesitter.lua b/files/config/nvim/lua/plugins/treesitter.lua
deleted file mode 100644
index 0aea1c4..0000000
--- a/files/config/nvim/lua/plugins/treesitter.lua
+++ /dev/null
@@ -1,41 +0,0 @@
-return {
-	{
-		"nvim-treesitter/nvim-treesitter-context",
-		opts = {
-			enable = false,
-		},
-	},
-
-	{
-		"nvim-treesitter/nvim-treesitter",
-		opts = function(_, opts)
-			vim.list_extend(opts.ensure_installed, {
-				"bash",
-				"c",
-				"diff",
-				"go",
-				"html",
-				"javascript",
-				"jsdoc",
-				"json",
-				"jsonc",
-				"lua",
-				"luadoc",
-				"luap",
-				"markdown",
-				"markdown_inline",
-				"python",
-				"query",
-				"regex",
-				"rust",
-				"toml",
-				"tsx",
-				"typescript",
-				"vim",
-				"vimdoc",
-				"xml",
-				"yaml",
-			})
-		end,
-	},
-}
diff --git a/files/config/nvim/lua/plugins/ui.lua b/files/config/nvim/lua/plugins/ui.lua
deleted file mode 100644
index 7645a72..0000000
--- a/files/config/nvim/lua/plugins/ui.lua
+++ /dev/null
@@ -1,130 +0,0 @@
-return {
-	{
-		"nvimdev/dashboard-nvim",
-		enabled = false,
-	},
-
-	{
-		"dgagn/diagflow.nvim",
-		-- event = 'LspAttach', This is what I use personnally and it works great
-		opts = {
-			scope = "line",
-			gap_size = 0,
-			max_width = 50,
-			max_height = 20,
-			show_borders = true,
-			toggle_event = { "InsertEnter", "InsertLeave" },
-		},
-	},
-
-	{
-		"akinsho/bufferline.nvim",
-		enabled = false,
-	},
-
-	{
-		"echasnovski/mini.indentscope",
-		enabled = false,
-	},
-
-	{
-		"lukas-reineke/indent-blankline.nvim",
-		enabled = false,
-	},
-
-	{ "nvimdev/indentmini.nvim", opts = { char = "│" } },
-
-	{
-		"mvllow/modes.nvim",
-		opts = {
-			colors = {
-				copy = "#f5c359",
-				delete = "#c75c6a",
-				insert = "#ffcc00",
-				visual = "#c343fc",
-			},
-			set_cursor = true,
-			set_cursorline = true,
-			set_number = true,
-		},
-	},
-
-	{
-		"folke/noice.nvim",
-		event = "VeryLazy",
-		keys = {
-			{ "<leader>sna", "<cmd>NoiceTelescope<cr>", desc = "Show all messages in Telescope" },
-		},
-		opts = function()
-			local enable_conceal = true -- Hide command text if true
-			return {
-				presets = { bottom_search = true }, -- The kind of popup used for /
-				cmdline = {
-					view = "cmdline", -- The kind of popup used for :
-					format = {
-						cmdline = { conceal = enable_conceal },
-						search_down = { conceal = enable_conceal },
-						search_up = { conceal = enable_conceal },
-						filter = { conceal = enable_conceal },
-						lua = { conceal = enable_conceal },
-						help = { conceal = enable_conceal },
-						input = { conceal = enable_conceal },
-					},
-				},
-
-				messages = { enabled = true, view = "mini" },
-				lsp = {
-					hover = { enabled = false },
-					signature = { enabled = false },
-					progress = { enabled = true, view = "cmdline" },
-					message = { enabled = false },
-					smart_move = { enabled = false },
-				},
-			}
-		end,
-	},
-
-	{
-		"rcarriga/nvim-notify",
-		opts = {
-			timeout = 1000,
-			render = "wrapped-compact",
-			top_down = false,
-			max_width = function()
-				return math.floor(vim.o.columns * 0.5)
-			end,
-			on_open = function(win)
-				vim.api.nvim_win_set_config(win, {
-					focusable = false,
-					zindex = 100,
-				})
-			end,
-		},
-	},
-
-	{
-		"nvim-lualine/lualine.nvim",
-		enabled = false,
-	},
-
-	{
-		"DrKJeff16/project.nvim",
-		config = function(_, opts)
-			if vim.fn.argv()[1] == nil then
-				require("project_nvim").setup(opts) -- Workaround for project.nvim not setting up
-				vim.schedule(function()
-					vim.cmd("Telescope projects")
-				end)
-			end
-		end,
-		opts = {
-			exclude_dirs = {
-				"~/.cargo/*",
-				"~/.config/*",
-				"/tmp/*",
-			},
-			manual_mode = false,
-			patterns = { ".git", ".jj" },
-		},
-	},
-}
diff --git a/flake.lock b/flake.lock
index ef8d639..8f07eb6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -29,11 +29,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1729600492,
-        "narHash": "sha256-lQ1oSHfNRvveB9YEMetEFl6a8Tpb6cQkMtSQKAYBLMQ=",
+        "lastModified": 1730776162,
+        "narHash": "sha256-ODmmTWz3jqaPmJ1UiJgHD3oy90BTEd871GZHyT5Xn9M=",
         "ref": "refs/heads/main",
-        "rev": "5e001fcb64deeee69b92a03a51d05a21b09153bd",
-        "revCount": 7763,
+        "rev": "f9199a46118f173ac7a005130f871fdf050f94d1",
+        "revCount": 7881,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -64,11 +64,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1729551526,
-        "narHash": "sha256-7LAGY32Xl14OVQp3y6M43/0AtHYYvV6pdyBcp3eoz0s=",
+        "lastModified": 1730633670,
+        "narHash": "sha256-ZFJqIXpvVKvzOVFKWNRDyIyAo+GYdmEPaYi1bZB6uf0=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "5ec753a1fc4454df9285d8b3ec0809234defb975",
+        "rev": "8f6ca7855d409aeebe2a582c6fd6b6a8d0bf5661",
         "type": "github"
       },
       "original": {
@@ -79,11 +79,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1729413321,
-        "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=",
+        "lastModified": 1730531603,
+        "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26",
+        "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d",
         "type": "github"
       },
       "original": {
@@ -95,11 +95,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1729449015,
-        "narHash": "sha256-Gf04dXB0n4q0A9G5nTGH3zuMGr6jtJppqdeljxua1fo=",
+        "lastModified": 1730741070,
+        "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "89172919243df199fe237ba0f776c3e3e3d72367",
+        "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
         "type": "github"
       },
       "original": {
diff --git a/home/common/default.nix b/home/common/default.nix
index 0697d99..3a2a686 100644
--- a/home/common/default.nix
+++ b/home/common/default.nix
@@ -9,7 +9,7 @@
     ./gnome.nix
     ./k8s.nix
     ./nix.nix
-    ./nvim.nix
+    ./nvim
     ./scripts.nix
     ./ssh.nix
     ./tmux.nix
diff --git a/home/common/nvim.nix b/home/common/nvim.nix
deleted file mode 100644
index 9e65aaf..0000000
--- a/home/common/nvim.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ ... }:
-{
-  programs.neovim = {
-    enable = true;
-    defaultEditor = true;
-    viAlias = true;
-    vimAlias = true;
-    withNodeJs = false;
-    withPython3 = false;
-    withRuby = false;
-  };
-
-  xdg.configFile = {
-    "nvim" = {
-      recursive = true;
-      source = ./../../files/config/nvim;
-    };
-  };
-}
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
new file mode 100644
index 0000000..0c759b8
--- /dev/null
+++ b/home/common/nvim/default.nix
@@ -0,0 +1,119 @@
+{ lib, pkgs, ... }:
+{
+  programs.neovim = {
+    enable        = true;
+    defaultEditor = true;
+    viAlias       = true;
+    vimAlias      = true;
+    withNodeJs    = false;
+    withPython3   = false;
+    withRuby      = false;
+
+    extraLuaConfig = lib.fileContents ./init.lua;
+    extraPackages = with pkgs; [
+      black
+      cue
+      go
+      gopls
+      gotools
+      lua-language-server
+      nil
+      nixd
+      nodePackages.prettier
+      nodePackages.typescript 
+      nodePackages.typescript-language-server
+      nodePackages.bash-language-server 
+      rust-analyzer
+      shellcheck
+      shfmt
+      stylua
+      tree-sitter
+      tree-sitter-grammars.tree-sitter-bash
+      tree-sitter-grammars.tree-sitter-yaml
+      tree-sitter-grammars.tree-sitter-go
+      tree-sitter-grammars.tree-sitter-markdown
+      tree-sitter-grammars.tree-sitter-lua
+      tree-sitter-grammars.tree-sitter-html
+      tree-sitter-grammars.tree-sitter-vim
+      tree-sitter-grammars.tree-sitter-nix
+      vscode-langservers-extracted
+    ];
+
+
+    plugins = with pkgs.vimPlugins; [
+      go-nvim
+      rustaceanvim
+      targets-vim 
+
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "dieter-nvim";
+          src = pkgs.fetchgit {
+            url = "https://patagia.dev/Patagia/dieter.nvim.git";
+            rev = "08fae6ffec4ae70ba6b2e1cafa780ff317ef0b61";
+            hash = "sha256-C+Vo2SUVfNMkBwuLWqLoA59Pmy9aFwur7fBpfVkLm6Q=";
+          };
+        };
+        type = "lua";
+        config = ''
+          vim.cmd.colorscheme "dieter"
+        '';
+      }
+
+      {
+        plugin = nvim-treesitter.withAllGrammars; # Treesitter
+        type = "lua";
+        config = ''
+          require'nvim-treesitter.configs'.setup {
+            highlight = { enable = true, },
+            indent = { enable = true },
+          }
+        '';
+      }
+
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "nvim-tree-pairs"; # make % match in TS
+          src = pkgs.fetchFromGitHub {
+            owner = "yorickpeterse";
+            repo = "nvim-tree-pairs";
+            rev = "e7f7b6cc28dda6f3fa271ce63b0d371d5b7641da";
+            hash = "sha256-fb4EsrWAbm8+dWAhiirCPuR44MEg+KYb9hZOIuEuT24=";
+          };
+        };
+        type = "lua";
+        config = "require('tree-pairs').setup()";
+      }
+
+      {
+        plugin = nvim-treesitter-textobjects; # helix-style selection of TS tree
+        type = "lua";
+        config = ''
+          require'nvim-treesitter.configs'.setup {
+            incremental_selection = {
+              enable = true,
+              keymaps = {
+                init_selection = "<M-o>",
+                scope_incremental = "<M-O>",
+                node_incremental = "<M-o>",
+                node_decremental = "<M-i>",
+              },
+            },
+          }
+        '';
+      }
+
+      {
+        plugin = mini-nvim;
+        type = "lua";
+        config = lib.fileContents ./mini.lua;
+      }
+
+      {
+        plugin = nvim-lspconfig; # Interface for LSPs
+        type = "lua";
+        config = lib.fileContents ./lsp.lua;
+      }
+    ];
+  };
+}
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
new file mode 100644
index 0000000..ba179d8
--- /dev/null
+++ b/home/common/nvim/init.lua
@@ -0,0 +1,93 @@
+-- vim.g.mapleader = "<space>"
+vim.g.maplocalleader = ','
+
+-- UI
+
+vim.opt.cursorline = true
+vim.opt.laststatus = 0
+vim.opt.number = true
+vim.opt.relativenumber = true
+vim.opt.ruler = true
+vim.opt.rulerformat = "" -- FIXME: fancify!
+vim.opt.rulerformat = "%36(%5l,%-6(%c%V%) %t%)%*"
+vim.opt.syntax = "on"
+vim.opt.termguicolors = true
+
+-- Search
+vim.opt.ignorecase = true
+vim.opt.smartcase = true
+
+-- Tab completion
+-- vim.opt.wildmode="list:longest,full"
+vim.opt.wildignore="*.swp,*.o,*.so,*.exe,*.dll"
+
+-- Whitespaces
+vim.opt.breakindent = true
+vim.opt.copyindent = true
+vim.opt.expandtab = true
+vim.opt.softtabstop = 2
+vim.opt.shiftround = true
+vim.opt.shiftwidth = 2
+vim.opt.smartindent = true
+vim.opt.tabstop = 2
+vim.opt.wrap = false
+vim.opt.list = true
+vim.opt.listchars="tab:»·,trail:·"
+
+-- Folds
+vim.opt.foldenable = false
+vim.opt.foldtext = "v:lua.vim.treesitter.foldtext()"
+vim.opt.foldmethod = "expr"
+vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
+
+--
+
+vim.o.autochdir = true
+vim.o.fillchars = "stl: ,stlnc: ,eob:░,vert:│"
+vim.o.list = false
+vim.o.scrolloff = 7
+vim.o.splitkeep = "screen"
+vim.o.updatetime = 50
+vim.o.timeout = true
+vim.o.timeoutlen = 10
+vim.o.icm = "split"
+-- vim.o.cia = 'kind,abbr,menu' wait for nightly to drop
+
+vim.o.showmode = false
+
+
+-- Use rg
+vim.o.grepprg = [[rg --glob "!.jj" --glob "!.git" --no-heading --vimgrep --follow $*]]
+vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" }
+
+vim.fn.sign_define(
+	"DiagnosticSignError",
+	{ text = "", hl = "DiagnosticSignError", texthl = "DiagnosticSignError", culhl = "DiagnosticSignErrorLine" }
+)
+vim.fn.sign_define(
+	"DiagnosticSignWarn",
+	{ text = "", hl = "DiagnosticSignWarn", texthl = "DiagnosticSignWarn", culhl = "DiagnosticSignWarnLine" }
+)
+vim.fn.sign_define(
+	"DiagnosticSignInfo",
+	{ text = "", hl = "DiagnosticSignInfo", texthl = "DiagnosticSignInfo", culhl = "DiagnosticSignInfoLine" }
+)
+vim.fn.sign_define(
+	"DiagnosticSignHint",
+	{ text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" }
+)
+
+-- Make <Tab> work for snippets
+vim.keymap.set({ "i", "s" }, "<Tab>", function()
+	if vim.snippet.active({ direction = 1 }) then
+		return "<cmd>lua vim.snippet.jump(1)<cr>"
+	else
+		return "<Tab>"
+	end
+end, { expr = true })
+
+vim.keymap.set({ "n" }, "<c-/>", "gcc", { remap = true })
+vim.keymap.set({ "v" }, "<c-/>", "gc", { remap = true })
+vim.keymap.set({ "n" }, "<c-_>", "gcc", { remap = true })
+vim.keymap.set({ "v" }, "<c-_>", "gc", { remap = true })
+vim.keymap.set("n", "zz", "zt", { remap = true })
diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
new file mode 100644
index 0000000..852d1f5
--- /dev/null
+++ b/home/common/nvim/lsp.lua
@@ -0,0 +1,92 @@
+vim.keymap.set("n", "<space>d", vim.diagnostic.setloclist, { desc = "Add buffer diagnostics to the location list." })
+
+vim.api.nvim_create_autocmd("LspAttach", {
+	group = vim.api.nvim_create_augroup("UserLspConfig", {}),
+	callback = function(ev)
+		-- Enable completion triggered by <c-x><c-o>
+		vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
+
+		-- Buffer local mappings.
+		-- See `:help vim.lsp.*` for documentation on any of the below functions
+		local opts = function(str)
+			return { buffer = ev.buf, desc = str }
+		end
+
+		local client = vim.lsp.get_client_by_id(ev.data.client_id)
+		if client.server_capabilities.codeLensProvider then
+			vim.lsp.codelens.refresh({ bufnr = bufnr })
+		end
+
+		vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
+		vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
+		vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, {})
+
+		vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts("Declaration"))
+		vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts("Definition"))
+		vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts("Implementation"))
+		vim.keymap.set("n", "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
+		vim.keymap.set("i", "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
+		vim.keymap.set("n", "<space>wa", vim.lsp.buf.add_workspace_folder, opts("Add Workspace Folder"))
+		vim.keymap.set("n", "<space>wr", vim.lsp.buf.remove_workspace_folder, opts("Remove Workspace Folder"))
+		vim.keymap.set("n", "<space>wl", function()
+			print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+		end, opts("List Workspace Folders"))
+		vim.keymap.set("n", "<space>D", vim.lsp.buf.type_definition, opts("Type Definition"))
+		vim.keymap.set("n", "<space>r", vim.lsp.buf.rename, opts("Rename Symbol"))
+		vim.keymap.set({ "n", "v" }, "<space>a", vim.lsp.buf.code_action, opts("Code Action"))
+		vim.keymap.set("n", "gr", vim.lsp.buf.references, opts("Buffer References"))
+		vim.keymap.set("n", "<localleader>f", function()
+			vim.lsp.buf.format({ async = true })
+		end, opts("Format Buffer"))
+	end,
+})
+
+local configs = require('lspconfig.configs')
+local lspconfig = require("lspconfig")
+local capabilities = vim.lsp.protocol.make_client_capabilities()
+
+local servers = {
+  'gopls',
+  'nil_ls',
+  'ts_ls',
+}
+
+for _, ls in ipairs(servers) do
+  lspconfig[ls].setup {
+    capabilities = capabilities,
+    on_attach = function(_, buf)
+      vim.api.nvim_set_option_value('omnifunc', 'v:lua.MiniCompletion.completefunc_lsp', {buf = buf})
+    end,
+  }
+end
+
+lspconfig.nixd.setup({
+  capabilities = capabilities,
+	cmd = { "nixd" },
+	settings = {
+		nixd = {
+			nixpkgs = { expr = "import <nixpkgs> { }" },
+			formatting = { command = { "nixfmt" } },
+			options = {},
+		},
+	},
+})
+
+lspconfig.lua_ls.setup({
+  capabilities = capabilities,
+	settings = {
+		Lua = {
+			runtime = {
+				version = "LuaJIT",
+				path = vim.split(package.path, ";"),
+			},
+			diagnostics = { globals = { "vim", "hs" } },
+			workspace = {
+				library = {
+					[vim.fn.expand("$VIMRUNTIME/lua")] = true,
+					[vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true,
+				},
+			},
+		},
+	},
+})
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
new file mode 100644
index 0000000..c7d4689
--- /dev/null
+++ b/home/common/nvim/mini.lua
@@ -0,0 +1,130 @@
+          local opts = function(label)
+            return {noremap = true, silent = true, desc = label}
+          end
+          require('mini.ai').setup()
+          require('mini.align').setup()
+          require('mini.bracketed').setup()
+          require('mini.completion').setup()
+          require('mini.diff').setup()
+          require('mini.extra').setup()
+          require('mini.icons').setup()
+          require('mini.jump').setup()
+          -- require('mini.pairs').setup()
+          -- require('mini.statusline').setup()
+          require('mini.surround').setup()
+          require('mini.splitjoin').setup()
+
+          require('mini.files').setup()
+          local oil_style = function()
+            if not MiniFiles.close() then
+              MiniFiles.open(vim.api.nvim_buf_get_name(0))
+              MiniFiles.reveal_cwd()
+            end
+          end
+          vim.keymap.set('n', '-', oil_style, opts("File Explorer"));
+
+          local hipatterns = require('mini.hipatterns')
+          hipatterns.setup({  -- highlight strings and colors
+            highlighters = {
+              -- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
+              fixme = { pattern = '%f[%w]()FIXME()%f[%W]', group = 'MiniHipatternsFixme' },
+              hack  = { pattern = '%f[%w]()HACK()%f[%W]',  group = 'MiniHipatternsHack'  },
+              todo  = { pattern = '%f[%w]()TODO()%f[%W]',  group = 'MiniHipatternsTodo'  },
+              note  = { pattern = '%f[%w]()NOTE()%f[%W]',  group = 'MiniHipatternsNote'  },
+
+              -- Highlight hex color strings (`#rrggbb`) using that color
+              hex_color = hipatterns.gen_highlighter.hex_color(),
+            }
+          })
+
+          require('mini.jump2d').setup({
+            mappings = {
+              start_jumping = 'gw'
+            }
+          })
+
+          require('mini.pick').setup({
+            mappings = {
+              move_down = '<tab>'
+            },
+            options = {
+              use_cache = true
+            }
+          })
+          MiniPick.registry.files_root = function(local_opts)
+            local root_patterns = { ".jj", ".git" }
+            local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])
+            local opts = { source = { cwd = root_dir, tool = "ripgrep"} }
+            local_opts.cwd = root_dir
+            local_opts.tool = "rg"
+            return MiniPick.builtin.files(local_opts, opts)
+          end
+          MiniPick.registry.grep_live_root = function(local_opts)
+            local root_patterns = { ".jj", ".git" }
+            local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])
+            local opts = { source = { cwd = root_dir } }
+            local_opts.cwd = root_dir
+            return MiniPick.builtin.grep_live(local_opts, opts)
+          end
+          vim.keymap.set('n', '<space>/', "<cmd>Pick grep_live_root<cr>", opts("Live Grep"))
+          vim.keymap.set('n', '<space>F', "<cmd>Pick files<cr>", opts("Find Files in CWD"))
+          vim.keymap.set('n', '<space>ff', "<cmd>Pick files_root<cr>", opts("Find Files"))
+          vim.keymap.set('n', '<space>fr', "<cmd>Pick oldfiles<cr>", opts("Recent Files"))
+          vim.keymap.set('n', '<space>b', "<cmd>Pick buffers<cr>", opts("Buffers"))
+          vim.keymap.set('n', '<space>d', "<cmd>Pick diagnostics<cr>", opts("Diagnostics"))
+          vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
+          vim.keymap.set('n', "<space>'", "<cmd>Pick resume<cr>", opts("Last Picker"))
+          vim.keymap.set('n', "<space>g", "<cmd>Pick git_commits<cr>", opts("Git Commits"))
+
+
+          local miniclue = require('mini.clue')
+          miniclue.setup({                   -- cute prompts about bindings
+            triggers = {
+              { mode = 'n', keys = '<Leader>' },
+              { mode = 'x', keys = '<Leader>' },
+              { mode = 'n', keys = '<space>' },
+              { mode = 'x', keys = '<space>' },
+
+              -- Built-in completion
+              { mode = 'i', keys = '<C-x>' },
+
+              -- `g` key
+              { mode = 'n', keys = 'g' },
+              { mode = 'x', keys = 'g' },
+
+              -- Marks
+              { mode = 'n', keys = "'" },
+              { mode = 'n', keys = '`' },
+              { mode = 'x', keys = "'" },
+              { mode = 'x', keys = '`' },
+
+              -- Registers
+              { mode = 'n', keys = '"' },
+              { mode = 'x', keys = '"' },
+              { mode = 'i', keys = '<C-r>' },
+              { mode = 'c', keys = '<C-r>' },
+
+              -- Window commands
+              { mode = 'n', keys = '<C-w>' },
+
+              -- `z` key
+              { mode = 'n', keys = 'z' },
+              { mode = 'x', keys = 'z' },
+
+              -- Bracketed
+              { mode = 'n', keys = '[' },
+              { mode = 'n', keys = ']' },
+            },
+            clues = {
+              miniclue.gen_clues.builtin_completion(),
+              miniclue.gen_clues.g(),
+              miniclue.gen_clues.marks(),
+              miniclue.gen_clues.registers(),
+              miniclue.gen_clues.windows(),
+              miniclue.gen_clues.z(),
+            },
+            window = {
+              delay = 15,
+            }
+          })
+
diff --git a/home/common/utils.nix b/home/common/utils.nix
index 7d5fd93..0a608da 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -55,6 +55,8 @@
       arguments = [
         "--glob=!.git/*"
         "--glob=!.jj/*"
+        "--glob=!result/*"
+        "--glob=!target/*"
       ];
     };
 

From 93f6d76c7634491c3216d60a50dd43559d4ca7a9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 6 Nov 2024 00:40:41 +0100
Subject: [PATCH 445/656] nvim: use <leader>cf for code formatting

---
 home/common/nvim/lsp.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index 852d1f5..096b556 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -35,7 +35,7 @@ vim.api.nvim_create_autocmd("LspAttach", {
 		vim.keymap.set("n", "<space>r", vim.lsp.buf.rename, opts("Rename Symbol"))
 		vim.keymap.set({ "n", "v" }, "<space>a", vim.lsp.buf.code_action, opts("Code Action"))
 		vim.keymap.set("n", "gr", vim.lsp.buf.references, opts("Buffer References"))
-		vim.keymap.set("n", "<localleader>f", function()
+		vim.keymap.set("n", "<space>cf", function()
 			vim.lsp.buf.format({ async = true })
 		end, opts("Format Buffer"))
 	end,

From 8b8a7cf04b3478c24cdc3ff4b0f0d1712b44ba72 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 6 Nov 2024 00:40:41 +0100
Subject: [PATCH 446/656] nvim: cleanup

---
 home/common/nvim/mini.lua | 2 --
 1 file changed, 2 deletions(-)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index c7d4689..960c660 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -9,8 +9,6 @@
           require('mini.extra').setup()
           require('mini.icons').setup()
           require('mini.jump').setup()
-          -- require('mini.pairs').setup()
-          -- require('mini.statusline').setup()
           require('mini.surround').setup()
           require('mini.splitjoin').setup()
 

From 4f8865c8acd837e1bb97c4eefbf72f51019e0f8f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 6 Nov 2024 00:40:41 +0100
Subject: [PATCH 447/656] nvim: fancy ruler with diagnostics

---
 home/common/nvim/default.nix |  1 +
 home/common/nvim/init.lua    | 50 +++++++++++++++++++++++-------------
 2 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 0c759b8..f8e4cb1 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -10,6 +10,7 @@
     withRuby      = false;
 
     extraLuaConfig = lib.fileContents ./init.lua;
+
     extraPackages = with pkgs; [
       black
       cue
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index ba179d8..d91ad1f 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -8,18 +8,32 @@ vim.opt.laststatus = 0
 vim.opt.number = true
 vim.opt.relativenumber = true
 vim.opt.ruler = true
-vim.opt.rulerformat = "" -- FIXME: fancify!
-vim.opt.rulerformat = "%36(%5l,%-6(%c%V%) %t%)%*"
 vim.opt.syntax = "on"
 vim.opt.termguicolors = true
 
+-- Ruler
+function GetIndicators()
+  local bufnr = vim.api.nvim_get_current_buf()
+	local counts = vim.diagnostic.count(bufnr)
+	local errors = counts[vim.diagnostic.severity.ERROR] or 0
+	local warnings = counts[vim.diagnostic.severity.WARN] or 0
+	local warn_string = warnings > 0 and "%#DiagnosticWarn# " .. warnings .. " " or "  "
+	local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or "  "
+	return warn_string .. error_string
+end
+function GetRulerIcon()
+	local icon = vim.bo.modified and "" or ""
+	return "%#CustomRulerSeparator#%#CustomRulerIcon#" .. icon .. " "
+end
+vim.opt.rulerformat = "%40(%=%{%v:lua.GetIndicators()%}%#Label#│ %t %)"
+
 -- Search
 vim.opt.ignorecase = true
 vim.opt.smartcase = true
 
 -- Tab completion
 -- vim.opt.wildmode="list:longest,full"
-vim.opt.wildignore="*.swp,*.o,*.so,*.exe,*.dll"
+vim.opt.wildignore = '*.swp,*.o,*.so,*.exe,*.dll'
 
 -- Whitespaces
 vim.opt.breakindent = true
@@ -32,14 +46,14 @@ vim.opt.smartindent = true
 vim.opt.tabstop = 2
 vim.opt.wrap = false
 vim.opt.list = true
-vim.opt.listchars="tab:»·,trail:·"
+im.opt.listchars = "tab:»·,trail:·"
 
 -- Folds
 vim.opt.foldenable = false
 vim.opt.foldtext = "v:lua.vim.treesitter.foldtext()"
 vim.opt.foldmethod = "expr"
 vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
-
+qqq
 --
 
 vim.o.autochdir = true
@@ -61,29 +75,29 @@ vim.o.grepprg = [[rg --glob "!.jj" --glob "!.git" --no-heading --vimgrep --follo
 vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" }
 
 vim.fn.sign_define(
-	"DiagnosticSignError",
-	{ text = "", hl = "DiagnosticSignError", texthl = "DiagnosticSignError", culhl = "DiagnosticSignErrorLine" }
+  "DiagnosticSignError",
+  { text = "", hl = "DiagnosticSignError", texthl = "DiagnosticSignError", culhl = "DiagnosticSignErrorLine" }
 )
 vim.fn.sign_define(
-	"DiagnosticSignWarn",
-	{ text = "", hl = "DiagnosticSignWarn", texthl = "DiagnosticSignWarn", culhl = "DiagnosticSignWarnLine" }
+  "DiagnosticSignWarn",
+  { text = "", hl = "DiagnosticSignWarn", texthl = "DiagnosticSignWarn", culhl = "DiagnosticSignWarnLine" }
 )
 vim.fn.sign_define(
-	"DiagnosticSignInfo",
-	{ text = "", hl = "DiagnosticSignInfo", texthl = "DiagnosticSignInfo", culhl = "DiagnosticSignInfoLine" }
+  "DiagnosticSignInfo",
+  { text = "", hl = "DiagnosticSignInfo", texthl = "DiagnosticSignInfo", culhl = "DiagnosticSignInfoLine" }
 )
 vim.fn.sign_define(
-	"DiagnosticSignHint",
-	{ text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" }
+  "DiagnosticSignHint",
+  { text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" }
 )
 
 -- Make <Tab> work for snippets
 vim.keymap.set({ "i", "s" }, "<Tab>", function()
-	if vim.snippet.active({ direction = 1 }) then
-		return "<cmd>lua vim.snippet.jump(1)<cr>"
-	else
-		return "<Tab>"
-	end
+  if vim.snippet.active({ direction = 1 }) then
+    return "<cmd>lua vim.snippet.jump(1)<cr>"
+  else
+    return "<Tab>"
+  end
 end, { expr = true })
 
 vim.keymap.set({ "n" }, "<c-/>", "gcc", { remap = true })

From 2f0f291167f89299ba29c2e49b72e796d3b83c2d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 6 Nov 2024 00:49:36 +0100
Subject: [PATCH 448/656] cleanup

---
 home/common/nvim/init.lua | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index d91ad1f..4f01f68 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -1,5 +1,5 @@
--- vim.g.mapleader = "<space>"
-vim.g.maplocalleader = ','
+vim.g.mapleader = "<space>"
+vim.g.maplocalleader = ","
 
 -- UI
 
@@ -21,10 +21,6 @@ function GetIndicators()
 	local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or "  "
 	return warn_string .. error_string
 end
-function GetRulerIcon()
-	local icon = vim.bo.modified and "" or ""
-	return "%#CustomRulerSeparator#%#CustomRulerIcon#" .. icon .. " "
-end
 vim.opt.rulerformat = "%40(%=%{%v:lua.GetIndicators()%}%#Label#│ %t %)"
 
 -- Search
@@ -46,14 +42,13 @@ vim.opt.smartindent = true
 vim.opt.tabstop = 2
 vim.opt.wrap = false
 vim.opt.list = true
-im.opt.listchars = "tab:»·,trail:·"
+vim.opt.listchars = "tab:»·,trail:·"
 
 -- Folds
 vim.opt.foldenable = false
 vim.opt.foldtext = "v:lua.vim.treesitter.foldtext()"
 vim.opt.foldmethod = "expr"
 vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
-qqq
 --
 
 vim.o.autochdir = true

From ab8ee834e9b7e9ef591ad71b16d4fc38237ae78b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 6 Nov 2024 01:00:29 +0100
Subject: [PATCH 449/656] nvim: add diagflow plugin

---
 home/common/nvim/default.nix | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index f8e4cb1..9f1679a 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -46,6 +46,29 @@
       rustaceanvim
       targets-vim 
 
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "diagflow";
+          src = pkgs.fetchFromGitHub {
+            owner = "dgagn";
+            repo = "diagflow.nvim";
+            rev = "fc09d55d2e60edc8ed8f9939ba97b7b7e6488c99";
+            hash = "sha256-2WNuaIEXcAgUl2Kb/cCHEOrtehw9alaoM96qb4MLArw=";
+          };
+        };
+        type = "lua";
+        config = ''
+          require('diagflow').setup {
+            scope = "line",
+            gap_size = 0,
+            max_width = 50,
+            max_height = 20,
+            show_borders = true,
+            toggle_event = { "InsertEnter", "InsertLeave" },
+          }
+        '';
+      }
+
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
           name = "dieter-nvim";

From f3d1d92840113a1dbb7eacef08893c1983a27b73 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 6 Nov 2024 19:28:46 +0100
Subject: [PATCH 450/656] nvim: add bufremove

---
 home/common/nvim/mini.lua | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 960c660..02b594b 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -12,6 +12,11 @@
           require('mini.surround').setup()
           require('mini.splitjoin').setup()
 
+          -- require('mini.bufremove').setup()
+          local bufremove = require('mini.bufremove')
+          bufremove.setup()
+          vim.keymap.set('n', '<space>bd', bufremove.delete, opts("Delete"))
+
           require('mini.files').setup()
           local oil_style = function()
             if not MiniFiles.close() then
@@ -65,10 +70,10 @@
             return MiniPick.builtin.grep_live(local_opts, opts)
           end
           vim.keymap.set('n', '<space>/', "<cmd>Pick grep_live_root<cr>", opts("Live Grep"))
-          vim.keymap.set('n', '<space>F', "<cmd>Pick files<cr>", opts("Find Files in CWD"))
-          vim.keymap.set('n', '<space>ff', "<cmd>Pick files_root<cr>", opts("Find Files"))
-          vim.keymap.set('n', '<space>fr', "<cmd>Pick oldfiles<cr>", opts("Recent Files"))
-          vim.keymap.set('n', '<space>b', "<cmd>Pick buffers<cr>", opts("Buffers"))
+          vim.keymap.set('n', '<space>F', "<cmd>Pick files<cr>", opts("Find in CWD"))
+          vim.keymap.set('n', '<space>ff', "<cmd>Pick files_root<cr>", opts("Find"))
+          vim.keymap.set('n', '<space>fr', "<cmd>Pick oldfiles<cr>", opts("Recent"))
+          vim.keymap.set('n', '<space>bb', "<cmd>Pick buffers<cr>", opts("Switch"))
           vim.keymap.set('n', '<space>d', "<cmd>Pick diagnostics<cr>", opts("Diagnostics"))
           vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
           vim.keymap.set('n', "<space>'", "<cmd>Pick resume<cr>", opts("Last Picker"))

From cdeb64a7e4a0d437830739d01cc871a0f4dab555 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 6 Nov 2024 20:43:59 +0100
Subject: [PATCH 451/656] nvim: mini + tree-sitter setup

---
 home/common/nvim/default.nix |  46 ++++++-
 home/common/nvim/mini.lua    | 257 +++++++++++++++++++----------------
 2 files changed, 181 insertions(+), 122 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 9f1679a..3f61773 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -25,18 +25,39 @@
       nodePackages.typescript-language-server
       nodePackages.bash-language-server 
       rust-analyzer
+      rustfmt
       shellcheck
       shfmt
       stylua
       tree-sitter
       tree-sitter-grammars.tree-sitter-bash
-      tree-sitter-grammars.tree-sitter-yaml
+      tree-sitter-grammars.tree-sitter-c
+      tree-sitter-grammars.tree-sitter-comment
+      tree-sitter-grammars.tree-sitter-css
+      tree-sitter-grammars.tree-sitter-cue
+      tree-sitter-grammars.tree-sitter-fish
+      tree-sitter-grammars.tree-sitter-gdscript
       tree-sitter-grammars.tree-sitter-go
-      tree-sitter-grammars.tree-sitter-markdown
-      tree-sitter-grammars.tree-sitter-lua
+      tree-sitter-grammars.tree-sitter-gomod
+      tree-sitter-grammars.tree-sitter-hcl
       tree-sitter-grammars.tree-sitter-html
-      tree-sitter-grammars.tree-sitter-vim
+      tree-sitter-grammars.tree-sitter-javascript
+      tree-sitter-grammars.tree-sitter-json
+      tree-sitter-grammars.tree-sitter-lua
+      tree-sitter-grammars.tree-sitter-markdown
       tree-sitter-grammars.tree-sitter-nix
+      tree-sitter-grammars.tree-sitter-proto
+      tree-sitter-grammars.tree-sitter-rego
+      tree-sitter-grammars.tree-sitter-rust
+      tree-sitter-grammars.tree-sitter-scss
+      tree-sitter-grammars.tree-sitter-sql
+      tree-sitter-grammars.tree-sitter-svelte
+      tree-sitter-grammars.tree-sitter-toml
+      tree-sitter-grammars.tree-sitter-tsx
+      tree-sitter-grammars.tree-sitter-typescript
+      tree-sitter-grammars.tree-sitter-vim
+      tree-sitter-grammars.tree-sitter-yaml
+      tree-sitter-grammars.tree-sitter-zig
       vscode-langservers-extracted
     ];
 
@@ -45,6 +66,7 @@
       go-nvim
       rustaceanvim
       targets-vim 
+      ts-comments-nvim
 
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
@@ -85,12 +107,26 @@
       }
 
       {
-        plugin = nvim-treesitter.withAllGrammars; # Treesitter
+        plugin = nvim-treesitter-context;
+        type = "lua";
+        config = ''
+          vim.keymap.set('n', '<space>ut', "<cmd>TSContextToggle<cr>", {noremap = true, silent = true, desc = "TS Context"})
+        '';
+      }
+
+      {
+        plugin = nvim-treesitter.withAllGrammars;
         type = "lua";
         config = ''
           require'nvim-treesitter.configs'.setup {
             highlight = { enable = true, },
             indent = { enable = true },
+            textobjects = {
+              select = {
+                enable = true,
+                lookahead = true,
+              },
+            },
           }
         '';
       }
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 02b594b..379794f 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -1,133 +1,156 @@
-          local opts = function(label)
-            return {noremap = true, silent = true, desc = label}
-          end
-          require('mini.ai').setup()
-          require('mini.align').setup()
-          require('mini.bracketed').setup()
-          require('mini.completion').setup()
-          require('mini.diff').setup()
-          require('mini.extra').setup()
-          require('mini.icons').setup()
-          require('mini.jump').setup()
-          require('mini.surround').setup()
-          require('mini.splitjoin').setup()
+local opts = function(label)
+  return { noremap = true, silent = true, desc = label }
+end
+require('mini.ai').setup()
+require('mini.align').setup()
+require('mini.bracketed').setup()
+require('mini.comment').setup()
+require('mini.completion').setup()
+require('mini.diff').setup()
+require('mini.extra').setup()
+require('mini.icons').setup()
+require('mini.jump').setup()
+require('mini.surround').setup()
+require('mini.splitjoin').setup()
+require('mini.trailspace').setup()
 
-          -- require('mini.bufremove').setup()
-          local bufremove = require('mini.bufremove')
-          bufremove.setup()
-          vim.keymap.set('n', '<space>bd', bufremove.delete, opts("Delete"))
+local bufremove = require('mini.bufremove')
+bufremove.setup()
+vim.keymap.set('n', '<space>bd', bufremove.delete, opts("Delete"))
 
-          require('mini.files').setup()
-          local oil_style = function()
-            if not MiniFiles.close() then
-              MiniFiles.open(vim.api.nvim_buf_get_name(0))
-              MiniFiles.reveal_cwd()
-            end
-          end
-          vim.keymap.set('n', '-', oil_style, opts("File Explorer"));
+require('mini.cursorword').setup({
+  delay = 800
+})
 
-          local hipatterns = require('mini.hipatterns')
-          hipatterns.setup({  -- highlight strings and colors
-            highlighters = {
-              -- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
-              fixme = { pattern = '%f[%w]()FIXME()%f[%W]', group = 'MiniHipatternsFixme' },
-              hack  = { pattern = '%f[%w]()HACK()%f[%W]',  group = 'MiniHipatternsHack'  },
-              todo  = { pattern = '%f[%w]()TODO()%f[%W]',  group = 'MiniHipatternsTodo'  },
-              note  = { pattern = '%f[%w]()NOTE()%f[%W]',  group = 'MiniHipatternsNote'  },
+local hipatterns = require('mini.hipatterns')
+hipatterns.setup({ -- highlight strings and colors
+  highlighters = {
+    -- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
+    fixme     = { pattern = '%f[%w]()FIXME()%f[%W]', group = 'MiniHipatternsFixme' },
+    hack      = { pattern = '%f[%w]()HACK()%f[%W]', group = 'MiniHipatternsHack' },
+    todo      = { pattern = '%f[%w]()TODO()%f[%W]', group = 'MiniHipatternsTodo' },
+    note      = { pattern = '%f[%w]()NOTE()%f[%W]', group = 'MiniHipatternsNote' },
 
-              -- Highlight hex color strings (`#rrggbb`) using that color
-              hex_color = hipatterns.gen_highlighter.hex_color(),
-            }
-          })
+    -- Highlight hex color strings (`#rrggbb`) using that color
+    hex_color = hipatterns.gen_highlighter.hex_color(),
+  }
+})
 
-          require('mini.jump2d').setup({
-            mappings = {
-              start_jumping = 'gw'
-            }
-          })
+local indentscope = require('mini.indentscope')
+indentscope.setup({
+  draw = {
+    delay = 10,
+    animation = indentscope.gen_animation.none(),
+  },
+  symbol = '│',
+})
 
-          require('mini.pick').setup({
-            mappings = {
-              move_down = '<tab>'
-            },
-            options = {
-              use_cache = true
-            }
-          })
-          MiniPick.registry.files_root = function(local_opts)
-            local root_patterns = { ".jj", ".git" }
-            local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])
-            local opts = { source = { cwd = root_dir, tool = "ripgrep"} }
-            local_opts.cwd = root_dir
-            local_opts.tool = "rg"
-            return MiniPick.builtin.files(local_opts, opts)
-          end
-          MiniPick.registry.grep_live_root = function(local_opts)
-            local root_patterns = { ".jj", ".git" }
-            local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])
-            local opts = { source = { cwd = root_dir } }
-            local_opts.cwd = root_dir
-            return MiniPick.builtin.grep_live(local_opts, opts)
-          end
-          vim.keymap.set('n', '<space>/', "<cmd>Pick grep_live_root<cr>", opts("Live Grep"))
-          vim.keymap.set('n', '<space>F', "<cmd>Pick files<cr>", opts("Find in CWD"))
-          vim.keymap.set('n', '<space>ff', "<cmd>Pick files_root<cr>", opts("Find"))
-          vim.keymap.set('n', '<space>fr', "<cmd>Pick oldfiles<cr>", opts("Recent"))
-          vim.keymap.set('n', '<space>bb', "<cmd>Pick buffers<cr>", opts("Switch"))
-          vim.keymap.set('n', '<space>d', "<cmd>Pick diagnostics<cr>", opts("Diagnostics"))
-          vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
-          vim.keymap.set('n', "<space>'", "<cmd>Pick resume<cr>", opts("Last Picker"))
-          vim.keymap.set('n', "<space>g", "<cmd>Pick git_commits<cr>", opts("Git Commits"))
+require('mini.jump2d').setup({
+  mappings = {
+    start_jumping = 'gw'
+  }
+})
+
+require('mini.pick').setup({
+  mappings = {
+    move_down = '<tab>'
+  },
+  options = {
+    use_cache = true
+  }
+})
+MiniPick.registry.files_root = function(local_opts)
+  local root_patterns = { ".jj", ".git" }
+  local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])
+  local_opts.cwd = root_dir
+  local_opts.tool = "rg"
+  return MiniPick.builtin.files(local_opts, { source = { cwd = root_dir, tool = "ripgrep" } })
+end
+MiniPick.registry.grep_live_root = function(local_opts)
+  local root_patterns = { ".jj", ".git" }
+  local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])
+  local_opts.cwd = root_dir
+  return MiniPick.builtin.grep_live(local_opts, { source = { cwd = root_dir } })
+end
+vim.keymap.set('n', '<space>/', "<cmd>Pick grep_live_root<cr>", opts("Live Grep"))
+vim.keymap.set('n', '<space>fF', "<cmd>Pick files<cr>", opts("FindCWD"))
+vim.keymap.set('n', '<space>ff', "<cmd>Pick files_root<cr>", opts("Find"))
+vim.keymap.set('n', '<space>fr', "<cmd>Pick oldfiles<cr>", opts("Recent"))
+vim.keymap.set('n', '<space>bb', "<cmd>Pick buffers<cr>", opts("Switch"))
+vim.keymap.set('n', '<space>d', "<cmd>Pick diagnostics<cr>", opts("Diagnostics"))
+vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
 
 
-          local miniclue = require('mini.clue')
-          miniclue.setup({                   -- cute prompts about bindings
-            triggers = {
-              { mode = 'n', keys = '<Leader>' },
-              { mode = 'x', keys = '<Leader>' },
-              { mode = 'n', keys = '<space>' },
-              { mode = 'x', keys = '<space>' },
+local miniclue = require('mini.clue')
+miniclue.setup({ -- cute prompts about bindings
+  triggers = {
+    { mode = 'n', keys = '<Leader>' },
+    { mode = 'x', keys = '<Leader>' },
+    { mode = 'n', keys = '<space>' },
+    { mode = 'x', keys = '<space>' },
 
-              -- Built-in completion
-              { mode = 'i', keys = '<C-x>' },
+    -- Built-in completion
+    { mode = 'i', keys = '<C-x>' },
 
-              -- `g` key
-              { mode = 'n', keys = 'g' },
-              { mode = 'x', keys = 'g' },
+    -- `g` key
+    { mode = 'n', keys = 'g' },
+    { mode = 'x', keys = 'g' },
 
-              -- Marks
-              { mode = 'n', keys = "'" },
-              { mode = 'n', keys = '`' },
-              { mode = 'x', keys = "'" },
-              { mode = 'x', keys = '`' },
+    -- Marks
+    { mode = 'n', keys = "'" },
+    { mode = 'n', keys = '`' },
+    { mode = 'x', keys = "'" },
+    { mode = 'x', keys = '`' },
 
-              -- Registers
-              { mode = 'n', keys = '"' },
-              { mode = 'x', keys = '"' },
-              { mode = 'i', keys = '<C-r>' },
-              { mode = 'c', keys = '<C-r>' },
+    -- Registers
+    { mode = 'n', keys = '"' },
+    { mode = 'x', keys = '"' },
+    { mode = 'i', keys = '<C-r>' },
+    { mode = 'c', keys = '<C-r>' },
 
-              -- Window commands
-              { mode = 'n', keys = '<C-w>' },
+    -- Window commands
+    { mode = 'n', keys = '<C-w>' },
 
-              -- `z` key
-              { mode = 'n', keys = 'z' },
-              { mode = 'x', keys = 'z' },
+    -- `z` key
+    { mode = 'n', keys = 'z' },
+    { mode = 'x', keys = 'z' },
 
-              -- Bracketed
-              { mode = 'n', keys = '[' },
-              { mode = 'n', keys = ']' },
-            },
-            clues = {
-              miniclue.gen_clues.builtin_completion(),
-              miniclue.gen_clues.g(),
-              miniclue.gen_clues.marks(),
-              miniclue.gen_clues.registers(),
-              miniclue.gen_clues.windows(),
-              miniclue.gen_clues.z(),
-            },
-            window = {
-              delay = 15,
-            }
-          })
+    -- Bracketed
+    { mode = 'n', keys = '[' },
+    { mode = 'n', keys = ']' },
+  },
+  clues = {
+    miniclue.gen_clues.builtin_completion(),
+    miniclue.gen_clues.g(),
+    miniclue.gen_clues.marks(),
+    miniclue.gen_clues.registers(),
+    miniclue.gen_clues.windows(),
+    miniclue.gen_clues.z(),
+  },
+  window = {
+    delay = 15,
+  }
+})
 
+local notify_win_config = function()
+  local has_statusline = vim.o.laststatus > 0
+  local pad = vim.o.cmdheight + (has_statusline and 1 or 0)
+  return { anchor = 'SE', border = 'rounded', col = vim.o.columns, row = vim.o.lines - pad }
+end
+require('mini.notify').setup({
+  window = {
+    config = notify_win_config,
+    winblend = 0,
+  },
+})
+
+require('mini.starter').setup({
+  header =
+    [[ ______                      _
+(_____ \     _              (_)
+ _____) )___| |_  ____  ____ _  ____
+|  ____/ _  |  _)/ _  |/ _  | |/ _  |
+| |   ( ( | | |_( ( | ( ( | | ( ( | |
+|_|    \_||_|\___)_||_|\_|| |_|\_||_|
+                      (_____|]]
+})

From f4aa6d3cdaf6095265a88829a6e7e51df8baa5c2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Nov 2024 01:11:48 +0100
Subject: [PATCH 452/656] nvim: use neovim-nightly

---
 flake.lock                   | 233 ++++++++++++++++++++++++++++++++---
 flake.nix                    |   1 +
 home/common/nvim/default.nix |  27 ++--
 home/common/nvim/init.lua    |   2 +-
 overlays/default.nix         |   1 -
 5 files changed, 235 insertions(+), 29 deletions(-)

diff --git a/flake.lock b/flake.lock
index 8f07eb6..6b69def 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,79 @@
 {
   "nodes": {
+    "flake-compat": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696426674,
+        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-compat_2": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696426674,
+        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-parts": {
+      "inputs": {
+        "nixpkgs-lib": [
+          "neovim-nightly-overlay",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1730504689,
+        "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "506278e768c2a08bec68eb62932193e341f55c90",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "type": "github"
+      }
+    },
+    "flake-parts_2": {
+      "inputs": {
+        "nixpkgs-lib": [
+          "neovim-nightly-overlay",
+          "hercules-ci-effects",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1712014858,
+        "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
+        "owner": "hercules-ci",
+        "repo": "flake-parts",
+        "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
+        "type": "github"
+      },
+      "original": {
+        "id": "flake-parts",
+        "type": "indirect"
+      }
+    },
     "flake-utils": {
       "inputs": {
         "systems": "systems"
@@ -29,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1730776162,
-        "narHash": "sha256-ODmmTWz3jqaPmJ1UiJgHD3oy90BTEd871GZHyT5Xn9M=",
+        "lastModified": 1730931741,
+        "narHash": "sha256-UMqGcC+14MCiTdyMrUrVX/4wJvOBXhCNdR/bt6mTank=",
         "ref": "refs/heads/main",
-        "rev": "f9199a46118f173ac7a005130f871fdf050f94d1",
-        "revCount": 7881,
+        "rev": "444cf3b402f658f33b76a05b9e43dfc2df89f892",
+        "revCount": 7904,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -57,6 +131,77 @@
         "type": "github"
       }
     },
+    "git-hooks": {
+      "inputs": {
+        "flake-compat": "flake-compat_2",
+        "gitignore": "gitignore",
+        "nixpkgs": [
+          "neovim-nightly-overlay",
+          "nixpkgs"
+        ],
+        "nixpkgs-stable": [
+          "neovim-nightly-overlay",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1730814269,
+        "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=",
+        "owner": "cachix",
+        "repo": "git-hooks.nix",
+        "rev": "d70155fdc00df4628446352fc58adc640cd705c2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "repo": "git-hooks.nix",
+        "type": "github"
+      }
+    },
+    "gitignore": {
+      "inputs": {
+        "nixpkgs": [
+          "neovim-nightly-overlay",
+          "git-hooks",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1709087332,
+        "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "gitignore.nix",
+        "type": "github"
+      }
+    },
+    "hercules-ci-effects": {
+      "inputs": {
+        "flake-parts": "flake-parts_2",
+        "nixpkgs": [
+          "neovim-nightly-overlay",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1730903510,
+        "narHash": "sha256-mnynlrPeiW0nUQ8KGZHb3WyxAxA3Ye/BH8gMjdoKP6E=",
+        "owner": "hercules-ci",
+        "repo": "hercules-ci-effects",
+        "rev": "b89ac4d66d618b915b1f0a408e2775fe3821d141",
+        "type": "github"
+      },
+      "original": {
+        "owner": "hercules-ci",
+        "repo": "hercules-ci-effects",
+        "type": "github"
+      }
+    },
     "home-manager": {
       "inputs": {
         "nixpkgs": [
@@ -64,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1730633670,
-        "narHash": "sha256-ZFJqIXpvVKvzOVFKWNRDyIyAo+GYdmEPaYi1bZB6uf0=",
+        "lastModified": 1730837930,
+        "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "8f6ca7855d409aeebe2a582c6fd6b6a8d0bf5661",
+        "rev": "2f607e07f3ac7e53541120536708e824acccfaa8",
         "type": "github"
       },
       "original": {
@@ -77,18 +222,57 @@
         "type": "github"
       }
     },
-    "nixpkgs": {
+    "neovim-nightly-overlay": {
+      "inputs": {
+        "flake-compat": "flake-compat",
+        "flake-parts": "flake-parts",
+        "git-hooks": "git-hooks",
+        "hercules-ci-effects": "hercules-ci-effects",
+        "neovim-src": "neovim-src",
+        "nixpkgs": "nixpkgs"
+      },
       "locked": {
-        "lastModified": 1730531603,
-        "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d",
+        "lastModified": 1730914682,
+        "narHash": "sha256-UHFvVeJY64rA5HKoeKCLuJET224GEDGdj7/m1PuShgw=",
+        "owner": "nix-community",
+        "repo": "neovim-nightly-overlay",
+        "rev": "59630b2edb91b71ac0a60b865aaa91cd39946577",
         "type": "github"
       },
       "original": {
-        "owner": "nixos",
-        "ref": "nixos-unstable",
+        "owner": "nix-community",
+        "repo": "neovim-nightly-overlay",
+        "type": "github"
+      }
+    },
+    "neovim-src": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1730893053,
+        "narHash": "sha256-ifiJfPkhyg/9I9aJSbtcHy3jRV4CLig7iF9ACQUycPU=",
+        "owner": "neovim",
+        "repo": "neovim",
+        "rev": "f7e32fb6e626ab198bf401765236783890f3a0d6",
+        "type": "github"
+      },
+      "original": {
+        "owner": "neovim",
+        "repo": "neovim",
+        "type": "github"
+      }
+    },
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1730831018,
+        "narHash": "sha256-2S0HwIFRxYp+afuoFORcZA9TjryAf512GmE0MTfEOPU=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "8c4dc69b9732f6bbe826b5fbb32184987520ff26",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixpkgs-unstable",
         "repo": "nixpkgs",
         "type": "github"
       }
@@ -109,12 +293,29 @@
         "type": "github"
       }
     },
+    "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1730785428,
+        "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "root": {
       "inputs": {
         "ghostty": "ghostty",
         "ghostty-hm": "ghostty-hm",
         "home-manager": "home-manager",
-        "nixpkgs": "nixpkgs",
+        "neovim-nightly-overlay": "neovim-nightly-overlay",
+        "nixpkgs": "nixpkgs_2",
         "nixpkgs-stable": "nixpkgs-stable"
       }
     },
diff --git a/flake.nix b/flake.nix
index 3cf27e9..236418f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,6 +2,7 @@
   description = "NixOS configuration";
 
   inputs = {
+    neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
 
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 3f61773..7dac9e1 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -1,13 +1,19 @@
-{ lib, pkgs, ... }:
+{
+  inputs,
+  lib,
+  pkgs,
+  ...
+}:
 {
   programs.neovim = {
-    enable        = true;
+    enable = true;
+    package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default;
     defaultEditor = true;
-    viAlias       = true;
-    vimAlias      = true;
-    withNodeJs    = false;
-    withPython3   = false;
-    withRuby      = false;
+    viAlias = true;
+    vimAlias = true;
+    withNodeJs = false;
+    withPython3 = false;
+    withRuby = false;
 
     extraLuaConfig = lib.fileContents ./init.lua;
 
@@ -21,9 +27,9 @@
       nil
       nixd
       nodePackages.prettier
-      nodePackages.typescript 
+      nodePackages.typescript
       nodePackages.typescript-language-server
-      nodePackages.bash-language-server 
+      nodePackages.bash-language-server
       rust-analyzer
       rustfmt
       shellcheck
@@ -61,11 +67,10 @@
       vscode-langservers-extracted
     ];
 
-
     plugins = with pkgs.vimPlugins; [
       go-nvim
       rustaceanvim
-      targets-vim 
+      targets-vim
       ts-comments-nvim
 
       {
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 4f01f68..b9372e9 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -60,7 +60,7 @@ vim.o.updatetime = 50
 vim.o.timeout = true
 vim.o.timeoutlen = 10
 vim.o.icm = "split"
--- vim.o.cia = 'kind,abbr,menu' wait for nightly to drop
+vim.o.cia = 'kind,abbr,menu'
 
 vim.o.showmode = false
 
diff --git a/overlays/default.nix b/overlays/default.nix
index b058a14..5b1e25a 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -9,7 +9,6 @@
     gnome-keyring = prev.gnome-keyring.overrideAttrs (oldAttrs: {
       configureFlags = oldAttrs.configureFlags or [ ] ++ [ "--disable-ssh-agent" ];
     });
-
   };
 
   unstable-packages = final: _prev: {

From 01b97bf22c53658cf8965609b49d6c22b762f9bc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Nov 2024 01:20:00 +0100
Subject: [PATCH 453/656] nix: add cachix community cache

---
 flake.nix | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/flake.nix b/flake.nix
index 236418f..b026f57 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,6 +1,18 @@
 {
   description = "NixOS configuration";
 
+  nixConfig = {
+    substituters = [
+      "https://cache.nixos.org/"
+    ];
+    extra-substituters = [
+      "https://nix-community.cachix.org"
+    ];
+    extra-trusted-public-keys = [
+      "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
+    ];
+  };
+
   inputs = {
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";

From 9bc0226264fb363b6202fc6535845ff1bdd689c0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Nov 2024 10:00:26 +0100
Subject: [PATCH 454/656] nvim: cleanup

---
 home/common/nvim/mini.lua | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 379794f..f448647 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -23,15 +23,13 @@ require('mini.cursorword').setup({
 })
 
 local hipatterns = require('mini.hipatterns')
-hipatterns.setup({ -- highlight strings and colors
+hipatterns.setup({
   highlighters = {
     -- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
     fixme     = { pattern = '%f[%w]()FIXME()%f[%W]', group = 'MiniHipatternsFixme' },
     hack      = { pattern = '%f[%w]()HACK()%f[%W]', group = 'MiniHipatternsHack' },
     todo      = { pattern = '%f[%w]()TODO()%f[%W]', group = 'MiniHipatternsTodo' },
     note      = { pattern = '%f[%w]()NOTE()%f[%W]', group = 'MiniHipatternsNote' },
-
-    -- Highlight hex color strings (`#rrggbb`) using that color
     hex_color = hipatterns.gen_highlighter.hex_color(),
   }
 })
@@ -46,18 +44,12 @@ indentscope.setup({
 })
 
 require('mini.jump2d').setup({
-  mappings = {
-    start_jumping = 'gw'
-  }
+  mappings = { start_jumping = 'gw' }
 })
 
 require('mini.pick').setup({
-  mappings = {
-    move_down = '<tab>'
-  },
-  options = {
-    use_cache = true
-  }
+  mappings = { move_down = '<tab>' },
+  options = { use_cache = true }
 })
 MiniPick.registry.files_root = function(local_opts)
   local root_patterns = { ".jj", ".git" }

From 6615366df7340d293a3efc23119ba89d5b3af00c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Nov 2024 10:00:26 +0100
Subject: [PATCH 455/656] nix: add cachix

---
 common/nix.nix | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/common/nix.nix b/common/nix.nix
index f5b4c2f..1d2bde9 100644
--- a/common/nix.nix
+++ b/common/nix.nix
@@ -24,6 +24,12 @@
           "https://cache.nixos.org/"
         ];
         trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
+        extra-substituters = [
+          "https://nix-community.cachix.org"
+        ];
+        extra-trusted-public-keys = [
+          "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
+        ];
       };
       channel.enable = false;
       registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;

From f3628d2cf1d035ed0c8e819da3a081268278410c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Nov 2024 10:00:26 +0100
Subject: [PATCH 456/656] jj: upgrade to v0.23.0

---
 flake.lock                       |   6 +-
 pkgs/jujutsu-openssh/Cargo.lock  | 160 +++++++++++++++----------------
 pkgs/jujutsu-openssh/default.nix |   6 +-
 3 files changed, 84 insertions(+), 88 deletions(-)

diff --git a/flake.lock b/flake.lock
index 6b69def..5f1ffe7 100644
--- a/flake.lock
+++ b/flake.lock
@@ -279,11 +279,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1730741070,
-        "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
+        "lastModified": 1730883749,
+        "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
+        "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede",
         "type": "github"
       },
       "original": {
diff --git a/pkgs/jujutsu-openssh/Cargo.lock b/pkgs/jujutsu-openssh/Cargo.lock
index 59484a9..f9d6918 100644
--- a/pkgs/jujutsu-openssh/Cargo.lock
+++ b/pkgs/jujutsu-openssh/Cargo.lock
@@ -123,9 +123,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.89"
+version = "1.0.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
+checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
 
 [[package]]
 name = "arc-swap"
@@ -357,9 +357,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.19"
+version = "4.5.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615"
+checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -376,9 +376,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.19"
+version = "4.5.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b"
+checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54"
 dependencies = [
  "anstream",
  "anstyle",
@@ -389,18 +389,18 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.5.30"
+version = "4.5.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb31f1f3041ef3636e425b09e588911b72fc5513b2428b5b7df130f497e6a728"
+checksum = "11611dca53440593f38e6b25ec629de50b14cdfa63adc0fb856115a2c6d97595"
 dependencies = [
  "clap",
 ]
 
 [[package]]
 name = "clap_complete_nushell"
-version = "4.5.3"
+version = "4.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fe32110e006bccf720f8c9af3fee1ba7db290c724eab61544e1d3295be3a40e"
+checksum = "315902e790cc6e5ddd20cbd313c1d0d49db77f191e149f96397230fb82a17677"
 dependencies = [
  "clap",
  "clap_complete",
@@ -800,9 +800,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678"
 
 [[package]]
 name = "futures"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -815,9 +815,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -825,15 +825,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -842,15 +842,15 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -859,21 +859,21 @@ dependencies = [
 
 [[package]]
 name = "futures-sink"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
 
 [[package]]
 name = "futures-task"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
 
 [[package]]
 name = "futures-util"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
 dependencies = [
  "futures 0.1.31",
  "futures-channel",
@@ -890,7 +890,7 @@ dependencies = [
 
 [[package]]
 name = "gen-protos"
-version = "0.22.0"
+version = "0.23.0"
 dependencies = [
  "prost-build",
 ]
@@ -1608,9 +1608,9 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.15.0"
+version = "0.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
+checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3"
 
 [[package]]
 name = "heck"
@@ -1711,7 +1711,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
 dependencies = [
  "equivalent",
- "hashbrown 0.15.0",
+ "hashbrown 0.15.1",
 ]
 
 [[package]]
@@ -1722,9 +1722,9 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
 
 [[package]]
 name = "insta"
-version = "1.40.0"
+version = "1.41.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60"
+checksum = "7e9ffc4d4892617c50a928c52b2961cb5174b6fc6ebf252b2fac9d21955c48b8"
 dependencies = [
  "console",
  "lazy_static",
@@ -1819,7 +1819,7 @@ dependencies = [
 
 [[package]]
 name = "jj-cli"
-version = "0.22.0"
+version = "0.23.0"
 dependencies = [
  "anyhow",
  "assert_cmd",
@@ -1838,7 +1838,7 @@ dependencies = [
  "dirs",
  "dunce",
  "esl01-renderdag",
- "futures 0.3.30",
+ "futures 0.3.31",
  "git2",
  "gix",
  "indexmap",
@@ -1876,7 +1876,7 @@ dependencies = [
 
 [[package]]
 name = "jj-lib"
-version = "0.22.0"
+version = "0.23.0"
 dependencies = [
  "assert_matches",
  "async-trait",
@@ -1891,11 +1891,12 @@ dependencies = [
  "digest",
  "either",
  "esl01-renderdag",
- "futures 0.3.30",
+ "futures 0.3.31",
  "git2",
  "gix",
  "gix-filter",
  "glob",
+ "hashbrown 0.15.1",
  "hex",
  "ignore",
  "indexmap",
@@ -1917,6 +1918,7 @@ dependencies = [
  "ref-cast",
  "regex",
  "rustix",
+ "same-file",
  "serde",
  "serde_json",
  "smallvec",
@@ -1936,7 +1938,7 @@ dependencies = [
 
 [[package]]
 name = "jj-lib-proc-macros"
-version = "0.22.0"
+version = "0.23.0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1978,9 +1980,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "libc"
-version = "0.2.159"
+version = "0.2.161"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
+checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
 
 [[package]]
 name = "libgit2-sys"
@@ -2203,12 +2205,11 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.20.1"
+version = "1.20.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
+checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
 dependencies = [
  "parking_lot_core",
- "portable-atomic",
 ]
 
 [[package]]
@@ -2300,9 +2301,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pest"
-version = "2.7.13"
+version = "2.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9"
+checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
 dependencies = [
  "memchr",
  "thiserror",
@@ -2311,9 +2312,9 @@ dependencies = [
 
 [[package]]
 name = "pest_derive"
-version = "2.7.13"
+version = "2.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0"
+checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd"
 dependencies = [
  "pest",
  "pest_generator",
@@ -2321,9 +2322,9 @@ dependencies = [
 
 [[package]]
 name = "pest_generator"
-version = "2.7.13"
+version = "2.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e"
+checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e"
 dependencies = [
  "pest",
  "pest_meta",
@@ -2334,9 +2335,9 @@ dependencies = [
 
 [[package]]
 name = "pest_meta"
-version = "2.7.13"
+version = "2.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f"
+checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d"
 dependencies = [
  "once_cell",
  "pest",
@@ -2405,12 +2406,6 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2"
 
-[[package]]
-name = "portable-atomic"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"
-
 [[package]]
 name = "ppv-lite86"
 version = "0.2.20"
@@ -2469,9 +2464,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.86"
+version = "1.0.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
 dependencies = [
  "unicode-ident",
 ]
@@ -2576,19 +2571,20 @@ dependencies = [
 
 [[package]]
 name = "ratatui"
-version = "0.26.3"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef"
+checksum = "d16546c5b5962abf8ce6e2881e722b4e0ae3b6f1a08a26ae3573c55853ca68d3"
 dependencies = [
  "bitflags 2.6.0",
  "cassowary",
  "compact_str",
  "crossterm",
- "itertools 0.12.1",
+ "itertools 0.13.0",
  "lru",
  "paste",
  "stability",
  "strum",
+ "strum_macros",
  "unicode-segmentation",
  "unicode-truncate",
  "unicode-width",
@@ -2656,9 +2652,9 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.11.0"
+version = "1.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2733,9 +2729,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustix"
-version = "0.38.37"
+version = "0.38.39"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
+checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee"
 dependencies = [
  "bitflags 2.6.0",
  "errno",
@@ -2773,9 +2769,9 @@ checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db"
 
 [[package]]
 name = "scm-record"
-version = "0.3.0"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a1bf431016c7a34038f440696c672f0fee1a15d6aea31fe100df6974a35bf5f"
+checksum = "0d344fd2a7dd1580458c344f977c64ce7b1b1ad1d4f959ab6d2ca2cbab44de69"
 dependencies = [
  "cassowary",
  "crossterm",
@@ -2839,9 +2835,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.128"
+version = "1.0.132"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
+checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"
 dependencies = [
  "itoa",
  "memchr",
@@ -3015,9 +3011,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.79"
+version = "2.0.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
+checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3088,11 +3084,11 @@ dependencies = [
 
 [[package]]
 name = "testutils"
-version = "0.22.0"
+version = "0.23.0"
 dependencies = [
  "async-trait",
  "config",
- "futures 0.3.30",
+ "futures 0.3.31",
  "git2",
  "hex",
  "itertools 0.13.0",
@@ -3115,18 +3111,18 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.64"
+version = "1.0.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
+checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.64"
+version = "1.0.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
+checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3176,9 +3172,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.40.0"
+version = "1.41.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
+checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb"
 dependencies = [
  "backtrace",
  "bytes",
@@ -3528,7 +3524,7 @@ checksum = "88bc4c9bb443a7aae10d4fa7807bffc397805315e2305288c90c80e2f66cfb52"
 dependencies = [
  "anyhow",
  "bytes",
- "futures 0.3.30",
+ "futures 0.3.31",
  "maplit",
  "serde",
  "serde_bser",
diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
index 8035f56..ff65c83 100644
--- a/pkgs/jujutsu-openssh/default.nix
+++ b/pkgs/jujutsu-openssh/default.nix
@@ -16,13 +16,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "jujutsu-openssh";
-  version = "0.22.0+pr3191.openssh";
+  version = "0.23.0+pr3191.openssh";
 
   src = fetchFromGitHub {
     owner = "dln";
     repo = "jj";
-    rev = "da04712b5735fadb0d9c164f301723a4f9830936"; # https://github.com/dln/jj/tree/openssh
-    hash = "sha256-IhUJPH/h6Gm8zv7Ps1UxeMSqYAt1FO2ZMReLEAoOVmk=";
+    rev = "aa61f294708502d4faf120720252b4aa76157f2d"; # https://github.com/dln/jj/tree/openssh
+    hash = "sha256-5U873EtczuQBysXmfhLh0wrZ7rdkszOKHlakROBckWI=";
   };
 
   cargoLock.lockFile = ./Cargo.lock;

From 2bad613a8ab25020f04937b584f8947a940f8677 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Nov 2024 12:05:47 +0100
Subject: [PATCH 457/656] nvim: completion and styling

---
 home/common/fish.nix                        |   2 +-
 home/common/nvim/default.nix                |  13 +-
 home/common/nvim/dieter/colors/dieter.lua   |   2 +
 home/common/nvim/dieter/lua/dieter/hsl.lua  |  71 ++++++++
 home/common/nvim/dieter/lua/dieter/init.lua | 183 ++++++++++++++++++++
 home/common/nvim/mini.lua                   |  39 ++++-
 6 files changed, 303 insertions(+), 7 deletions(-)
 create mode 100644 home/common/nvim/dieter/colors/dieter.lua
 create mode 100644 home/common/nvim/dieter/lua/dieter/hsl.lua
 create mode 100644 home/common/nvim/dieter/lua/dieter/init.lua

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 2166133..cc620c9 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -1,9 +1,9 @@
 { lib, pkgs, ... }:
 {
-
   programs.fish = {
     enable = true;
 
+
     plugins = [
       {
         name = "grc";
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 7dac9e1..f9de77f 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -5,6 +5,9 @@
   ...
 }:
 {
+
+  programs.man.generateCaches = false;
+
   programs.neovim = {
     enable = true;
     package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default;
@@ -99,11 +102,7 @@
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
           name = "dieter-nvim";
-          src = pkgs.fetchgit {
-            url = "https://patagia.dev/Patagia/dieter.nvim.git";
-            rev = "08fae6ffec4ae70ba6b2e1cafa780ff317ef0b61";
-            hash = "sha256-C+Vo2SUVfNMkBwuLWqLoA59Pmy9aFwur7fBpfVkLm6Q=";
-          };
+          src = ./dieter;
         };
         type = "lua";
         config = ''
@@ -115,6 +114,10 @@
         plugin = nvim-treesitter-context;
         type = "lua";
         config = ''
+          require'treesitter-context'.setup{
+            enable = false,
+          }
+
           vim.keymap.set('n', '<space>ut', "<cmd>TSContextToggle<cr>", {noremap = true, silent = true, desc = "TS Context"})
         '';
       }
diff --git a/home/common/nvim/dieter/colors/dieter.lua b/home/common/nvim/dieter/colors/dieter.lua
new file mode 100644
index 0000000..38e858c
--- /dev/null
+++ b/home/common/nvim/dieter/colors/dieter.lua
@@ -0,0 +1,2 @@
+package.loaded["dieter"] = nil
+require("dieter")
diff --git a/home/common/nvim/dieter/lua/dieter/hsl.lua b/home/common/nvim/dieter/lua/dieter/hsl.lua
new file mode 100644
index 0000000..1d1b287
--- /dev/null
+++ b/home/common/nvim/dieter/lua/dieter/hsl.lua
@@ -0,0 +1,71 @@
+-- https://github.com/EmmanuelOga/columns/blob/master/utils/color.lua
+
+local M = {}
+
+--- Converts an HSL color value to RGB. Conversion formula
+--- adapted from http://en.wikipedia.org/wiki/HSL_color_space.
+--- Assumes h, s, and l are contained in the set [0, 1] and
+--- returns r, g, and b in the set [0, 255].
+---
+--- @param h number      The hue
+--- @param s number      The saturation
+--- @param l number      The lightness
+--- @return number, number, number     # The RGB representation
+function M.hslToRgb(h, s, l)
+  --- @type number, number, number
+  local r, g, b
+
+  if s == 0 then
+    r, g, b = l, l, l -- achromatic
+  else
+    --- @param p number
+    --- @param q number
+    --- @param t number
+    local function hue2rgb(p, q, t)
+      if t < 0 then
+        t = t + 1
+      end
+      if t > 1 then
+        t = t - 1
+      end
+      if t < 1 / 6 then
+        return p + (q - p) * 6 * t
+      end
+      if t < 1 / 2 then
+        return q
+      end
+      if t < 2 / 3 then
+        return p + (q - p) * (2 / 3 - t) * 6
+      end
+      return p
+    end
+
+    --- @type number
+    local q
+    if l < 0.5 then
+      q = l * (1 + s)
+    else
+      q = l + s - l * s
+    end
+    local p = 2 * l - q
+
+    r = hue2rgb(p, q, h + 1 / 3)
+    g = hue2rgb(p, q, h)
+    b = hue2rgb(p, q, h - 1 / 3)
+  end
+
+  return r * 255, g * 255, b * 255
+end
+
+--- Converts an HSL color value to RGB in Hex representation.
+--- @param  h number   The hue
+--- @param  s number   The saturation
+--- @param  l number   The lightness
+--- @return   string   # The hex representation
+function M.hslToHex(h, s, l)
+  local r, g, b = M.hslToRgb(h / 360, s / 100, l / 100)
+
+  return string.format("#%02x%02x%02x", r, g, b)
+end
+
+return M
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
new file mode 100644
index 0000000..f96a850
--- /dev/null
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -0,0 +1,183 @@
+local hsl = require("dieter.hsl").hslToHex
+
+local colors = {
+	light = {
+		background = hsl(240, 100, 100),
+		foreground = hsl(0, 0, 13),
+
+		accent1 = hsl(12, 100, 50),
+
+		dimmed = hsl(0, 0, 80),
+		dimmed_subtle = hsl(0, 0, 20),
+
+		string = hsl(96, 50, 33),
+		comment = hsl(230, 66, 40),
+		comment_error = hsl(2, 85, 40),
+
+		diagnostic_error = hsl(347, 80, 45),
+		diagnostic_warning = hsl(30, 100, 50),
+		diagnostic_info = hsl(145, 80, 30),
+		diagnostic_hint = hsl(145, 80, 30),
+
+		popup_error_bg = hsl(0, 90, 99),
+		popup_warning_bg = hsl(27, 90, 99),
+		popup_info_bg = hsl(112, 90, 99),
+		popup_hint_bg = hsl(112, 90, 99),
+
+		add = hsl(84, 50, 80),
+		add_quarter = hsl(84, 80, 95),
+		change = hsl(41, 80, 80),
+		change_quarter = hsl(224, 100, 85),
+		delete = hsl(350, 100, 40),
+		delete_quarter = hsl(350, 100, 85),
+
+		dialog_bg = hsl(224, 5, 92),
+		selection = hsl(270, 75, 92),
+		highlight_subtle = hsl(0, 0, 94),
+		highlight_intense = hsl(42, 100, 30),
+
+	},
+
+	dark = {
+		background = hsl(216, 28, 7),
+		foreground = hsl(0, 0, 80),
+
+		accent1 = hsl(12, 100, 50),
+
+		dimmed = hsl(0, 0, 25),
+		dimmed_subtle = hsl(0, 0, 50),
+
+		highlight_subtle = hsl(0, 0, 6),
+		highlight_intense = hsl(58, 100, 60),
+
+		string = hsl(96, 50, 70),
+		comment = hsl(220, 50, 60),
+		comment_error = hsl(2, 85, 50),
+
+		diagnostic_error = hsl(353, 100, 45),
+		diagnostic_warning = hsl(30, 100, 50),
+		diagnostic_info = hsl(176, 80, 60),
+		diagnostic_hint = hsl(176, 80, 60),
+
+		popup_error_bg = hsl(0, 95, 7),
+		popup_warning_bg = hsl(27, 95, 7),
+		popup_info_bg = hsl(112, 95, 7),
+		popup_hint_bg = hsl(112, 95, 7),
+
+		add = hsl(100, 100, 12),
+		add_quarter = hsl(84, 80, 15),
+		change = hsl(41, 100, 15),
+		change_quarter = hsl(224, 100, 15),
+		delete = hsl(350, 100, 40),
+		delete_quarter = hsl(350, 100, 15),
+
+		-- dialog_bg = background,
+		-- dialog_fg = hsl(216, 70, 80),
+		-- dialog_bg = hsl(216, 25, 20),
+		-- selection = hsl(216, 25, 33),
+		selection = hsl(213, 60, 40),
+	},
+
+}
+
+local c = colors[vim.o.background]
+c.dialog_fg = c.foreground
+c.dialog_bg = c.background
+
+local theme = {
+	Normal = { fg = c.foreground, bg = c.background },
+
+	Constant = { link = "NormalNC" },
+	Delimiter = { link = "NormalNC" },
+	Identifier = { link = "NormalNC" },
+	Keyword = { fg = c.foreground, bold = true },
+	Operator = { link = "NormalNC" },
+	Special = { link = "NormalNC" },
+	Type = { link = "NormalNC" },
+
+	String = { fg = c.string },
+
+	Comment = { fg = c.comment, italic = true, bold = true },
+	CommentError = { fg = c.comment_error, italic = true, bold = true },
+	["@comment.note"] = { link = "Comment" },
+	["@comment.todo"] = { link = "CommentError" },
+	["@comment.error"] = { link = "CommentError" },
+	["@comment.warning"] = { link = "CommentError" },
+
+	DiffAdd = { fg = c.add, bg = c.add_quarter },
+	GitSignsAdd = { fg = c.add, bg = c.background },
+	GitSignsAddNr = { link = "DiffAdd" },
+	DiffChange = { fg = c.change, bg = c.change_quarter },
+	GitSignsChange = { fg = c.change, bg = c.background },
+	GitSignsChangeNr = { link = "DiffChange" },
+	DiffDelete = { fg = c.delete, bg = c.delete_quarter },
+	GitSignsDelete = { fg = c.delete, bg = c.background },
+	GitSignsDeleteNr = { link = "DiffDelete" },
+
+	-- Treesitter
+	["@function"] = { link = "NormalNC" },
+	["@special"] = { link = "NormalNC" },
+	["@variable"] = { link = "NormalNC" },
+	["@lsp.type.variable"] = { fg = c.dimmed_subtle },
+
+	-- UI Elements
+	CursorLine = { bg = c.highlight_subtle },
+
+	DiagnosticError = { fg = c.diagnostic_error, italic = true },
+	DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.popup_error_bg },
+	DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
+	DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
+	DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
+	DiagnosticUnderlineError = { fg = c.diagnostic_error, undercurl = true },
+	DiagnosticUnderlineWarn = { fg = c.diagnostic_warn, undercurl = true },
+	DiagnosticUnderlineInfo = { fg = c.diagnostic_info, undercurl = true },
+	DiagnosticUnderlinehint = { fg = c.diagnostic_hint, undercurl = true },
+
+	DiagnosticSignError = { fg = c.diagnostic_error },
+	DiagnosticSignHint = { fg = c.diagnostic_hint },
+	DiagnosticSignInfo = { fg = c.diagnostic_info },
+	DiagnosticSignWarn = { fg = c.diagnostic_warning },
+	LineNr = { fg = c.dimmed, italic = true },
+	IndentLine = { fg = c.background },
+	IndentLineCurrent = { fg = c.dimmed },
+	TreesitterContext = { reverse = true },
+	TreesitterContextLineNumber = { bg = c.dimmed, reverse = true, italic = true },
+	InclineNormal = { bg = c.background },
+	InclineNormalNC = { bg = c.background },
+
+	WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
+	NormalFloat = { bg = c.dialog_bg, fg = c.dialog_fg },
+	Title = { fg = c.foreground, bold = true },
+
+	FloatBorder = { fg = c.dialog_fg },
+	FloatTitle = { fg = c.dialog_fg, bold = true },
+
+	MiniPickMatchCurrent = { bg = c.background, fg = c.foreground, reverse = true },
+	MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
+	MiniClueNextKey = { bg = c.dialog_bg, fg = c.dialog_fg, bold = true },
+	MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
+	MiniClueSeparator = { link = "NormalFloat" },
+
+	NoiceMini = { fg = c.foreground, italic = true },
+
+	TelescopeNormal = { fg = c.foreground, bg = c.background },
+	TelescopeBorder = { bold = true },
+	TelescopeSelection = { bg = c.selection },
+	TelescopeResultsNormal = { fg = c.foreground, bold = true },
+	TelescopeResultsComment = { fg = c.dimmed_subtle, italic = true, bold = false },
+
+	Visual = { bg = c.selection },
+	LspReferenceText = { fg = c.highlight_intense, undercurl = true },
+}
+
+vim.cmd("hi clear")
+
+if vim.fn.exists("syntax_on") == 1 then
+	vim.cmd("syntax reset")
+end
+
+for group, hl in pairs(theme) do
+	vim.api.nvim_set_hl(0, group, hl)
+end
+
+vim.g.colors_name = "dieter"
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index f448647..6424343 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -5,7 +5,6 @@ require('mini.ai').setup()
 require('mini.align').setup()
 require('mini.bracketed').setup()
 require('mini.comment').setup()
-require('mini.completion').setup()
 require('mini.diff').setup()
 require('mini.extra').setup()
 require('mini.icons').setup()
@@ -22,6 +21,44 @@ require('mini.cursorword').setup({
   delay = 800
 })
 
+require('mini.completion').setup({
+   window = {
+    info = { height = 25, width = 80, border = 'rounded' },
+    signature = { height = 25, width = 80, border = 'rounded' },
+  },
+})
+local imap_expr = function(lhs, rhs)
+  vim.keymap.set('i', lhs, rhs, { expr = true })
+end
+imap_expr('<Tab>',   [[pumvisible() ? "\<C-n>" : "\<Tab>"]])
+imap_expr('<S-Tab>', [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]])
+
+  local keycode = vim.keycode or function(x)
+    return vim.api.nvim_replace_termcodes(x, true, true, true)
+  end
+  local keys = {
+    ['cr']        = keycode('<CR>'),
+    ['ctrl-y']    = keycode('<C-y>'),
+    ['ctrl-y_cr'] = keycode('<C-y><CR>'),
+  }
+
+  _G.cr_action = function()
+    if vim.fn.pumvisible() ~= 0 then
+      -- If popup is visible, confirm selected item or add new line otherwise
+      local item_selected = vim.fn.complete_info()['selected'] ~= -1
+      return item_selected and keys['ctrl-y'] or keys['ctrl-y_cr']
+    else
+      -- If popup is not visible, use plain `<CR>`. You might want to customize
+      -- according to other plugins. For example, to use 'mini.pairs', replace
+      -- next line with `return require('mini.pairs').cr()`
+      return keys['cr']
+    end
+  end
+
+  vim.keymap.set('i', '<CR>', 'v:lua._G.cr_action()', { expr = true })
+
+
+
 local hipatterns = require('mini.hipatterns')
 hipatterns.setup({
   highlighters = {

From d3b07a2e772ce70fda0dab8f677973ba22aa3b2d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Nov 2024 17:57:44 +0100
Subject: [PATCH 458/656] nvim: Add neocodium

---
 home/common/nvim/default.nix | 35 +++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index f9de77f..5e3ef01 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -22,6 +22,7 @@
 
     extraPackages = with pkgs; [
       black
+      codeium
       cue
       go
       gopls
@@ -76,6 +77,36 @@
       targets-vim
       ts-comments-nvim
 
+      {
+        plugin = codeium-nvim;
+        type = "lua";
+        config = ''
+          require'codeium'.setup {
+            enable_chat = false,
+          }
+        '';
+      }
+
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "neocodeium";
+          src = pkgs.fetchFromGitHub {
+            owner = "monkoose";
+            repo = "neocodeium";
+            rev = "4da81528468b33585c411f31eb390dce573ccb14";  # v1.8.0
+            hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU=";
+          };
+        };
+        type = "lua";
+        config = ''
+          local neocodeium =require('neocodeium')
+          neocodeium.setup()
+          vim.keymap.set("i", "<C-j>", neocodeium.accept, { remap = true })
+          vim.keymap.set("i", "<A-f>", neocodeium.accept, { remap = true })
+          vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete, { remap = true })
+        '';
+      }
+
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
           name = "diagflow";
@@ -154,7 +185,7 @@
       }
 
       {
-        plugin = nvim-treesitter-textobjects; # helix-style selection of TS tree
+        plugin = nvim-treesitter-textobjects;
         type = "lua";
         config = ''
           require'nvim-treesitter.configs'.setup {
@@ -178,7 +209,7 @@
       }
 
       {
-        plugin = nvim-lspconfig; # Interface for LSPs
+        plugin = nvim-lspconfig;
         type = "lua";
         config = lib.fileContents ./lsp.lua;
       }

From 6cbd28148aeaab79071b49d57d900ab7260596be Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 7 Nov 2024 21:00:06 +0100
Subject: [PATCH 459/656] nvim: move treesitter to separate file

---
 home/common/nvim/default.nix    | 93 ++-------------------------------
 home/common/nvim/treesitter.nix | 79 ++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+), 90 deletions(-)
 create mode 100644 home/common/nvim/treesitter.nix

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 5e3ef01..fde0dd9 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -5,6 +5,9 @@
   ...
 }:
 {
+  imports = [
+    ./treesitter.nix
+  ];
 
   programs.man.generateCaches = false;
 
@@ -39,35 +42,6 @@
       shellcheck
       shfmt
       stylua
-      tree-sitter
-      tree-sitter-grammars.tree-sitter-bash
-      tree-sitter-grammars.tree-sitter-c
-      tree-sitter-grammars.tree-sitter-comment
-      tree-sitter-grammars.tree-sitter-css
-      tree-sitter-grammars.tree-sitter-cue
-      tree-sitter-grammars.tree-sitter-fish
-      tree-sitter-grammars.tree-sitter-gdscript
-      tree-sitter-grammars.tree-sitter-go
-      tree-sitter-grammars.tree-sitter-gomod
-      tree-sitter-grammars.tree-sitter-hcl
-      tree-sitter-grammars.tree-sitter-html
-      tree-sitter-grammars.tree-sitter-javascript
-      tree-sitter-grammars.tree-sitter-json
-      tree-sitter-grammars.tree-sitter-lua
-      tree-sitter-grammars.tree-sitter-markdown
-      tree-sitter-grammars.tree-sitter-nix
-      tree-sitter-grammars.tree-sitter-proto
-      tree-sitter-grammars.tree-sitter-rego
-      tree-sitter-grammars.tree-sitter-rust
-      tree-sitter-grammars.tree-sitter-scss
-      tree-sitter-grammars.tree-sitter-sql
-      tree-sitter-grammars.tree-sitter-svelte
-      tree-sitter-grammars.tree-sitter-toml
-      tree-sitter-grammars.tree-sitter-tsx
-      tree-sitter-grammars.tree-sitter-typescript
-      tree-sitter-grammars.tree-sitter-vim
-      tree-sitter-grammars.tree-sitter-yaml
-      tree-sitter-grammars.tree-sitter-zig
       vscode-langservers-extracted
     ];
 
@@ -141,67 +115,6 @@
         '';
       }
 
-      {
-        plugin = nvim-treesitter-context;
-        type = "lua";
-        config = ''
-          require'treesitter-context'.setup{
-            enable = false,
-          }
-
-          vim.keymap.set('n', '<space>ut', "<cmd>TSContextToggle<cr>", {noremap = true, silent = true, desc = "TS Context"})
-        '';
-      }
-
-      {
-        plugin = nvim-treesitter.withAllGrammars;
-        type = "lua";
-        config = ''
-          require'nvim-treesitter.configs'.setup {
-            highlight = { enable = true, },
-            indent = { enable = true },
-            textobjects = {
-              select = {
-                enable = true,
-                lookahead = true,
-              },
-            },
-          }
-        '';
-      }
-
-      {
-        plugin = pkgs.vimUtils.buildVimPlugin {
-          name = "nvim-tree-pairs"; # make % match in TS
-          src = pkgs.fetchFromGitHub {
-            owner = "yorickpeterse";
-            repo = "nvim-tree-pairs";
-            rev = "e7f7b6cc28dda6f3fa271ce63b0d371d5b7641da";
-            hash = "sha256-fb4EsrWAbm8+dWAhiirCPuR44MEg+KYb9hZOIuEuT24=";
-          };
-        };
-        type = "lua";
-        config = "require('tree-pairs').setup()";
-      }
-
-      {
-        plugin = nvim-treesitter-textobjects;
-        type = "lua";
-        config = ''
-          require'nvim-treesitter.configs'.setup {
-            incremental_selection = {
-              enable = true,
-              keymaps = {
-                init_selection = "<M-o>",
-                scope_incremental = "<M-O>",
-                node_incremental = "<M-o>",
-                node_decremental = "<M-i>",
-              },
-            },
-          }
-        '';
-      }
-
       {
         plugin = mini-nvim;
         type = "lua";
diff --git a/home/common/nvim/treesitter.nix b/home/common/nvim/treesitter.nix
new file mode 100644
index 0000000..4fb87ec
--- /dev/null
+++ b/home/common/nvim/treesitter.nix
@@ -0,0 +1,79 @@
+{
+  inputs,
+  lib,
+  pkgs,
+  ...
+}:
+{
+  programs.neovim = {
+    extraPackages = with pkgs; [
+      tree-sitter
+    ];
+
+    plugins = with pkgs.vimPlugins; [
+      ts-comments-nvim
+      nvim-ts-context-commentstring
+
+      {
+        plugin = nvim-treesitter-context;
+        type = "lua";
+        config = ''
+          require'treesitter-context'.setup{
+            enable = false,
+          }
+          vim.keymap.set('n', '<space>ut', "<cmd>TSContextToggle<cr>", {noremap = true, silent = true, desc = "TS Context"})
+        '';
+      }
+
+      {
+        plugin = nvim-treesitter.withAllGrammars;
+        type = "lua";
+        config = ''
+          require'nvim-treesitter.configs'.setup {
+            highlight = { enable = true, },
+            indent = { enable = true },
+            rainbow = { enable = true },
+            textobjects = {
+              select = {
+                enable = true,
+                lookahead = true,
+              },
+            },
+          }
+        '';
+      }
+
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "nvim-tree-pairs"; # make % match in TS
+          src = pkgs.fetchFromGitHub {
+            owner = "yorickpeterse";
+            repo = "nvim-tree-pairs";
+            rev = "e7f7b6cc28dda6f3fa271ce63b0d371d5b7641da";
+            hash = "sha256-fb4EsrWAbm8+dWAhiirCPuR44MEg+KYb9hZOIuEuT24=";
+          };
+        };
+        type = "lua";
+        config = "require('tree-pairs').setup()";
+      }
+
+      {
+        plugin = nvim-treesitter-textobjects;
+        type = "lua";
+        config = ''
+          require'nvim-treesitter.configs'.setup {
+            incremental_selection = {
+              enable = true,
+              keymaps = {
+                init_selection = "<M-o>",
+                scope_incremental = "<M-O>",
+                node_incremental = "<M-o>",
+                node_decremental = "<M-i>",
+              },
+            },
+          }
+        '';
+      }
+    ];
+  };
+}

From e77885fdefca2c4f94537b64e28b8c52a8f6a465 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 8 Nov 2024 18:15:40 +0100
Subject: [PATCH 460/656] nvim: mini.pick fixings

---
 home/common/nvim/init.lua | 87 ++++++++++++++++++++++++++++++++++-----
 home/common/nvim/lsp.lua  | 24 -----------
 home/common/nvim/mini.lua | 83 +++++++++++++++----------------------
 3 files changed, 110 insertions(+), 84 deletions(-)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index b9372e9..682ef71 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -1,4 +1,4 @@
-vim.g.mapleader = "<space>"
+vim.g.mapleader = ' '
 vim.g.maplocalleader = ","
 
 -- UI
@@ -14,13 +14,14 @@ vim.opt.termguicolors = true
 -- Ruler
 function GetIndicators()
   local bufnr = vim.api.nvim_get_current_buf()
-	local counts = vim.diagnostic.count(bufnr)
-	local errors = counts[vim.diagnostic.severity.ERROR] or 0
-	local warnings = counts[vim.diagnostic.severity.WARN] or 0
-	local warn_string = warnings > 0 and "%#DiagnosticWarn# " .. warnings .. " " or "  "
-	local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or "  "
-	return warn_string .. error_string
+  local counts = vim.diagnostic.count(bufnr)
+  local errors = counts[vim.diagnostic.severity.ERROR] or 0
+  local warnings = counts[vim.diagnostic.severity.WARN] or 0
+  local warn_string = warnings > 0 and "%#DiagnosticWarn# " .. warnings .. " " or "  "
+  local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or "  "
+  return warn_string .. error_string
 end
+
 vim.opt.rulerformat = "%40(%=%{%v:lua.GetIndicators()%}%#Label#│ %t %)"
 
 -- Search
@@ -95,8 +96,72 @@ vim.keymap.set({ "i", "s" }, "<Tab>", function()
   end
 end, { expr = true })
 
-vim.keymap.set({ "n" }, "<c-/>", "gcc", { remap = true })
-vim.keymap.set({ "v" }, "<c-/>", "gc", { remap = true })
-vim.keymap.set({ "n" }, "<c-_>", "gcc", { remap = true })
-vim.keymap.set({ "v" }, "<c-_>", "gc", { remap = true })
+
+-- Keymap
+local opts = function(label)
+  return { noremap = true, silent = true, desc = label }
+end
+
+-- Comments
+vim.keymap.set("n", "<c-/>", "gcc", { remap = true })
+vim.keymap.set("v", "<c-/>", "gc", { remap = true })
+vim.keymap.set("n", "<c-_>", "gcc", { remap = true })
+vim.keymap.set("v", "<c-_>", "gc", { remap = true })
+
+vim.keymap.set({ "n", "v" }, "<Leader>a", vim.lsp.buf.code_action, { remap = true, desc = "Code action" })
+vim.keymap.set("n", "<Leader>af", function()
+  vim.lsp.buf.format({ async = true })
+end, opts("Format Buffer"))
+vim.keymap.set('n', '<Leader>b', "<cmd>Pick buffers<cr>", opts("Open buffer picker"))
+vim.keymap.set('n', '<Leader>/', "<cmd>Pick grep_live_root<cr>", opts("Search workspace files"))
+vim.keymap.set('n', '<Leader>d', "<cmd>Pick diagnostic<cr>", opts("Open diagnostics picker"))
+vim.keymap.set("n", "<Leader>D", vim.diagnostic.setloclist, { desc = "Diagnostics to location list" })
+vim.keymap.set("n", "<Leader>r", vim.lsp.buf.rename, opts("Rename Symbol"))
+vim.keymap.set('n', '<Leader>F', "<cmd>Pick files<cr>", opts("Open file picker CWD"))
+vim.keymap.set('n', '<Leader>f', "<cmd>Pick files_root<cr>", opts("Open file picker"))
+vim.keymap.set('n', '<Leader>g', "<cmd>Pick oldfiles<cr>", opts("Open file picker history"))
+vim.keymap.set("n", '<Leader>k', vim.lsp.buf.hover, opts("Show docs for item under cursor"))
+vim.keymap.set('n', '<Leader>q', require('mini.bufremove').delete, opts("Delete buffer"))
+vim.keymap.set('n', '<Leader>s', "<cmd>Pick lsp scope='document_symbol'<cr>", opts("Open symbol picker"))
+vim.keymap.set('n', '<Leader>S', "<cmd>Pick lsp scope='workspace_symbol'<cr>", opts("Open workspace symbol picker"))
+vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
 vim.keymap.set("n", "zz", "zt", { remap = true })
+vim.keymap.set({ "n", "v" }, "<Leader>y", '"+y', opts("Yank to clipboard"))
+vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
+vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts("Declaration"))
+vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts("Definition"))
+vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts("Implementation"))
+vim.keymap.set("n", "gr", vim.lsp.buf.references, opts("Buffer References"))
+vim.keymap.set("n", "gt", vim.lsp.buf.type_definition, opts("Type Definition"))
+vim.keymap.set({"n", "i"}, "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
+vim.keymap.set({ "n", "v" }, "<Leader>aa", vim.lsp.buf.code_action, opts("Code Action"))
+vim.keymap.set("n", "<Leader>ws", "<C-w>s", opts("Horizontal split"))
+vim.keymap.set("n", "<Leader>wv", "<C-w>v", opts("Vertical split"))
+
+-- Completion
+vim.keymap.set('i', '<Tab>', [[pumvisible() ? "\<C-n>" : "\<Tab>"]], { expr = true })
+vim.keymap.set('i', '<S-Tab>', [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]], { expr = true })
+
+local keycode = vim.keycode or function(x)
+  return vim.api.nvim_replace_termcodes(x, true, true, true)
+end
+local keys = {
+  ['cr']        = keycode('<CR>'),
+  ['ctrl-y']    = keycode('<C-y>'),
+  ['ctrl-y_cr'] = keycode('<C-y><CR>'),
+}
+
+_G.cr_action = function()
+  if vim.fn.pumvisible() ~= 0 then
+    -- If popup is visible, confirm selected item or add new line otherwise
+    local item_selected = vim.fn.complete_info()['selected'] ~= -1
+    return item_selected and keys['ctrl-y'] or keys['ctrl-y_cr']
+  else
+    -- If popup is not visible, use plain `<CR>`. You might want to customize
+    -- according to other plugins. For example, to use 'mini.pairs', replace
+    -- next line with `return require('mini.pairs').cr()`
+    return keys['cr']
+  end
+end
+
+vim.keymap.set('i', '<CR>', 'v:lua._G.cr_action()', { expr = true })
diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index 096b556..94f92fe 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -1,5 +1,3 @@
-vim.keymap.set("n", "<space>d", vim.diagnostic.setloclist, { desc = "Add buffer diagnostics to the location list." })
-
 vim.api.nvim_create_autocmd("LspAttach", {
 	group = vim.api.nvim_create_augroup("UserLspConfig", {}),
 	callback = function(ev)
@@ -16,28 +14,6 @@ vim.api.nvim_create_autocmd("LspAttach", {
 		if client.server_capabilities.codeLensProvider then
 			vim.lsp.codelens.refresh({ bufnr = bufnr })
 		end
-
-		vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
-		vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
-		vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, {})
-
-		vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts("Declaration"))
-		vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts("Definition"))
-		vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts("Implementation"))
-		vim.keymap.set("n", "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
-		vim.keymap.set("i", "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
-		vim.keymap.set("n", "<space>wa", vim.lsp.buf.add_workspace_folder, opts("Add Workspace Folder"))
-		vim.keymap.set("n", "<space>wr", vim.lsp.buf.remove_workspace_folder, opts("Remove Workspace Folder"))
-		vim.keymap.set("n", "<space>wl", function()
-			print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
-		end, opts("List Workspace Folders"))
-		vim.keymap.set("n", "<space>D", vim.lsp.buf.type_definition, opts("Type Definition"))
-		vim.keymap.set("n", "<space>r", vim.lsp.buf.rename, opts("Rename Symbol"))
-		vim.keymap.set({ "n", "v" }, "<space>a", vim.lsp.buf.code_action, opts("Code Action"))
-		vim.keymap.set("n", "gr", vim.lsp.buf.references, opts("Buffer References"))
-		vim.keymap.set("n", "<space>cf", function()
-			vim.lsp.buf.format({ async = true })
-		end, opts("Format Buffer"))
 	end,
 })
 
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 6424343..c37cb52 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -1,9 +1,7 @@
-local opts = function(label)
-  return { noremap = true, silent = true, desc = label }
-end
 require('mini.ai').setup()
 require('mini.align').setup()
 require('mini.bracketed').setup()
+require('mini.bufremove').setup()
 require('mini.comment').setup()
 require('mini.diff').setup()
 require('mini.extra').setup()
@@ -13,50 +11,16 @@ require('mini.surround').setup()
 require('mini.splitjoin').setup()
 require('mini.trailspace').setup()
 
-local bufremove = require('mini.bufremove')
-bufremove.setup()
-vim.keymap.set('n', '<space>bd', bufremove.delete, opts("Delete"))
-
 require('mini.cursorword').setup({
   delay = 800
 })
 
 require('mini.completion').setup({
-   window = {
+  window = {
     info = { height = 25, width = 80, border = 'rounded' },
     signature = { height = 25, width = 80, border = 'rounded' },
   },
 })
-local imap_expr = function(lhs, rhs)
-  vim.keymap.set('i', lhs, rhs, { expr = true })
-end
-imap_expr('<Tab>',   [[pumvisible() ? "\<C-n>" : "\<Tab>"]])
-imap_expr('<S-Tab>', [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]])
-
-  local keycode = vim.keycode or function(x)
-    return vim.api.nvim_replace_termcodes(x, true, true, true)
-  end
-  local keys = {
-    ['cr']        = keycode('<CR>'),
-    ['ctrl-y']    = keycode('<C-y>'),
-    ['ctrl-y_cr'] = keycode('<C-y><CR>'),
-  }
-
-  _G.cr_action = function()
-    if vim.fn.pumvisible() ~= 0 then
-      -- If popup is visible, confirm selected item or add new line otherwise
-      local item_selected = vim.fn.complete_info()['selected'] ~= -1
-      return item_selected and keys['ctrl-y'] or keys['ctrl-y_cr']
-    else
-      -- If popup is not visible, use plain `<CR>`. You might want to customize
-      -- according to other plugins. For example, to use 'mini.pairs', replace
-      -- next line with `return require('mini.pairs').cr()`
-      return keys['cr']
-    end
-  end
-
-  vim.keymap.set('i', '<CR>', 'v:lua._G.cr_action()', { expr = true })
-
 
 
 local hipatterns = require('mini.hipatterns')
@@ -84,9 +48,33 @@ require('mini.jump2d').setup({
   mappings = { start_jumping = 'gw' }
 })
 
+local picker_win_config = function()
+  height = vim.o.lines - 8
+  width = 80
+  return {
+    border = 'rounded',
+    anchor = 'NW',
+    height = height,
+    width = width,
+    row = 2,
+    col = math.floor((vim.o.columns - width) / 2),
+  }
+end
+
 require('mini.pick').setup({
-  mappings = { move_down = '<tab>' },
-  options = { use_cache = true }
+  mappings = {
+    move_down      = '<tab>',
+    toggle_info    = '<C-k>',
+    toggle_preview = '<C-p>',
+  },
+  options = { use_cache = true },
+  window = {
+    config = picker_win_config,
+    -- config = {
+    --   border = 'rounded',
+    --   width = 'auto',
+    -- },
+  },
 })
 MiniPick.registry.files_root = function(local_opts)
   local root_patterns = { ".jj", ".git" }
@@ -101,13 +89,6 @@ MiniPick.registry.grep_live_root = function(local_opts)
   local_opts.cwd = root_dir
   return MiniPick.builtin.grep_live(local_opts, { source = { cwd = root_dir } })
 end
-vim.keymap.set('n', '<space>/', "<cmd>Pick grep_live_root<cr>", opts("Live Grep"))
-vim.keymap.set('n', '<space>fF', "<cmd>Pick files<cr>", opts("FindCWD"))
-vim.keymap.set('n', '<space>ff', "<cmd>Pick files_root<cr>", opts("Find"))
-vim.keymap.set('n', '<space>fr', "<cmd>Pick oldfiles<cr>", opts("Recent"))
-vim.keymap.set('n', '<space>bb', "<cmd>Pick buffers<cr>", opts("Switch"))
-vim.keymap.set('n', '<space>d', "<cmd>Pick diagnostics<cr>", opts("Diagnostics"))
-vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
 
 
 local miniclue = require('mini.clue')
@@ -157,7 +138,11 @@ miniclue.setup({ -- cute prompts about bindings
     miniclue.gen_clues.z(),
   },
   window = {
-    delay = 15,
+    delay = 0,
+    config = {
+      border = 'rounded',
+      width = 'auto',
+    },
   }
 })
 
@@ -175,7 +160,7 @@ require('mini.notify').setup({
 
 require('mini.starter').setup({
   header =
-    [[ ______                      _
+  [[ ______                      _
 (_____ \     _              (_)
  _____) )___| |_  ____  ____ _  ____
 |  ____/ _  |  _)/ _  |/ _  | |/ _  |

From 273c88b4fe9bd467c66b18eb4a3b53c104460f14 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 9 Nov 2024 00:19:18 +0100
Subject: [PATCH 461/656] tmux: use C-t as prefix

---
 home/common/tmux.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/tmux.nix b/home/common/tmux.nix
index 6c11008..141339e 100644
--- a/home/common/tmux.nix
+++ b/home/common/tmux.nix
@@ -6,7 +6,7 @@
     clock24 = true;
     escapeTime = 500;
     mouse = true;
-    shortcut = "o";
+    shortcut = "t";
     extraConfig = ''
       set -g allow-passthrough on
       set -g default-terminal "tmux-256color"

From f6f22865051a88b151fbfb7608d258360b630ca8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 9 Nov 2024 00:19:18 +0100
Subject: [PATCH 462/656] nvim: use blink.cmp for completion

https://github.com/Saghen/blink.cmp
---
 home/common/nvim/default.nix | 10 ++++++++
 home/common/nvim/init.lua    | 45 +++++++-----------------------------
 home/common/nvim/mini.lua    | 16 ++-----------
 3 files changed, 20 insertions(+), 51 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index fde0dd9..146c3ba 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -51,6 +51,16 @@
       targets-vim
       ts-comments-nvim
 
+      {
+        plugin = blink-cmp;
+        type = "lua";
+        config = ''
+          require'blink-cmp'.setup({
+            keymap = 'super-tab',
+          })
+        '';
+      }
+
       {
         plugin = codeium-nvim;
         type = "lua";
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 682ef71..bc847e8 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -53,17 +53,16 @@ vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
 --
 
 vim.o.autochdir = true
+vim.o.cia = 'kind,abbr,menu'
 vim.o.fillchars = "stl: ,stlnc: ,eob:░,vert:│"
+vim.o.icm = "split"
 vim.o.list = false
 vim.o.scrolloff = 7
-vim.o.splitkeep = "screen"
-vim.o.updatetime = 50
-vim.o.timeout = true
-vim.o.timeoutlen = 10
-vim.o.icm = "split"
-vim.o.cia = 'kind,abbr,menu'
-
 vim.o.showmode = false
+vim.o.splitkeep = "screen"
+vim.o.timeoutlen = 10
+vim.o.timeout = true
+vim.o.updatetime = 50
 
 
 -- Use rg
@@ -124,6 +123,8 @@ vim.keymap.set("n", '<Leader>k', vim.lsp.buf.hover, opts("Show docs for item und
 vim.keymap.set('n', '<Leader>q', require('mini.bufremove').delete, opts("Delete buffer"))
 vim.keymap.set('n', '<Leader>s', "<cmd>Pick lsp scope='document_symbol'<cr>", opts("Open symbol picker"))
 vim.keymap.set('n', '<Leader>S', "<cmd>Pick lsp scope='workspace_symbol'<cr>", opts("Open workspace symbol picker"))
+vim.keymap.set("n", "<Leader>ws", "<C-w>s", opts("Horizontal split"))
+vim.keymap.set("n", "<Leader>wv", "<C-w>v", opts("Vertical split"))
 vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
 vim.keymap.set("n", "zz", "zt", { remap = true })
 vim.keymap.set({ "n", "v" }, "<Leader>y", '"+y', opts("Yank to clipboard"))
@@ -135,33 +136,3 @@ vim.keymap.set("n", "gr", vim.lsp.buf.references, opts("Buffer References"))
 vim.keymap.set("n", "gt", vim.lsp.buf.type_definition, opts("Type Definition"))
 vim.keymap.set({"n", "i"}, "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
 vim.keymap.set({ "n", "v" }, "<Leader>aa", vim.lsp.buf.code_action, opts("Code Action"))
-vim.keymap.set("n", "<Leader>ws", "<C-w>s", opts("Horizontal split"))
-vim.keymap.set("n", "<Leader>wv", "<C-w>v", opts("Vertical split"))
-
--- Completion
-vim.keymap.set('i', '<Tab>', [[pumvisible() ? "\<C-n>" : "\<Tab>"]], { expr = true })
-vim.keymap.set('i', '<S-Tab>', [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]], { expr = true })
-
-local keycode = vim.keycode or function(x)
-  return vim.api.nvim_replace_termcodes(x, true, true, true)
-end
-local keys = {
-  ['cr']        = keycode('<CR>'),
-  ['ctrl-y']    = keycode('<C-y>'),
-  ['ctrl-y_cr'] = keycode('<C-y><CR>'),
-}
-
-_G.cr_action = function()
-  if vim.fn.pumvisible() ~= 0 then
-    -- If popup is visible, confirm selected item or add new line otherwise
-    local item_selected = vim.fn.complete_info()['selected'] ~= -1
-    return item_selected and keys['ctrl-y'] or keys['ctrl-y_cr']
-  else
-    -- If popup is not visible, use plain `<CR>`. You might want to customize
-    -- according to other plugins. For example, to use 'mini.pairs', replace
-    -- next line with `return require('mini.pairs').cr()`
-    return keys['cr']
-  end
-end
-
-vim.keymap.set('i', '<CR>', 'v:lua._G.cr_action()', { expr = true })
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index c37cb52..0b41ecd 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -15,14 +15,6 @@ require('mini.cursorword').setup({
   delay = 800
 })
 
-require('mini.completion').setup({
-  window = {
-    info = { height = 25, width = 80, border = 'rounded' },
-    signature = { height = 25, width = 80, border = 'rounded' },
-  },
-})
-
-
 local hipatterns = require('mini.hipatterns')
 hipatterns.setup({
   highlighters = {
@@ -49,8 +41,8 @@ require('mini.jump2d').setup({
 })
 
 local picker_win_config = function()
-  height = vim.o.lines - 8
-  width = 80
+  local height = vim.o.lines - 8
+  local width = 80
   return {
     border = 'rounded',
     anchor = 'NW',
@@ -70,10 +62,6 @@ require('mini.pick').setup({
   options = { use_cache = true },
   window = {
     config = picker_win_config,
-    -- config = {
-    --   border = 'rounded',
-    --   width = 'auto',
-    -- },
   },
 })
 MiniPick.registry.files_root = function(local_opts)

From 1eb8637840a1c3ef3856750c49428cf74a6c1c66 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 9 Nov 2024 01:33:49 +0100
Subject: [PATCH 463/656] nvim: colors

---
 home/common/nvim/default.nix                |  11 +
 home/common/nvim/dieter/lua/dieter/init.lua | 284 +++++++++++---------
 2 files changed, 165 insertions(+), 130 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 146c3ba..be14dd2 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -57,6 +57,17 @@
         config = ''
           require'blink-cmp'.setup({
             keymap = 'super-tab',
+            windows = {
+              autocomplete = {
+                border = 'none',
+              },
+              documentation = {
+                border = 'rounded',
+              },
+              signature_help = {
+                border = 'rounded',
+              },
+            },
           })
         '';
       }
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index f96a850..ab00a33 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -1,82 +1,92 @@
 local hsl = require("dieter.hsl").hslToHex
 
 local colors = {
-	light = {
-		background = hsl(240, 100, 100),
-		foreground = hsl(0, 0, 13),
+  light = {
+    background = hsl(240, 100, 100),
+    foreground = hsl(0, 0, 13),
 
-		accent1 = hsl(12, 100, 50),
+    accent1 = hsl(12, 100, 50),
 
-		dimmed = hsl(0, 0, 80),
-		dimmed_subtle = hsl(0, 0, 20),
+    dimmed = hsl(0, 0, 80),
+    dimmed_subtle = hsl(0, 0, 20),
 
-		string = hsl(96, 50, 33),
-		comment = hsl(230, 66, 40),
-		comment_error = hsl(2, 85, 40),
+    string = hsl(96, 50, 33),
+    comment = hsl(230, 66, 40),
+    comment_error = hsl(2, 85, 40),
 
-		diagnostic_error = hsl(347, 80, 45),
-		diagnostic_warning = hsl(30, 100, 50),
-		diagnostic_info = hsl(145, 80, 30),
-		diagnostic_hint = hsl(145, 80, 30),
+    diagnostic_error = hsl(347, 80, 45),
+    diagnostic_warning = hsl(30, 100, 50),
+    diagnostic_info = hsl(145, 80, 30),
+    diagnostic_hint = hsl(145, 80, 30),
 
-		popup_error_bg = hsl(0, 90, 99),
-		popup_warning_bg = hsl(27, 90, 99),
-		popup_info_bg = hsl(112, 90, 99),
-		popup_hint_bg = hsl(112, 90, 99),
+    popup_error_bg = hsl(0, 90, 99),
+    popup_warning_bg = hsl(27, 90, 99),
+    popup_info_bg = hsl(112, 90, 99),
+    popup_hint_bg = hsl(112, 90, 99),
 
-		add = hsl(84, 50, 80),
-		add_quarter = hsl(84, 80, 95),
-		change = hsl(41, 80, 80),
-		change_quarter = hsl(224, 100, 85),
-		delete = hsl(350, 100, 40),
-		delete_quarter = hsl(350, 100, 85),
+    add = hsl(84, 50, 80),
+    add_quarter = hsl(84, 80, 95),
+    change = hsl(41, 80, 80),
+    change_quarter = hsl(224, 100, 85),
+    delete = hsl(350, 100, 40),
+    delete_quarter = hsl(350, 100, 85),
 
-		dialog_bg = hsl(224, 5, 92),
-		selection = hsl(270, 75, 92),
-		highlight_subtle = hsl(0, 0, 94),
-		highlight_intense = hsl(42, 100, 30),
+    dialog_bg = hsl(224, 5, 92),
+    selection = hsl(270, 75, 92),
+    highlight_subtle = hsl(0, 0, 94),
+    highlight_intense = hsl(42, 100, 30),
 
-	},
+  },
 
-	dark = {
-		background = hsl(216, 28, 7),
-		foreground = hsl(0, 0, 80),
+  dark = {
+    background = hsl(216, 28, 7),
+    foreground = hsl(0, 0, 80),
 
-		accent1 = hsl(12, 100, 50),
+    accent1 = hsl(12, 100, 50),
 
-		dimmed = hsl(0, 0, 25),
-		dimmed_subtle = hsl(0, 0, 50),
+    dimmed = hsl(0, 0, 25),
+    dimmed_subtle = hsl(0, 0, 50),
 
-		highlight_subtle = hsl(0, 0, 6),
-		highlight_intense = hsl(58, 100, 60),
+    highlight_subtle = hsl(0, 0, 6),
+    highlight_intense = hsl(58, 100, 60),
 
-		string = hsl(96, 50, 70),
-		comment = hsl(220, 50, 60),
-		comment_error = hsl(2, 85, 50),
+    string = hsl(96, 50, 70),
+    comment = hsl(220, 50, 60),
+    comment_error = hsl(2, 85, 50),
 
-		diagnostic_error = hsl(353, 100, 45),
-		diagnostic_warning = hsl(30, 100, 50),
-		diagnostic_info = hsl(176, 80, 60),
-		diagnostic_hint = hsl(176, 80, 60),
+    diagnostic_error = hsl(353, 100, 45),
+    diagnostic_warning = hsl(30, 100, 50),
+    diagnostic_info = hsl(176, 80, 60),
+    diagnostic_hint = hsl(176, 80, 60),
 
-		popup_error_bg = hsl(0, 95, 7),
-		popup_warning_bg = hsl(27, 95, 7),
-		popup_info_bg = hsl(112, 95, 7),
-		popup_hint_bg = hsl(112, 95, 7),
+    popup_error_bg = hsl(0, 95, 7),
+    popup_warning_bg = hsl(27, 95, 7),
+    popup_info_bg = hsl(112, 95, 7),
+    popup_hint_bg = hsl(112, 95, 7),
 
-		add = hsl(100, 100, 12),
-		add_quarter = hsl(84, 80, 15),
-		change = hsl(41, 100, 15),
-		change_quarter = hsl(224, 100, 15),
-		delete = hsl(350, 100, 40),
-		delete_quarter = hsl(350, 100, 15),
+    add = hsl(100, 100, 12),
+    add_quarter = hsl(84, 80, 15),
+    change = hsl(41, 100, 15),
+    change_quarter = hsl(224, 100, 15),
+    delete = hsl(350, 100, 40),
+    delete_quarter = hsl(350, 100, 15),
 
-		-- dialog_bg = background,
-		-- dialog_fg = hsl(216, 70, 80),
-		-- dialog_bg = hsl(216, 25, 20),
-		-- selection = hsl(216, 25, 33),
-		selection = hsl(213, 60, 40),
-	},
+    -- dialog_bg = background,
+    -- dialog_fg = hsl(216, 70, 80),
+    -- dialog_bg = hsl(216, 25, 20),
+    -- selection = hsl(216, 25, 33),
+    selection = hsl(213, 60, 40),
+
+    cmp_bg = hsl(218, 30, 13),
+    cmp_fg = hsl(218, 30, 60),
+    cmp_selected_bg = hsl(218, 30, 25),
+    cmp_selected_fg = hsl(218, 50, 80),
+
+    doc_bg = hsl(220, 80, 10),
+    doc_fg = hsl(200, 30, 60),
+
+    suggestion = hsl(180, 55, 40),
+  },
 
 }
 
@@ -85,99 +95,113 @@ c.dialog_fg = c.foreground
 c.dialog_bg = c.background
 
 local theme = {
-	Normal = { fg = c.foreground, bg = c.background },
+  Normal = { fg = c.foreground, bg = c.background },
 
-	Constant = { link = "NormalNC" },
-	Delimiter = { link = "NormalNC" },
-	Identifier = { link = "NormalNC" },
-	Keyword = { fg = c.foreground, bold = true },
-	Operator = { link = "NormalNC" },
-	Special = { link = "NormalNC" },
-	Type = { link = "NormalNC" },
+  Constant = { link = "NormalNC" },
+  Delimiter = { link = "NormalNC" },
+  Identifier = { link = "NormalNC" },
+  Keyword = { fg = c.foreground, bold = true },
+  Operator = { link = "NormalNC" },
+  Special = { link = "NormalNC" },
+  Type = { link = "NormalNC" },
 
-	String = { fg = c.string },
+  String = { fg = c.string },
 
-	Comment = { fg = c.comment, italic = true, bold = true },
-	CommentError = { fg = c.comment_error, italic = true, bold = true },
-	["@comment.note"] = { link = "Comment" },
-	["@comment.todo"] = { link = "CommentError" },
-	["@comment.error"] = { link = "CommentError" },
-	["@comment.warning"] = { link = "CommentError" },
+  Comment = { fg = c.comment, italic = true, bold = true },
+  CommentError = { fg = c.comment_error, italic = true, bold = true },
+  ["@comment.note"] = { link = "Comment" },
+  ["@comment.todo"] = { link = "CommentError" },
+  ["@comment.error"] = { link = "CommentError" },
+  ["@comment.warning"] = { link = "CommentError" },
 
-	DiffAdd = { fg = c.add, bg = c.add_quarter },
-	GitSignsAdd = { fg = c.add, bg = c.background },
-	GitSignsAddNr = { link = "DiffAdd" },
-	DiffChange = { fg = c.change, bg = c.change_quarter },
-	GitSignsChange = { fg = c.change, bg = c.background },
-	GitSignsChangeNr = { link = "DiffChange" },
-	DiffDelete = { fg = c.delete, bg = c.delete_quarter },
-	GitSignsDelete = { fg = c.delete, bg = c.background },
-	GitSignsDeleteNr = { link = "DiffDelete" },
+  DiffAdd = { fg = c.add, bg = c.add_quarter },
+  GitSignsAdd = { fg = c.add, bg = c.background },
+  GitSignsAddNr = { link = "DiffAdd" },
+  DiffChange = { fg = c.change, bg = c.change_quarter },
+  GitSignsChange = { fg = c.change, bg = c.background },
+  GitSignsChangeNr = { link = "DiffChange" },
+  DiffDelete = { fg = c.delete, bg = c.delete_quarter },
+  GitSignsDelete = { fg = c.delete, bg = c.background },
+  GitSignsDeleteNr = { link = "DiffDelete" },
 
-	-- Treesitter
-	["@function"] = { link = "NormalNC" },
-	["@special"] = { link = "NormalNC" },
-	["@variable"] = { link = "NormalNC" },
-	["@lsp.type.variable"] = { fg = c.dimmed_subtle },
+  -- Treesitter
+  ["@function"] = { link = "NormalNC" },
+  ["@special"] = { link = "NormalNC" },
+  ["@variable"] = { link = "NormalNC" },
+  ["@lsp.type.variable"] = { fg = c.dimmed_subtle },
 
-	-- UI Elements
-	CursorLine = { bg = c.highlight_subtle },
+  -- UI Elements
+  CursorLine = { bg = c.highlight_subtle },
 
-	DiagnosticError = { fg = c.diagnostic_error, italic = true },
-	DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.popup_error_bg },
-	DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
-	DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
-	DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
-	DiagnosticUnderlineError = { fg = c.diagnostic_error, undercurl = true },
-	DiagnosticUnderlineWarn = { fg = c.diagnostic_warn, undercurl = true },
-	DiagnosticUnderlineInfo = { fg = c.diagnostic_info, undercurl = true },
-	DiagnosticUnderlinehint = { fg = c.diagnostic_hint, undercurl = true },
+  DiagnosticError = { fg = c.diagnostic_error, italic = true },
+  DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.popup_error_bg },
+  DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
+  DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
+  DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
+  DiagnosticUnderlineError = { fg = c.diagnostic_error, undercurl = true },
+  DiagnosticUnderlineWarn = { fg = c.diagnostic_warn, undercurl = true },
+  DiagnosticUnderlineInfo = { fg = c.diagnostic_info, undercurl = true },
+  DiagnosticUnderlinehint = { fg = c.diagnostic_hint, undercurl = true },
 
-	DiagnosticSignError = { fg = c.diagnostic_error },
-	DiagnosticSignHint = { fg = c.diagnostic_hint },
-	DiagnosticSignInfo = { fg = c.diagnostic_info },
-	DiagnosticSignWarn = { fg = c.diagnostic_warning },
-	LineNr = { fg = c.dimmed, italic = true },
-	IndentLine = { fg = c.background },
-	IndentLineCurrent = { fg = c.dimmed },
-	TreesitterContext = { reverse = true },
-	TreesitterContextLineNumber = { bg = c.dimmed, reverse = true, italic = true },
-	InclineNormal = { bg = c.background },
-	InclineNormalNC = { bg = c.background },
+  DiagnosticSignError = { fg = c.diagnostic_error },
+  DiagnosticSignHint = { fg = c.diagnostic_hint },
+  DiagnosticSignInfo = { fg = c.diagnostic_info },
+  DiagnosticSignWarn = { fg = c.diagnostic_warning },
+  LineNr = { fg = c.dimmed, italic = true },
+  IndentLine = { fg = c.background },
+  IndentLineCurrent = { fg = c.dimmed },
+  TreesitterContext = { reverse = true },
+  TreesitterContextLineNumber = { bg = c.dimmed, reverse = true, italic = true },
+  InclineNormal = { bg = c.background },
+  InclineNormalNC = { bg = c.background },
 
-	WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
-	NormalFloat = { bg = c.dialog_bg, fg = c.dialog_fg },
-	Title = { fg = c.foreground, bold = true },
+  WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
+  NormalFloat = { bg = c.dialog_bg, fg = c.dialog_fg },
+  Title = { fg = c.foreground, bold = true },
 
-	FloatBorder = { fg = c.dialog_fg },
-	FloatTitle = { fg = c.dialog_fg, bold = true },
+  FloatBorder = { fg = c.dialog_fg },
+  FloatTitle = { fg = c.dialog_fg, bold = true },
 
-	MiniPickMatchCurrent = { bg = c.background, fg = c.foreground, reverse = true },
-	MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
-	MiniClueNextKey = { bg = c.dialog_bg, fg = c.dialog_fg, bold = true },
-	MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
-	MiniClueSeparator = { link = "NormalFloat" },
+  MiniPickMatchCurrent = { bg = c.background, fg = c.foreground, reverse = true },
+  MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
+  MiniClueNextKey = { bg = c.dialog_bg, fg = c.dialog_fg, bold = true },
+  MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
+  MiniClueSeparator = { link = "NormalFloat" },
 
-	NoiceMini = { fg = c.foreground, italic = true },
+  BlinkCmpMenu = { bg = c.cmp_bg, fg = c.cmp_fg },
+  BlinkCmpMenuSelection = { bg = c.cmp_selected_bg, fg = c.cmp_selected_fg, reverse = false },
+  BlinkCmpMenuBorder = { bg = c.cmp_bg, fg = c.cmp_fg },
+  BlinkCmpLabel = { link = 'BlinkCmpMenu' },
+  BlinkCmpLabelMatch = { link = 'BlinkCmpMenu', underline = true },
 
-	TelescopeNormal = { fg = c.foreground, bg = c.background },
-	TelescopeBorder = { bold = true },
-	TelescopeSelection = { bg = c.selection },
-	TelescopeResultsNormal = { fg = c.foreground, bold = true },
-	TelescopeResultsComment = { fg = c.dimmed_subtle, italic = true, bold = false },
+  BlinkCmpDoc = { bg = c.doc_bg, fg = c.foreground },
+  BlinkCmpDocBorder = { bg = c.doc_bg, fg = c.doc_fg },
+  BlinkCmpDocDetail = { link = 'BlinkCmpDoc' },
+  BlinkCmpSignatureHelp = { link = 'BlinkCmpDoc' },
+  BlinkCmpSignatureHelpBorder = { link = 'BlinkCmpDocBorder' },
 
-	Visual = { bg = c.selection },
-	LspReferenceText = { fg = c.highlight_intense, undercurl = true },
+  NeoCodeiumSuggestion = { fg = c.suggestion , bold = true, italic = true },
+
+  NoiceMini = { fg = c.foreground, italic = true },
+
+  TelescopeNormal = { fg = c.foreground, bg = c.background },
+  TelescopeBorder = { bold = true },
+  TelescopeSelection = { bg = c.selection },
+  TelescopeResultsNormal = { fg = c.foreground, bold = true },
+  TelescopeResultsComment = { fg = c.dimmed_subtle, italic = true, bold = false },
+
+  Visual = { bg = c.selection },
+  LspReferenceText = { fg = c.highlight_intense, undercurl = true },
 }
 
 vim.cmd("hi clear")
 
 if vim.fn.exists("syntax_on") == 1 then
-	vim.cmd("syntax reset")
+  vim.cmd("syntax reset")
 end
 
 for group, hl in pairs(theme) do
-	vim.api.nvim_set_hl(0, group, hl)
+  vim.api.nvim_set_hl(0, group, hl)
 end
 
 vim.g.colors_name = "dieter"

From b433ecef3c8ee18247ab1041a020de28ba368fbc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 9 Nov 2024 10:09:10 +0100
Subject: [PATCH 464/656] nvim: blink-cmp 0.5.1 + styling

---
 flake.lock                                  | 45 +++++++++-----
 flake.nix                                   |  1 +
 home/common/nvim/default.nix                | 34 +++++++---
 home/common/nvim/dieter/lua/dieter/init.lua | 22 ++++---
 home/common/nvim/init.lua                   | 14 ++++-
 home/common/nvim/lsp.lua                    | 69 +++++++--------------
 overlays/default.nix                        |  2 +-
 7 files changed, 108 insertions(+), 79 deletions(-)

diff --git a/flake.lock b/flake.lock
index 5f1ffe7..3c15964 100644
--- a/flake.lock
+++ b/flake.lock
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1730931741,
-        "narHash": "sha256-UMqGcC+14MCiTdyMrUrVX/4wJvOBXhCNdR/bt6mTank=",
+        "lastModified": 1731023348,
+        "narHash": "sha256-9k2ynQywm8AWi27C2o+/KAFpqV6PwZgaSyqhSqW8ZOs=",
         "ref": "refs/heads/main",
-        "rev": "444cf3b402f658f33b76a05b9e43dfc2df89f892",
-        "revCount": 7904,
+        "rev": "75fe0b2dfb200dda2622b0fbc790e9451ffff236",
+        "revCount": 7916,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -232,11 +232,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1730914682,
-        "narHash": "sha256-UHFvVeJY64rA5HKoeKCLuJET224GEDGdj7/m1PuShgw=",
+        "lastModified": 1731111231,
+        "narHash": "sha256-8u8k3hnU5OxlXfhDLD3XEwAqv/M9Tb5USLCEPvXCPcM=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "59630b2edb91b71ac0a60b865aaa91cd39946577",
+        "rev": "702364e6ec794961483eba5220ca531917d03784",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1730893053,
-        "narHash": "sha256-ifiJfPkhyg/9I9aJSbtcHy3jRV4CLig7iF9ACQUycPU=",
+        "lastModified": 1731083384,
+        "narHash": "sha256-0uH8SSP6/eqCuDvUCV+s1ZwjLg6512Vj9dgKKO0iEmE=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "f7e32fb6e626ab198bf401765236783890f3a0d6",
+        "rev": "ad3472e291694b6c589d8a664459b03962eaac95",
         "type": "github"
       },
       "original": {
@@ -263,11 +263,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1730831018,
-        "narHash": "sha256-2S0HwIFRxYp+afuoFORcZA9TjryAf512GmE0MTfEOPU=",
+        "lastModified": 1730958623,
+        "narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "8c4dc69b9732f6bbe826b5fbb32184987520ff26",
+        "rev": "85f7e662eda4fa3a995556527c87b2524b691933",
         "type": "github"
       },
       "original": {
@@ -293,6 +293,22 @@
         "type": "github"
       }
     },
+    "nixpkgs-unstable": {
+      "locked": {
+        "lastModified": 1730958623,
+        "narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "85f7e662eda4fa3a995556527c87b2524b691933",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "nixpkgs_2": {
       "locked": {
         "lastModified": 1730785428,
@@ -316,7 +332,8 @@
         "home-manager": "home-manager",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
         "nixpkgs": "nixpkgs_2",
-        "nixpkgs-stable": "nixpkgs-stable"
+        "nixpkgs-stable": "nixpkgs-stable",
+        "nixpkgs-unstable": "nixpkgs-unstable"
       }
     },
     "systems": {
diff --git a/flake.nix b/flake.nix
index b026f57..848f99f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -17,6 +17,7 @@
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
+    nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 
     home-manager.url = "github:nix-community/home-manager";
     home-manager.inputs.nixpkgs.follows = "nixpkgs";
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index be14dd2..04b5299 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -46,23 +46,45 @@
     ];
 
     plugins = with pkgs.vimPlugins; [
+      friendly-snippets
       go-nvim
       rustaceanvim
       targets-vim
       ts-comments-nvim
 
       {
-        plugin = blink-cmp;
+        plugin = nvim-lspconfig;
+        type = "lua";
+        config = lib.fileContents ./lsp.lua;
+      }
+
+      {
+        plugin = pkgs.nixpkgs-unstable.vimPlugins.blink-cmp;
         type = "lua";
         config = ''
           require'blink-cmp'.setup({
-            keymap = 'super-tab',
+            keymap = {
+              preset = 'enter',
+              ["<PageDown>"] = { "scroll_documentation_down" },
+              ["<PageUp>"] = { "scroll_documentation_up" },
+            },
+            trigger = {
+              completion = {
+                show_in_snippet = true,
+              },
+              signature_help = {
+                enabled = true,
+              },
+            },
             windows = {
               autocomplete = {
                 border = 'none',
+                selection = 'preselect',
               },
               documentation = {
                 border = 'rounded',
+                auto_show = false,
+                auto_show_delay_ms = 800,
               },
               signature_help = {
                 border = 'rounded',
@@ -88,7 +110,7 @@
           src = pkgs.fetchFromGitHub {
             owner = "monkoose";
             repo = "neocodeium";
-            rev = "4da81528468b33585c411f31eb390dce573ccb14";  # v1.8.0
+            rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0
             hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU=";
           };
         };
@@ -141,12 +163,6 @@
         type = "lua";
         config = lib.fileContents ./mini.lua;
       }
-
-      {
-        plugin = nvim-lspconfig;
-        type = "lua";
-        config = lib.fileContents ./lsp.lua;
-      }
     ];
   };
 }
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index ab00a33..1e0d459 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -156,17 +156,25 @@ local theme = {
   InclineNormalNC = { bg = c.background },
 
   WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
-  NormalFloat = { bg = c.dialog_bg, fg = c.dialog_fg },
+  NormalFloat = { bg = c.doc_bg, fg = c.doc_fg },
+  FloatBorder = { fg = c.doc_fg },
+  FloatTitle = { fg = c.doc_fg, bold = true },
+
   Title = { fg = c.foreground, bold = true },
 
-  FloatBorder = { fg = c.dialog_fg },
-  FloatTitle = { fg = c.dialog_fg, bold = true },
-
+  MiniPickNormal = { link = "Normal" },
+  MiniPickBorder = { link = "MiniPickNormal" },
+  MiniPickBorderText = { link = "MiniPickBorder" },
   MiniPickMatchCurrent = { bg = c.background, fg = c.foreground, reverse = true },
-  MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
-  MiniClueNextKey = { bg = c.dialog_bg, fg = c.dialog_fg, bold = true },
+
+  MiniClueBorder = { link = "MiniPickNormal" },
+  MiniClueTitle = { bg = c.background, fg = c.foreground, bold = true },
+  MiniClueNextKey = { link = "MiniClueTitle" },
   MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
-  MiniClueSeparator = { link = "NormalFloat" },
+  MiniClueDescSingle = { bg = c.background, fg = c.foreground },
+  MiniClueSeparator = { link = "MiniClueBorder" },
+
+  MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
 
   BlinkCmpMenu = { bg = c.cmp_bg, fg = c.cmp_fg },
   BlinkCmpMenuSelection = { bg = c.cmp_selected_bg, fg = c.cmp_selected_fg, reverse = false },
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index bc847e8..823392f 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -86,6 +86,7 @@ vim.fn.sign_define(
   { text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" }
 )
 
+
 -- Make <Tab> work for snippets
 vim.keymap.set({ "i", "s" }, "<Tab>", function()
   if vim.snippet.active({ direction = 1 }) then
@@ -128,11 +129,20 @@ vim.keymap.set("n", "<Leader>wv", "<C-w>v", opts("Vertical split"))
 vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
 vim.keymap.set("n", "zz", "zt", { remap = true })
 vim.keymap.set({ "n", "v" }, "<Leader>y", '"+y', opts("Yank to clipboard"))
-vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
 vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts("Declaration"))
 vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts("Definition"))
 vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts("Implementation"))
 vim.keymap.set("n", "gr", vim.lsp.buf.references, opts("Buffer References"))
 vim.keymap.set("n", "gt", vim.lsp.buf.type_definition, opts("Type Definition"))
-vim.keymap.set({"n", "i"}, "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
+vim.keymap.set({ "n", "i" }, "<M-k>", vim.lsp.buf.signature_help, opts("Signature Help"))
 vim.keymap.set({ "n", "v" }, "<Leader>aa", vim.lsp.buf.code_action, opts("Code Action"))
+vim.keymap.set("n", "K", function()
+  vim.lsp.buf.hover {
+    border = 'rounded',
+    max_height = 24,
+    max_width = 80,
+    offset_x = 2,
+  }
+  end, {})
+
+
diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index 94f92fe..b767736 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -1,26 +1,6 @@
-vim.api.nvim_create_autocmd("LspAttach", {
-	group = vim.api.nvim_create_augroup("UserLspConfig", {}),
-	callback = function(ev)
-		-- Enable completion triggered by <c-x><c-o>
-		vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
-
-		-- Buffer local mappings.
-		-- See `:help vim.lsp.*` for documentation on any of the below functions
-		local opts = function(str)
-			return { buffer = ev.buf, desc = str }
-		end
-
-		local client = vim.lsp.get_client_by_id(ev.data.client_id)
-		if client.server_capabilities.codeLensProvider then
-			vim.lsp.codelens.refresh({ bufnr = bufnr })
-		end
-	end,
-})
-
 local configs = require('lspconfig.configs')
 local lspconfig = require("lspconfig")
 local capabilities = vim.lsp.protocol.make_client_capabilities()
-
 local servers = {
   'gopls',
   'nil_ls',
@@ -30,39 +10,36 @@ local servers = {
 for _, ls in ipairs(servers) do
   lspconfig[ls].setup {
     capabilities = capabilities,
-    on_attach = function(_, buf)
-      vim.api.nvim_set_option_value('omnifunc', 'v:lua.MiniCompletion.completefunc_lsp', {buf = buf})
-    end,
   }
 end
 
 lspconfig.nixd.setup({
   capabilities = capabilities,
-	cmd = { "nixd" },
-	settings = {
-		nixd = {
-			nixpkgs = { expr = "import <nixpkgs> { }" },
-			formatting = { command = { "nixfmt" } },
-			options = {},
-		},
-	},
+  cmd = { "nixd" },
+  settings = {
+    nixd = {
+      nixpkgs = { expr = "import <nixpkgs> { }" },
+      formatting = { command = { "nixfmt" } },
+      options = {},
+    },
+  },
 })
 
 lspconfig.lua_ls.setup({
   capabilities = capabilities,
-	settings = {
-		Lua = {
-			runtime = {
-				version = "LuaJIT",
-				path = vim.split(package.path, ";"),
-			},
-			diagnostics = { globals = { "vim", "hs" } },
-			workspace = {
-				library = {
-					[vim.fn.expand("$VIMRUNTIME/lua")] = true,
-					[vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true,
-				},
-			},
-		},
-	},
+  settings = {
+    Lua = {
+      runtime = {
+        version = "LuaJIT",
+        path = vim.split(package.path, ";"),
+      },
+      diagnostics = { globals = { "vim", "hs" } },
+      workspace = {
+        library = {
+          [vim.fn.expand("$VIMRUNTIME/lua")] = true,
+          [vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true,
+        },
+      },
+    },
+  },
 })
diff --git a/overlays/default.nix b/overlays/default.nix
index 5b1e25a..9dd6924 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -16,7 +16,7 @@
       system = final.system;
       config.allowUnfree = true;
     };
-    unstable = import inputs.nixpkgs-unstable {
+    nixpkgs-unstable = import inputs.nixpkgs-unstable {
       system = final.system;
       config.allowUnfree = true;
     };

From 38ede1036e132ebae5debc8410b1b435d3fb7ffe Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 9 Nov 2024 20:26:21 +0100
Subject: [PATCH 465/656] nix: upgrade

---
 flake.lock | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index 3c15964..1f8baf1 100644
--- a/flake.lock
+++ b/flake.lock
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1731023348,
-        "narHash": "sha256-9k2ynQywm8AWi27C2o+/KAFpqV6PwZgaSyqhSqW8ZOs=",
+        "lastModified": 1731175169,
+        "narHash": "sha256-aKEBjS6pE+nhfct8sltRNuB9AlDdQ4ua8rR+DrkidyM=",
         "ref": "refs/heads/main",
-        "rev": "75fe0b2dfb200dda2622b0fbc790e9451ffff236",
-        "revCount": 7916,
+        "rev": "799877a436b43ea86c5ef9d711a6af4f7636dbb3",
+        "revCount": 7920,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -279,11 +279,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1730883749,
-        "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=",
+        "lastModified": 1730963269,
+        "narHash": "sha256-rz30HrFYCHiWEBCKHMffHbMdWJ35hEkcRVU0h7ms3x0=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede",
+        "rev": "83fb6c028368e465cd19bb127b86f971a5e41ebc",
         "type": "github"
       },
       "original": {

From 8648722d9ab2d2589e239bf20a5074c770fff017 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 10 Nov 2024 14:18:24 +0100
Subject: [PATCH 466/656] nvim: remove nil lsp in favor of nixd

---
 home/common/nvim/lsp.lua | 1 -
 1 file changed, 1 deletion(-)

diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index b767736..7a8d0c5 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -3,7 +3,6 @@ local lspconfig = require("lspconfig")
 local capabilities = vim.lsp.protocol.make_client_capabilities()
 local servers = {
   'gopls',
-  'nil_ls',
   'ts_ls',
 }
 

From 663119c828c5f471de41da2a5d399b6f9c972438 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 10 Nov 2024 14:18:24 +0100
Subject: [PATCH 467/656] nvim: sort buffers by most recent use

---
 home/common/nvim/mini.lua | 54 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 0b41ecd..2c71357 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -78,6 +78,60 @@ MiniPick.registry.grep_live_root = function(local_opts)
   return MiniPick.builtin.grep_live(local_opts, { source = { cwd = root_dir } })
 end
 
+require("mini.pick").registry.buffers = function(local_opts, opts)
+		local_opts = vim.tbl_deep_extend(
+			"force",
+			{ sort_lastused = false, sort_mru = true, include_current = true, include_unlisted = false },
+			local_opts or {}
+		)
+		local buffers_output = vim.api.nvim_exec("buffers" .. (local_opts.include_unlisted and "!" or ""), true)
+		local cur_buf_id, include_current = vim.api.nvim_get_current_buf(), local_opts.include_current
+		local items = {}
+		local default_selection_idx = 1
+		for _, l in ipairs(vim.split(buffers_output, "\n")) do
+			local buf_str, name = l:match("^%s*%d+"), l:match('"(.*)"')
+			local buf_id = tonumber(buf_str)
+			local flag = buf_id == vim.fn.bufnr("") and "%" or (buf_id == vim.fn.bufnr("#") and "#" or " ")
+			local item = { text = name, bufnr = buf_id, flag = flag }
+			if buf_id ~= cur_buf_id or include_current then
+				if local_opts.sort_lastused and not local_opts.ignore_current_buffer and flag == "#" then
+					default_selection_idx = 2
+				end
+				if local_opts.sort_lastused and (flag == "#" or flag == "%") then
+					local idx = ((items[1] ~= nil and items[1].flag == "%") and 2 or 1)
+					table.insert(items, idx, item)
+				else
+					table.insert(items, item)
+				end
+			end
+		end
+		if local_opts.sort_mru then
+			table.sort(items, function(a, b)
+				return vim.fn.getbufinfo(a.bufnr)[1].lastused > vim.fn.getbufinfo(b.bufnr)[1].lastused
+			end)
+		end
+
+		local show = function(buf_id, items, query)
+			require("mini.pick").default_show(buf_id, items, query, { show_icons = true })
+		end
+		local default_opts = { source = { name = "Buffers", show = show } }
+		opts = vim.tbl_deep_extend("force", default_opts, opts or {}, { source = { items = items } })
+		if default_selection_idx > 1 then
+			vim.api.nvim_create_autocmd("User", {
+				pattern = "MiniPickStart",
+				once = true,
+				callback = function()
+					local mappings = require("mini.pick").get_picker_opts().mappings
+					local keys = vim.fn["repeat"](mappings.move_down, default_selection_idx - 1)
+					vim.api.nvim_input(vim.api.nvim_replace_termcodes(keys, true, true, true))
+				end,
+			})
+		end
+		return require("mini.pick").start(opts)
+	end
+
+
+
 
 local miniclue = require('mini.clue')
 miniclue.setup({ -- cute prompts about bindings

From d82a46a490673050babf189fa940c92ce0d44659 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 10 Nov 2024 17:13:12 +0100
Subject: [PATCH 468/656] nvim: ignore /nix/store and cargo files in shada /
 oldfiles + friends

---
 home/common/nvim/init.lua | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 823392f..90f5db6 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -58,7 +58,10 @@ vim.o.fillchars = "stl: ,stlnc: ,eob:░,vert:│"
 vim.o.icm = "split"
 vim.o.list = false
 vim.o.scrolloff = 7
+vim.o.shada = vim.o.shada .. ',r~/.cargo/,r~/go/,r/nix/store/,r/run/,r/tmp/,rhealth:,rterm:'
+vim.o.showcmd = false
 vim.o.showmode = false
+vim.o.smoothscroll = true
 vim.o.splitkeep = "screen"
 vim.o.timeoutlen = 10
 vim.o.timeout = true

From 0496c8544bbb441bd0106e4a8a2fae895f1dfdb5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 12 Nov 2024 21:25:53 +0100
Subject: [PATCH 469/656] home: i like file

---
 home/common/devel.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/devel.nix b/home/common/devel.nix
index 61999ee..c8e6c0a 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -8,6 +8,7 @@
     codeium
     comma
     dogdns
+    file
     gnumake
     go
     just

From a1906f23805512aaf42bfeb22803d1f8aba7e692 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 12 Nov 2024 21:25:53 +0100
Subject: [PATCH 470/656] jj: fewer log entries by default

---
 home/dln/home.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index 929189e..4ec8164 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -62,7 +62,7 @@ in
       ui = {
         "default-command" = [
           "log"
-          "--limit=25"
+          "--limit=10"
           "-T"
           "builtin_log_comfortable"
         ];

From 74e5882919a441e894b651a4556b4010bfcbf79e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 12 Nov 2024 21:25:53 +0100
Subject: [PATCH 471/656] Nix update

---
 flake.lock | 56 +++++++++++++++++++++++++++---------------------------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/flake.lock b/flake.lock
index 1f8baf1..79dd621 100644
--- a/flake.lock
+++ b/flake.lock
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1731175169,
-        "narHash": "sha256-aKEBjS6pE+nhfct8sltRNuB9AlDdQ4ua8rR+DrkidyM=",
+        "lastModified": 1731971697,
+        "narHash": "sha256-6JNMcpy0z19yOLBRt3eE4Rk4A96kcEsRv5+ym1hkv1c=",
         "ref": "refs/heads/main",
-        "rev": "799877a436b43ea86c5ef9d711a6af4f7636dbb3",
-        "revCount": 7920,
+        "rev": "29c3a52e964a97dddaed876ce472aeb167774acf",
+        "revCount": 8021,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -145,11 +145,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1730814269,
-        "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=",
+        "lastModified": 1731363552,
+        "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "d70155fdc00df4628446352fc58adc640cd705c2",
+        "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
         "type": "github"
       },
       "original": {
@@ -209,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1730837930,
-        "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=",
+        "lastModified": 1731968878,
+        "narHash": "sha256-+hTCwETOE9N8voTAaF+IzdUZz28Ws3LDpH90FWADrEE=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "2f607e07f3ac7e53541120536708e824acccfaa8",
+        "rev": "a42fa14b53ceab66274a21da480c9f8e06204173",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1731111231,
-        "narHash": "sha256-8u8k3hnU5OxlXfhDLD3XEwAqv/M9Tb5USLCEPvXCPcM=",
+        "lastModified": 1732002290,
+        "narHash": "sha256-v17KxlCf0O7hoD9AjiF94T2nuZuh7ZREyI6Ww/Tr4R0=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "702364e6ec794961483eba5220ca531917d03784",
+        "rev": "2a9b9e821c7f91eb6ae540925a453f9ebacd0513",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1731083384,
-        "narHash": "sha256-0uH8SSP6/eqCuDvUCV+s1ZwjLg6512Vj9dgKKO0iEmE=",
+        "lastModified": 1731949793,
+        "narHash": "sha256-ZXZInL8J38JaVpglSPa78ptn1zlqbaRHDtpa73CqpfI=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "ad3472e291694b6c589d8a664459b03962eaac95",
+        "rev": "989a37a594649528f28432388c0e7e28e8be2753",
         "type": "github"
       },
       "original": {
@@ -263,11 +263,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1730958623,
-        "narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=",
+        "lastModified": 1731890469,
+        "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "85f7e662eda4fa3a995556527c87b2524b691933",
+        "rev": "5083ec887760adfe12af64830a66807423a859a7",
         "type": "github"
       },
       "original": {
@@ -279,11 +279,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1730963269,
-        "narHash": "sha256-rz30HrFYCHiWEBCKHMffHbMdWJ35hEkcRVU0h7ms3x0=",
+        "lastModified": 1731797254,
+        "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "83fb6c028368e465cd19bb127b86f971a5e41ebc",
+        "rev": "e8c38b73aeb218e27163376a2d617e61a2ad9b59",
         "type": "github"
       },
       "original": {
@@ -295,11 +295,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1730958623,
-        "narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=",
+        "lastModified": 1731890469,
+        "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "85f7e662eda4fa3a995556527c87b2524b691933",
+        "rev": "5083ec887760adfe12af64830a66807423a859a7",
         "type": "github"
       },
       "original": {
@@ -311,11 +311,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1730785428,
-        "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
+        "lastModified": 1731676054,
+        "narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
+        "rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
         "type": "github"
       },
       "original": {

From 74c622efab5cbfbcbdf9722ae3c5a69fd5538282 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 19 Nov 2024 12:51:08 +0100
Subject: [PATCH 472/656] tmux: add stty command alias for resizing (serial)
 terminals

---
 home/common/tmux.nix | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/home/common/tmux.nix b/home/common/tmux.nix
index 141339e..d5b0687 100644
--- a/home/common/tmux.nix
+++ b/home/common/tmux.nix
@@ -31,6 +31,9 @@
       setw -g window-status-format ""
       setw -g window-status-current-format ""
       setw -g window-status-separator ""
+
+      set -s command-alias[1000] stty='run-shell "tmux send-keys \"stty cols #{pane_width} rows #{pane_height}\" Enter"'
+
       bind -n M-1 if-shell 'tmux select-window -t nvim' refresh-client 'new-window -S -n nvim nvim --listen $XDG_RUNTIME_DIR/nvim-persistent.sock'
       bind -n M-2 if-shell 'tmux select-window -t t1' refresh-client 'new-window -S -n t1'
       bind -n M-3 if-shell 'tmux select-window -t t2' refresh-client 'new-window -S -n t2'

From 0069a95e5d23c62f7351501546a2133d6f1df043 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 19 Nov 2024 16:48:04 +0100
Subject: [PATCH 473/656] fish: Prettier prompt w/jj desc in separator line

---
 home/common/fish.nix | 83 ++++++++++++++++++++++++++------------------
 1 file changed, 49 insertions(+), 34 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index cc620c9..40d2749 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -90,56 +90,71 @@
       '';
 
       fish_jj_prompt.body = ''
-        # Is jj installed?
-        if not command -sq jj
-            return 1
-        end
-
-        # Are we in a jj repo?
-        if not jj root --quiet &>/dev/null
-            return 1
+        if not command -sq jj || not jj root --quiet &>/dev/null
+          return 1
         end
 
         # Generate prompt
-        jj log --ignore-working-copy --no-graph --color always -r @ -T '
-                separate(
-                    " ",
-                    change_id.shortest(),
-                    coalesce(
-                        surround(
-                            "\"",
-                            "\"",
-                            if(
-                                description.first_line().substr(0, 24).starts_with(description.first_line()),
-                                description.first_line().substr(0, 24),
-                                description.first_line().substr(0, 23) ++ "…"
-                            )
-                        ),
-                        "(no description set)"
-                    ),
-                    bookmarks.join(", "),
-                    commit_id.shortest(),
-                    if(conflict, "(conflict)"),
-                    if(empty, "(empty)"),
-                    if(divergent, "(divergent)"),
-                    if(hidden, "(hidden)"),
+        jj log --ignore-working-copy --no-graph --color never -r @ -T '
+          surround(
+            " \e[2;3m",
+            "\e[0m",
+            separate(
+              " ",
+              surround("\e[0;35m", "\e[0m", bookmarks.join(":")),
+              separate(
+                " ",
+                surround("\e[0;1;95m", "\e[0;2;3m", change_id.shortest()),
+                surround("\e[0;34m",   "\e[0;2;3m", commit_id.shortest()),
+              ),
+              if(conflict,  "󰂭"),
+              if(empty,     ""),
+              if(divergent, ""),
+              if(hidden,    "󰘓"),
+            )
+          )
+        '
+      '';
+
+      fish_jj_desc.body = ''
+        if not command -sq jj || not jj root --quiet &>/dev/null
+          return 1
+        end
+
+        jj log --ignore-working-copy --no-graph --color never -r @ -T '
+          surround(
+            " \e[0;2;3m",
+            "\e[0m",
+            coalesce(
+              surround(
+                "\e[1;2;3m❝",
+                "❞\e[0m",
+                if(
+                  description.first_line().substr(0, 80).starts_with(description.first_line()),
+                  description.first_line().substr(0, 80),
+                  description.first_line().substr(0, 79) ++ "…"
                 )
+              ),
+              "…"
+            ),
+          )
         '
       '';
 
       fish_prompt.body = ''
-        echo
+        echo -e "\033[1;2;38;5;236m"
+        string pad -c '┄' -w $COLUMNS (fish_jj_desc)
+        echo -ne "\033[0;3m"
         string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color yellow) ' ❯ ' (set_color normal)
       '';
 
       fish_right_prompt.body = ''
-        fish_jj_prompt || fish_vcs_prompt
         if test $CMD_DURATION -gt 3000
           # Show duration of the last command in seconds
           set duration (echo "$CMD_DURATION 1000" | awk '{printf "%.1fs", $1 / $2}')
-          echo " ⏳$duration"
+          echo -n "⏳$duration "
         end
-
+        fish_jj_prompt || fish_vcs_prompt
       '';
 
       transient_prompt_func.body = ''

From 49bf77b97ffeb7a83825c505b5c55b2dd77bc0eb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 19 Nov 2024 22:20:34 +0100
Subject: [PATCH 474/656] fish: Add icons to jj fish prompt

---
 home/common/fish.nix | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 40d2749..44678fa 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -101,12 +101,9 @@
             "\e[0m",
             separate(
               " ",
-              surround("\e[0;35m", "\e[0m", bookmarks.join(":")),
-              separate(
-                " ",
-                surround("\e[0;1;95m", "\e[0;2;3m", change_id.shortest()),
-                surround("\e[0;34m",   "\e[0;2;3m", commit_id.shortest()),
-              ),
+              surround("\e[0;1;95m ", "\e[0;2;3m", change_id.shortest()),
+              surround("\e[0;35m󰸕 ", "\e[0m", bookmarks.join("╱")),
+              surround("\e[0;34m ",   "\e[0;2;3m", commit_id.shortest()),
               if(conflict,  "󰂭"),
               if(empty,     ""),
               if(divergent, ""),

From fe829e19c51f31e59d61bee54395fb569dd49b33 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 13:50:07 +0100
Subject: [PATCH 475/656] fish: Remove right prompt. Put vcs info on terminal
 bottom line.

---
 home/common/fish.nix | 81 ++++++++++++++++----------------------------
 1 file changed, 30 insertions(+), 51 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 44678fa..d0384e1 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -94,66 +94,45 @@
           return 1
         end
 
-        # Generate prompt
-        jj log --ignore-working-copy --no-graph --color never -r @ -T '
-          surround(
-            " \e[2;3m",
-            "\e[0m",
-            separate(
-              " ",
-              surround("\e[0;1;95m ", "\e[0;2;3m", change_id.shortest()),
-              surround("\e[0;35m󰸕 ", "\e[0m", bookmarks.join("╱")),
-              surround("\e[0;34m ",   "\e[0;2;3m", commit_id.shortest()),
-              if(conflict,  "󰂭"),
-              if(empty,     ""),
-              if(divergent, ""),
-              if(hidden,    "󰘓"),
-            )
-          )
-        '
-      '';
-
-      fish_jj_desc.body = ''
-        if not command -sq jj || not jj root --quiet &>/dev/null
-          return 1
-        end
-
-        jj log --ignore-working-copy --no-graph --color never -r @ -T '
-          surround(
-            " \e[0;2;3m",
-            "\e[0m",
-            coalesce(
-              surround(
-                "\e[1;2;3m❝",
-                "❞\e[0m",
-                if(
-                  description.first_line().substr(0, 80).starts_with(description.first_line()),
-                  description.first_line().substr(0, 80),
-                  description.first_line().substr(0, 79) ++ "…"
-                )
+      jj log --ignore-working-copy --no-graph --color never -r @ -T '
+        surround(
+          " \e[2;3m",
+          "\e[0m",
+          separate(
+            " ",
+            surround(
+              "\e[0;2;3m",
+              "\e[0m",
+              coalesce(
+                surround(
+                  "\e[1;2;3m❝",
+                  "❞\e[0m",
+                  if(
+                    description.first_line().substr(0, 80).starts_with(description.first_line()),
+                    description.first_line().substr(0, 80),
+                    description.first_line().substr(0, 79) ++ "…"
+                  )
+                ),
+                "…"
               ),
-              "…"
             ),
+            surround("\e[0;1;95m ", "\e[0;2;3m", change_id.shortest()),
+            surround("\e[0;35m󰸕 ", "\e[0m", bookmarks.join("╱")),
+            surround("\e[0;34m ",   "\e[0;2;3m", commit_id.shortest()),
+            if(conflict,  "󰂭"),
+            if(empty,     ""),
+            if(divergent, ""),
+            if(hidden,    "󰘓"),
           )
-        '
+        )
+      '
       '';
 
       fish_prompt.body = ''
-        echo -e "\033[1;2;38;5;236m"
-        string pad -c '┄' -w $COLUMNS (fish_jj_desc)
-        echo -ne "\033[0;3m"
+        echo -e "\033[s\033[$LINES;1H\033[1;2;38;5;238m$(string pad -c '┄' -w $COLUMNS (fish_jj_prompt || fish_vcs_prompt))\033[0m\033[u"
         string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color yellow) ' ❯ ' (set_color normal)
       '';
 
-      fish_right_prompt.body = ''
-        if test $CMD_DURATION -gt 3000
-          # Show duration of the last command in seconds
-          set duration (echo "$CMD_DURATION 1000" | awk '{printf "%.1fs", $1 / $2}')
-          echo -n "⏳$duration "
-        end
-        fish_jj_prompt || fish_vcs_prompt
-      '';
-
       transient_prompt_func.body = ''
         echo
         string join "" -- (set_color yellow) '❯ ' (set_color normal)

From 8ad810254b438ef3b708b47561a35aaabe768a1e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 14:52:59 +0100
Subject: [PATCH 476/656] nemo: add woodpecker user for woodpecker-agent

---
 hosts/nemo/woodpecker.nix | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/hosts/nemo/woodpecker.nix b/hosts/nemo/woodpecker.nix
index 8a4e963..f3cd5ec 100644
--- a/hosts/nemo/woodpecker.nix
+++ b/hosts/nemo/woodpecker.nix
@@ -4,6 +4,20 @@
   ...
 }:
 {
+
+  users.users.woodpecker = {
+    isSystemUser = true;
+    group = "woodpecker";
+    extraGroups = [
+      "docker"
+      "podman"
+    ];
+    createHome = true;
+    home = "/etc/woodpecker";
+    homeMode = "764";
+  };
+  users.groups.woodpecker = { };
+
   services.woodpecker-agents.agents.docker = {
     enable = true;
     package = pkgs.woodpecker-agent;
@@ -27,7 +41,11 @@
     ];
     # restartIfChanged = false;
     serviceConfig = {
+      User = "woodpecker";
+      Group = "woodpecker";
+      WorkingDirectory = "/etc/woodpecker";
       BindPaths = [ "/run/podman/podman.sock" ];
     };
   };
+
 }

From 010e4bc4d703f0b02e6ef7aac73dc006e0e41fd2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 14:52:59 +0100
Subject: [PATCH 477/656] ghostty: automatic switching between light/dark
 themes

---
 home/common/ghostty.nix | 27 +++++++--------------------
 1 file changed, 7 insertions(+), 20 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index caa6992..5ecdc06 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -5,25 +5,11 @@
   pkgs,
   ...
 }:
-let
-  launch-ghostty = pkgs.writeShellApplication {
-    name = "launch-ghostty";
-    text = ''
-      if [ "$(gsettings get org.gnome.desktop.interface color-scheme)" = "'prefer-dark'" ]; then
-        theme="theme_dark"
-      else
-        theme="theme_light"
-      fi
-      exec ghostty --config-file="$HOME/.config/ghostty/$theme" "$@"
-    '';
-  };
-in
 {
   config = lib.mkIf config.patagia.desktop.enable {
 
     home.packages = with pkgs; [
       inputs.ghostty.packages.${pkgs.system}.default
-      launch-ghostty
     ];
 
     programs.ghostty = {
@@ -56,6 +42,7 @@ in
         window-padding-balance = true;
         window-padding-color = "extend";
         window-theme = "system";
+        theme = "light:PatagiaLight,dark:PatagiaDark";
 
         keybind = [
           "alt+shift+c=copy_to_clipboard"
@@ -76,7 +63,7 @@ in
       };
     };
 
-    xdg.configFile."ghostty/theme_dark".text = ''
+    xdg.configFile."ghostty/themes/PatagiaDark".text = ''
       background = #0d1117
       foreground = #b2b2b2
       cursor-color = #00d992
@@ -100,7 +87,7 @@ in
       palette = 15=#ffffff
     '';
 
-    xdg.configFile."ghostty/theme_light".text = ''
+    xdg.configFile."ghostty/themes/PatagiaLight".text = ''
       background = #fefeff
       foreground = #222222
       cursor-color = #aa0000
@@ -130,13 +117,13 @@ in
           "System"
           "TerminalEmulator"
         ];
-        exec = ''launch-ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s0 -nt1"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s0 -nt1"'';
         genericName = "Ghostty (local)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (local)";
         settings = {
           StartupWMClass = "com.mitchellh.ghostty-local";
-          TryExec = "launch-ghostty";
+          TryExec = "ghostty";
         };
         terminal = false;
         type = "Application";
@@ -147,13 +134,13 @@ in
           "System"
           "TerminalEmulator"
         ];
-        exec = ''launch-ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s0 -nt1"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s0 -nt1"'';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (nemo)";
         settings = {
           StartupWMClass = "com.mitchellh.ghostty-nemo";
-          TryExec = "launch-ghostty";
+          TryExec = "ghostty";
         };
         terminal = false;
         type = "Application";

From 2994a40003ba2fd64ad816630d40fbc00d3edbf2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 14:52:59 +0100
Subject: [PATCH 478/656] nix: update

---
 flake.lock | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/flake.lock b/flake.lock
index 79dd621..5f5e30f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1731971697,
-        "narHash": "sha256-6JNMcpy0z19yOLBRt3eE4Rk4A96kcEsRv5+ym1hkv1c=",
+        "lastModified": 1732159111,
+        "narHash": "sha256-dIHQDtvPXsuv0z6DVgK6GvTh/jJn14B7Q9J0gT38Pl4=",
         "ref": "refs/heads/main",
-        "rev": "29c3a52e964a97dddaed876ce472aeb167774acf",
-        "revCount": 8021,
+        "rev": "63bf16ff00ccac2f730519b4f0dd14cde857792d",
+        "revCount": 8050,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -145,11 +145,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1731363552,
-        "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
+        "lastModified": 1732021966,
+        "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
+        "rev": "3308484d1a443fc5bc92012435d79e80458fe43c",
         "type": "github"
       },
       "original": {
@@ -209,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1731968878,
-        "narHash": "sha256-+hTCwETOE9N8voTAaF+IzdUZz28Ws3LDpH90FWADrEE=",
+        "lastModified": 1732025103,
+        "narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "a42fa14b53ceab66274a21da480c9f8e06204173",
+        "rev": "a46e702093a5c46e192243edbd977d5749e7f294",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1732002290,
-        "narHash": "sha256-v17KxlCf0O7hoD9AjiF94T2nuZuh7ZREyI6Ww/Tr4R0=",
+        "lastModified": 1732173780,
+        "narHash": "sha256-pszcETwWdItBmb/Z2CqIiTfEiVl3K5TPpgFSwyQrghY=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "2a9b9e821c7f91eb6ae540925a453f9ebacd0513",
+        "rev": "151fab1aa35e1cbc6f5caad1e175e3d621d67951",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1731949793,
-        "narHash": "sha256-ZXZInL8J38JaVpglSPa78ptn1zlqbaRHDtpa73CqpfI=",
+        "lastModified": 1732143030,
+        "narHash": "sha256-XKPsbjqHmwbiyzZdqNtw0tKxWLGFCkVB1+Awbi8tjQU=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "989a37a594649528f28432388c0e7e28e8be2753",
+        "rev": "07db909eb5ae2a559771068be64439eba394cd61",
         "type": "github"
       },
       "original": {
@@ -311,11 +311,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1731676054,
-        "narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
+        "lastModified": 1732014248,
+        "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
+        "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367",
         "type": "github"
       },
       "original": {

From 4e803491d6b652bb581752125315860a60244792 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 16:40:26 +0100
Subject: [PATCH 479/656] nvim: add <Leader>ub to toggle light/dark background

---
 home/common/nvim/init.lua | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 90f5db6..88c9353 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -147,5 +147,8 @@ vim.keymap.set("n", "K", function()
     offset_x = 2,
   }
   end, {})
+vim.keymap.set("n", "<Leader>ub", function()
+  vim.o.background = (vim.o.background == "light" and "dark" or "light")
+  end, opts("Toggle dark/light background"))
 
 

From e3858e3adf847e1ae9e87dca19003e9db5b362e4 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 20:09:59 +0100
Subject: [PATCH 480/656] nvim: blink-cmp has been merged to unstable

---
 home/common/nvim/default.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 04b5299..f5fa34b 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -59,7 +59,7 @@
       }
 
       {
-        plugin = pkgs.nixpkgs-unstable.vimPlugins.blink-cmp;
+        plugin = blink-cmp;
         type = "lua";
         config = ''
           require'blink-cmp'.setup({

From b09da9efbec2df0554741cf38f36e54252b22bab Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 20:11:29 +0100
Subject: [PATCH 481/656] ghostty+nvim: try on some oled black background

---
 home/common/ghostty.nix                     | 2 +-
 home/common/nvim/dieter/lua/dieter/init.lua | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 5ecdc06..6e64ed6 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -64,7 +64,7 @@
     };
 
     xdg.configFile."ghostty/themes/PatagiaDark".text = ''
-      background = #0d1117
+      background = #000000
       foreground = #b2b2b2
       cursor-color = #00d992
       selection-background = #d7d7d7
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 1e0d459..b232d82 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -39,7 +39,7 @@ local colors = {
   },
 
   dark = {
-    background = hsl(216, 28, 7),
+    background = hsl(216, 28, 0),
     foreground = hsl(0, 0, 80),
 
     accent1 = hsl(12, 100, 50),

From 18a27db98390f7c4a9a54e7a905a71d9a7de6426 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 20:11:29 +0100
Subject: [PATCH 482/656] nix: update

---
 flake.lock | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/flake.lock b/flake.lock
index 5f5e30f..6e34ac7 100644
--- a/flake.lock
+++ b/flake.lock
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1732159111,
-        "narHash": "sha256-dIHQDtvPXsuv0z6DVgK6GvTh/jJn14B7Q9J0gT38Pl4=",
+        "lastModified": 1732647216,
+        "narHash": "sha256-blOW/hA7AxMlltpIVM08iy0YYWWjmYSbOiZsPj9Ocms=",
         "ref": "refs/heads/main",
-        "rev": "63bf16ff00ccac2f730519b4f0dd14cde857792d",
-        "revCount": 8050,
+        "rev": "c5a711a0e3e23ce5b89b49609c87f85c990a8306",
+        "revCount": 8112,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -209,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1732025103,
-        "narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=",
+        "lastModified": 1732482255,
+        "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "a46e702093a5c46e192243edbd977d5749e7f294",
+        "rev": "a9953635d7f34e7358d5189751110f87e3ac17da",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1732173780,
-        "narHash": "sha256-pszcETwWdItBmb/Z2CqIiTfEiVl3K5TPpgFSwyQrghY=",
+        "lastModified": 1732602555,
+        "narHash": "sha256-S6LcEOdbc5YlHDXJvCH5H03DNuBwrLBkRic+EQrmd/8=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "151fab1aa35e1cbc6f5caad1e175e3d621d67951",
+        "rev": "c868a93ed4dcb19861474661d3f8cf5b8bbb01d2",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1732143030,
-        "narHash": "sha256-XKPsbjqHmwbiyzZdqNtw0tKxWLGFCkVB1+Awbi8tjQU=",
+        "lastModified": 1732578787,
+        "narHash": "sha256-2vEA6SuddlQh6agDXTk2Um1NSSxcXzLmErOUdJ9ffGE=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "07db909eb5ae2a559771068be64439eba394cd61",
+        "rev": "66bb1e577c96d8eb63c04dcc737394b4ce2b0f5d",
         "type": "github"
       },
       "original": {
@@ -263,11 +263,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1731890469,
-        "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=",
+        "lastModified": 1732238832,
+        "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "5083ec887760adfe12af64830a66807423a859a7",
+        "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d",
         "type": "github"
       },
       "original": {
@@ -295,11 +295,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1731890469,
-        "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=",
+        "lastModified": 1732238832,
+        "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "5083ec887760adfe12af64830a66807423a859a7",
+        "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d",
         "type": "github"
       },
       "original": {

From e7d96ac4c0a81b0c7eebacfe0879041b81ff74aa Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 24 Nov 2024 19:18:53 +0100
Subject: [PATCH 483/656] fish: fix viddy arguments for `w`

---
 home/common/fish.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index d0384e1..4452d23 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -162,7 +162,7 @@
       tree = "eza --tree";
       top = "btm --basic --enable_cache_memory --battery";
       ts = "TZ=Z date '+%Y%m%dT%H%M%SZ'";
-      w = "viddy -n1 $history[1]";
+      w = "viddy $history[1]";
       xc = "fish_clipboard_copy";
     };
   };

From 9a31f83e80178dd8994e0997663bc2541fc73d2c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 484/656] ghostty+nvim: color tweaks to please the eyeballs

---
 home/common/ghostty.nix                     | 4 ++--
 home/common/nvim/dieter/lua/dieter/init.lua | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 6e64ed6..8cd92f2 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -64,8 +64,8 @@
     };
 
     xdg.configFile."ghostty/themes/PatagiaDark".text = ''
-      background = #000000
-      foreground = #b2b2b2
+      background = "#14151a"
+      foreground = "#d1d5db"
       cursor-color = #00d992
       selection-background = #d7d7d7
       selection-foreground = #000000
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index b232d82..243c8bf 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -39,8 +39,8 @@ local colors = {
   },
 
   dark = {
-    background = hsl(216, 28, 0),
-    foreground = hsl(0, 0, 80),
+    background = hsl(230, 13, 9),
+    foreground = hsl(216, 12, 84),
 
     accent1 = hsl(12, 100, 50),
 

From dfa99a5d4c7a1c45cf59f966655cafe314d9393f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 23:31:06 +0100
Subject: [PATCH 485/656] ghostty: run tmux in shell

---
 home/common/ghostty.nix | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 8cd92f2..ecb79c3 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -64,7 +64,9 @@
     };
 
     xdg.configFile."ghostty/themes/PatagiaDark".text = ''
-      background = "#14151a"
+      # background = "#14151a"
+      # foreground = "#d1d5db"
+      background = "#000000"
       foreground = "#d1d5db"
       cursor-color = #00d992
       selection-background = #d7d7d7
@@ -117,7 +119,7 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s0 -nt1"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "fish -c tmux new-session -A -s0 -nt1"'';
         genericName = "Ghostty (local)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (local)";
@@ -134,7 +136,7 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s0 -nt1"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo fish -c tmux new-session -A -s0 -nt1"'';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (nemo)";

From 71660705f0ce156dc3ce216d29572e54ae9f07a8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 486/656] nvim: mini.pick ripgrep->rg tool name

---
 home/common/nvim/mini.lua | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 2c71357..f1de03f 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -69,7 +69,7 @@ MiniPick.registry.files_root = function(local_opts)
   local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])
   local_opts.cwd = root_dir
   local_opts.tool = "rg"
-  return MiniPick.builtin.files(local_opts, { source = { cwd = root_dir, tool = "ripgrep" } })
+  return MiniPick.builtin.files(local_opts, { source = { cwd = root_dir, tool = "rg" } })
 end
 MiniPick.registry.grep_live_root = function(local_opts)
   local root_patterns = { ".jj", ".git" }
@@ -130,9 +130,6 @@ require("mini.pick").registry.buffers = function(local_opts, opts)
 		return require("mini.pick").start(opts)
 	end
 
-
-
-
 local miniclue = require('mini.clue')
 miniclue.setup({ -- cute prompts about bindings
   triggers = {

From a7aa9c7a7204061d601dbbb63779e000682b1ad0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 487/656] vcs+rg: fix ignore globs

---
 home/common/utils.nix | 11 +++++++----
 home/common/vcs.nix   |  5 ++++-
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/home/common/utils.nix b/home/common/utils.nix
index 0a608da..d9b5abe 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -53,10 +53,13 @@
     ripgrep = {
       enable = true;
       arguments = [
-        "--glob=!.git/*"
-        "--glob=!.jj/*"
-        "--glob=!result/*"
-        "--glob=!target/*"
+        "--glob=!**/.cache/*"
+        "--glob=!**/.direnv/*"
+        "--glob=!**/.git/*"
+        "--glob=!**/.jj/*"
+        "--glob=!**/{node_modules,.npm,dist}/*"
+        "--glob=!**/target/*"
+        "--glob=!**/result/*"
       ];
     };
 
diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index fde4105..34ec497 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -116,9 +116,12 @@
       "*.so"
       "*.swp"
       ".direnv"
+      ".env"
       ".idea"
+      ".nixos-test-history"
       ".null-ls_*"
-      "result"
+      "/result*"
+      "/target"
     ];
 
     signing = {

From e1c3fd6cb8771c188f8b99d9531075bef4f59c64 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 488/656] ghostty+nvim: Add oled mode for darker darks on
 laptop

---
 home/common/default.nix                     |  1 +
 home/common/ghostty.nix                     | 10 ++++++----
 home/common/nvim/dieter/lua/dieter/init.lua |  2 +-
 home/dln/dinky.nix                          |  4 ++++
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/home/common/default.nix b/home/common/default.nix
index 3a2a686..e66ef79 100644
--- a/home/common/default.nix
+++ b/home/common/default.nix
@@ -19,4 +19,5 @@
   ];
 
   options.patagia.desktop.enable = lib.mkEnableOption "Desktop environment";
+  options.patagia.oled.enable = lib.mkEnableOption "Darker darks on oled screens";
 }
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index ecb79c3..d0842e5 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -63,10 +63,12 @@
       };
     };
 
-    xdg.configFile."ghostty/themes/PatagiaDark".text = ''
-      # background = "#14151a"
-      # foreground = "#d1d5db"
-      background = "#000000"
+    xdg.configFile."ghostty/themes/PatagiaDark".text =
+      let
+        background = if config.patagia.oled.enable then "#000000" else "#14151a";
+      in
+      ''
+      background = "${background}"
       foreground = "#d1d5db"
       cursor-color = #00d992
       selection-background = #d7d7d7
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 243c8bf..0e39bd7 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -39,7 +39,7 @@ local colors = {
   },
 
   dark = {
-    background = hsl(230, 13, 9),
+    background = "NONE",
     foreground = hsl(216, 12, 84),
 
     accent1 = hsl(12, 100, 50),
diff --git a/home/dln/dinky.nix b/home/dln/dinky.nix
index ba0b79e..fd47c55 100644
--- a/home/dln/dinky.nix
+++ b/home/dln/dinky.nix
@@ -5,6 +5,10 @@
     ./desktop.nix
   ];
 
+  patagia = {
+    oled.enable = true;
+  };
+
   dconf.settings = {
     "org/gnome/shell" = {
       enabled-extensions = [ "Battery-Health-Charging@maniacx.github.com" ];

From 3dee43330ac8a488a2417acf192f7eeacaaf157f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 489/656] nvim: clear Normal group and use terminal defaults
 for background+foreground

---
 home/common/nvim/dieter/lua/dieter/init.lua | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 0e39bd7..4ba8e4c 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -2,8 +2,8 @@ local hsl = require("dieter.hsl").hslToHex
 
 local colors = {
   light = {
-    background = hsl(240, 100, 100),
-    foreground = hsl(0, 0, 13),
+    background = "NONE",
+    foreground = "NONE",
 
     accent1 = hsl(12, 100, 50),
 
@@ -40,7 +40,7 @@ local colors = {
 
   dark = {
     background = "NONE",
-    foreground = hsl(216, 12, 84),
+    foreground = "NONE",
 
     accent1 = hsl(12, 100, 50),
 

From 38a179be129014b8714338912de02d33ee7dfbfb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 490/656] README

---
 README.md | 32 ++------------------------------
 1 file changed, 2 insertions(+), 30 deletions(-)

diff --git a/README.md b/README.md
index ea9d7aa..2ffa21f 100644
--- a/README.md
+++ b/README.md
@@ -1,31 +1,3 @@
-# NixOS Config
+# Configuration and various sundries
 
-IT in a box!
-
-## Bootstrapping from a fresh NixOS installation
-
-1. Install NixOS
-2. Clone this repo:
-
-   ```
-   nix-shell -p git --command 'git clone https://patagia.dev/dln/nixos-config.git'
-   ```
-
-3. Ensure host configuration exists at `./nixos-config/hosts/${HOSTNAME}` and contains at minimum the hardware configuration. The NixOS installer will write this out to `/etc/nixos/hardware-configuration.nix`.
-4. Apply configuration:
-   ```
-   sudo nixos-rebuild boot --flake ./nixos-config#${HOSTNAME}
-   ```
-
-## Use
-
-1. Clone this repo somewhere convenient, like `~/src/shelman/nixos-config`
-2. Apply configuration: `just switch`
-
-## Update
-
-Update nixpkgs and switch: `just update`
-
-# Home Manager
-
-`just home-switch`
+IT in a box.

From b0668e2ef766583757e8821d34d9cc8a24796e1a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 491/656] nvim: Add blink.compat for nvim-cmp compatibility for
 blink.cmp

https://github.com/Saghen/blink.compat
---
 home/common/nvim/default.nix | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index f5fa34b..eade3f0 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -94,6 +94,22 @@
         '';
       }
 
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "blink.compat";
+          src = pkgs.fetchFromGitHub {
+            owner = "saghen";
+            repo = "blink.compat";
+            rev = "cd2d3a040b76ad0eeab9a3bba48bc4c2b9d703bf"; # v1.0.2
+            hash = "sha256-4uoehv/qe74IivgXc69ekYLod3Zo+oPUvXJHtt4wc2U=";
+          };
+        };
+        type = "lua";
+        config = ''
+          require('blink.compat').setup()
+        '';
+      }
+
       {
         plugin = codeium-nvim;
         type = "lua";

From b6b4abddf52608c823dee6a526906ffe8ab09f2c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 492/656] =?UTF-8?q?Revert=20running=20tmux=20from=20fish,?=
 =?UTF-8?q?=20set=20ripgrep=20config=20explicitly.=20There=20should=20be?=
 =?UTF-8?q?=20a=20better=20way=20to=20do=20this=3F=20=F0=9F=A4=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 home/common/ghostty.nix   | 4 ++--
 home/common/nvim/init.lua | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index d0842e5..025b156 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -121,7 +121,7 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "fish -c tmux new-session -A -s0 -nt1"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s0 -nt1"'';
         genericName = "Ghostty (local)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (local)";
@@ -138,7 +138,7 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo fish -c tmux new-session -A -s0 -nt1"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s0 -nt1"'';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (nemo)";
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 88c9353..5295c24 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -1,3 +1,5 @@
+vim.env.RIPGREP_CONFIG_PATH = vim.env.HOME .. "/.config/ripgrep/ripgreprc"
+
 vim.g.mapleader = ' '
 vim.g.maplocalleader = ","
 

From 4dadbe3542ea8c43af593791e6dd971c4cd524b6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 27 Nov 2024 14:04:13 +0100
Subject: [PATCH 493/656] nix: update

---
 flake.lock | 56 +++++++++++++++++++++++++++---------------------------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/flake.lock b/flake.lock
index 6e34ac7..2f56044 100644
--- a/flake.lock
+++ b/flake.lock
@@ -3,11 +3,11 @@
     "flake-compat": {
       "flake": false,
       "locked": {
-        "lastModified": 1696426674,
-        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "lastModified": 1732722421,
+        "narHash": "sha256-HRJ/18p+WoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg=",
         "owner": "edolstra",
         "repo": "flake-compat",
-        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac",
         "type": "github"
       },
       "original": {
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1732647216,
-        "narHash": "sha256-blOW/hA7AxMlltpIVM08iy0YYWWjmYSbOiZsPj9Ocms=",
+        "lastModified": 1732920523,
+        "narHash": "sha256-/Udch6RRLBSjluDXjQHWpiYFFJR15g+qV263ibVBwoc=",
         "ref": "refs/heads/main",
-        "rev": "c5a711a0e3e23ce5b89b49609c87f85c990a8306",
-        "revCount": 8112,
+        "rev": "3c637a2777885dab9f8bb9d2b7c36411d62e1e4c",
+        "revCount": 8136,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -209,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1732482255,
-        "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=",
+        "lastModified": 1732884235,
+        "narHash": "sha256-r8j6R3nrvwbT1aUp4EPQ1KC7gm0pu9VcV1aNaB+XG6Q=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "a9953635d7f34e7358d5189751110f87e3ac17da",
+        "rev": "819f682269f4e002884702b87e445c82840c68f2",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1732602555,
-        "narHash": "sha256-S6LcEOdbc5YlHDXJvCH5H03DNuBwrLBkRic+EQrmd/8=",
+        "lastModified": 1732925246,
+        "narHash": "sha256-MjqyzOEa6s9OGO8SMh5C2kqo57+iSNsgDbzPBbpi4QU=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "c868a93ed4dcb19861474661d3f8cf5b8bbb01d2",
+        "rev": "7461a0b228bb48bb02af086f8b9ee9a83583120b",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1732578787,
-        "narHash": "sha256-2vEA6SuddlQh6agDXTk2Um1NSSxcXzLmErOUdJ9ffGE=",
+        "lastModified": 1732903628,
+        "narHash": "sha256-JF8zmoLdqmbKCSS5Smf/Yj0jEl5f+qKhSubhPo/BvUM=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "66bb1e577c96d8eb63c04dcc737394b4ce2b0f5d",
+        "rev": "2833925cfc688786759d6a980a1ad62b62d20570",
         "type": "github"
       },
       "original": {
@@ -263,11 +263,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1732238832,
-        "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=",
+        "lastModified": 1732617236,
+        "narHash": "sha256-PYkz6U0bSEaEB1al7O1XsqVNeSNS+s3NVclJw7YC43w=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d",
+        "rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e",
         "type": "github"
       },
       "original": {
@@ -279,11 +279,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1731797254,
-        "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=",
+        "lastModified": 1732749044,
+        "narHash": "sha256-T38FQOg0BV5M8FN1712fovzNakSOENEYs+CSkg31C9Y=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "e8c38b73aeb218e27163376a2d617e61a2ad9b59",
+        "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685",
         "type": "github"
       },
       "original": {
@@ -295,11 +295,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1732238832,
-        "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=",
+        "lastModified": 1732937961,
+        "narHash": "sha256-B5pYT+IVaqcrfOekkwKvx/iToDnuQWzc2oyDxzzBDc4=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d",
+        "rev": "4703b8d2c708e13a8cab03d865f90973536dcdf5",
         "type": "github"
       },
       "original": {
@@ -311,11 +311,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1732014248,
-        "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=",
+        "lastModified": 1732837521,
+        "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367",
+        "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370",
         "type": "github"
       },
       "original": {

From 761b506dacdc09ea80f4c8ca92bde86153a55fc2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Dec 2024 23:19:47 +0100
Subject: [PATCH 494/656] desktop: nerd-fonts are split into separate packages
 now

---
 common/desktop.nix | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/common/desktop.nix b/common/desktop.nix
index 52cc9d4..ebf6c6d 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -57,10 +57,9 @@ in
       };
       packages = with pkgs; [
         inter
-        jetbrains-mono
         liberation_ttf
         monaspace
-        (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
+        nerd-fonts.symbols-only
         noto-fonts
         noto-fonts-cjk-sans
         noto-fonts-color-emoji

From 0357c7ff0534af1315096579601be1eba2dd8f77 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Dec 2024 23:19:47 +0100
Subject: [PATCH 495/656] ghostty: add .desktop for secondary tmux session

---
 home/common/ghostty.nix | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 025b156..c1fbc4b 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -121,7 +121,7 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s0 -nt1"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s main"'';
         genericName = "Ghostty (local)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (local)";
@@ -133,12 +133,29 @@
         type = "Application";
       };
 
+      ghostty-local-secondary = {
+        categories = [
+          "System"
+          "TerminalEmulator"
+        ];
+        exec = ''ghostty --class=com.mitchellh.ghostty-local-secondary -e "tmux new-session -A -s secondary -t main"'';
+        genericName = "Ghostty (local) Secondary";
+        icon = "com.mitchellh.ghostty";
+        name = "Ghostty (local) Secondary";
+        settings = {
+          StartupWMClass = "com.mitchellh.ghostty-local-secondary";
+          TryExec = "ghostty";
+        };
+        terminal = false;
+        type = "Application";
+      };
+
       ghostty-nemo = {
         categories = [
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s0 -nt1"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s main"'';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (nemo)";

From 7a4712c057270ca54916e7fcbb6e87d09cd52c3b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Dec 2024 09:42:24 +0100
Subject: [PATCH 496/656] chore: typo

---
 common/laptop.nix | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/common/laptop.nix b/common/laptop.nix
index a18c765..b91a011 100644
--- a/common/laptop.nix
+++ b/common/laptop.nix
@@ -7,12 +7,11 @@
 
 let
   inherit (lib) mkIf mkEnableOption;
-  cfg = config.patagia.podman;
 in
 {
   options.patagia.laptop.enable = mkEnableOption "Laptop tools and configuration";
 
-  config = mkIf cfg.enable {
+  config = mkIf config.laptop.enable {
     environment.systemPackages = with pkgs; [ gnomeExtensions.battery-health-charging ];
 
     services.fprintd.enable = true;

From 37ddc9161358b2c81549b6449c242e07feef455c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Dec 2024 09:42:24 +0100
Subject: [PATCH 497/656] nvim: upgrade blink-cmp. lsp config for web stuff.

---
 home/common/nvim/default.nix | 43 +++++++++++----------
 home/common/nvim/lsp.lua     | 73 ++++++++++++++++++------------------
 pkgs/blink-cmp/default.nix   | 45 ++++++++++++++++++++++
 pkgs/default.nix             |  1 +
 4 files changed, 106 insertions(+), 56 deletions(-)
 create mode 100644 pkgs/blink-cmp/default.nix

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index eade3f0..ce2f78b 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -42,6 +42,7 @@
       shellcheck
       shfmt
       stylua
+      superhtml
       vscode-langservers-extracted
     ];
 
@@ -59,7 +60,7 @@
       }
 
       {
-        plugin = blink-cmp;
+        plugin = pkgs.blink-cmp;
         type = "lua";
         config = ''
           require'blink-cmp'.setup({
@@ -68,27 +69,31 @@
               ["<PageDown>"] = { "scroll_documentation_down" },
               ["<PageUp>"] = { "scroll_documentation_up" },
             },
-            trigger = {
-              completion = {
-                show_in_snippet = true,
-              },
-              signature_help = {
-                enabled = true,
-              },
-            },
-            windows = {
-              autocomplete = {
-                border = 'none',
-                selection = 'preselect',
+            completion = {
+              accept = {
+                auto_brackets = {
+                  enabled = true,
+                },
               },
+
               documentation = {
-                border = 'rounded',
-                auto_show = false,
+                auto_show = true,
                 auto_show_delay_ms = 800,
+                window = {
+                  border = 'rounded',
+                },
+                ghost_text = {
+                  enabled = true,
+                },
               },
-              signature_help = {
-                border = 'rounded',
+
+              signature = {
+                enabled = true,
+                window = {
+                  border = 'rounded',
+                },
               },
+
             },
           })
         '';
@@ -100,8 +105,8 @@
           src = pkgs.fetchFromGitHub {
             owner = "saghen";
             repo = "blink.compat";
-            rev = "cd2d3a040b76ad0eeab9a3bba48bc4c2b9d703bf"; # v1.0.2
-            hash = "sha256-4uoehv/qe74IivgXc69ekYLod3Zo+oPUvXJHtt4wc2U=";
+            rev = "78f3f7187ff4a1444e952548c556d936da8f72fc"; # v2.1.2
+            hash = "sha256-aqHDwrzPOyOw9UbJlQX10/cVQwNHg4v6i9jSm+pNKZc=";
           };
         };
         type = "lua";
diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index 7a8d0c5..0123089 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -1,44 +1,43 @@
-local configs = require('lspconfig.configs')
 local lspconfig = require("lspconfig")
-local capabilities = vim.lsp.protocol.make_client_capabilities()
 local servers = {
-  'gopls',
-  'ts_ls',
-}
+  cssls = {},
+  gopls = {},
+  html = {},
+  jsonls = {},
+  superhtml = {},
+  ts_ls = {},
 
-for _, ls in ipairs(servers) do
-  lspconfig[ls].setup {
-    capabilities = capabilities,
-  }
-end
-
-lspconfig.nixd.setup({
-  capabilities = capabilities,
-  cmd = { "nixd" },
-  settings = {
-    nixd = {
-      nixpkgs = { expr = "import <nixpkgs> { }" },
-      formatting = { command = { "nixfmt" } },
-      options = {},
-    },
-  },
-})
-
-lspconfig.lua_ls.setup({
-  capabilities = capabilities,
-  settings = {
-    Lua = {
-      runtime = {
-        version = "LuaJIT",
-        path = vim.split(package.path, ";"),
-      },
-      diagnostics = { globals = { "vim", "hs" } },
-      workspace = {
-        library = {
-          [vim.fn.expand("$VIMRUNTIME/lua")] = true,
-          [vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true,
+  lua_ls = {
+    settings = {
+      Lua = {
+        runtime = {
+          version = "LuaJIT",
+          path = vim.split(package.path, ";"),
+        },
+        diagnostics = { globals = { "vim", "hs" } },
+        workspace = {
+          library = {
+            [vim.fn.expand("$VIMRUNTIME/lua")] = true,
+            [vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true,
+          },
         },
       },
     },
   },
-})
+
+  nixd = {
+    cmd = { "nixd" },
+    settings = {
+      nixd = {
+        nixpkgs = { expr = "import <nixpkgs> { }" },
+        formatting = { command = { "nixfmt" } },
+        options = {},
+      },
+    },
+  },
+}
+
+for server, config in pairs(servers) do
+  config.capabilities = require('blink.cmp').get_lsp_capabilities(config.capabilities)
+  lspconfig[server].setup(config)
+end
diff --git a/pkgs/blink-cmp/default.nix b/pkgs/blink-cmp/default.nix
new file mode 100644
index 0000000..e9307e4
--- /dev/null
+++ b/pkgs/blink-cmp/default.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  stdenv,
+  vimUtils,
+}:
+let
+  version = "0.7.3";
+  src = fetchFromGitHub {
+    owner = "Saghen";
+    repo = "blink.cmp";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-nxiODLKgGeXzN5sqkLWU0PcsuSSB1scSzTC5qyCxLCI=";
+  };
+  libExt = if stdenv.hostPlatform.isDarwin then "dylib" else "so";
+  blink-fuzzy-lib = rustPlatform.buildRustPackage {
+    inherit version src;
+    pname = "blink-fuzzy-lib";
+    env = {
+      # TODO: remove this if plugin stops using nightly rust
+      RUSTC_BOOTSTRAP = true;
+    };
+    useFetchCargoVendor = true;
+    cargoHash = "sha256-XXI2jEoD6XbFNk3O8B6+aLzl1ZcJq1VinQXb+AOw8Rw=";
+  };
+in
+vimUtils.buildVimPlugin {
+  pname = "blink-cmp";
+  inherit version src;
+  preInstall = ''
+    mkdir -p target/release
+    ln -s ${blink-fuzzy-lib}/lib/libblink_cmp_fuzzy.${libExt} target/release/libblink_cmp_fuzzy.${libExt}
+  '';
+  meta = {
+    description = "Performant, batteries-included completion plugin for Neovim";
+    homepage = "https://github.com/saghen/blink.cmp";
+    maintainers = with lib.maintainers; [
+      balssh
+      redxtech
+    ];
+  };
+  doInstallCheck = true;
+  nvimRequireCheck = "blink-cmp";
+}
diff --git a/pkgs/default.nix b/pkgs/default.nix
index ab3485b..1ee0f62 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -1,4 +1,5 @@
 pkgs: {
+  blink-cmp = pkgs.callPackage ./blink-cmp { };
   gnome-ssh-askpass4 = pkgs.callPackage ./gnome-ssh-askpass4 { };
   jujutsu-openssh = pkgs.callPackage ./jujutsu-openssh { };
   lazyjj = pkgs.callPackage ./lazyjj { };

From dc126a49d6df2482c80cc701ae194ee609be5467 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Dec 2024 09:42:24 +0100
Subject: [PATCH 498/656] nvim: add harper ls

---
 home/common/nvim/default.nix | 1 +
 home/common/nvim/lsp.lua     | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index ce2f78b..152649f 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -30,6 +30,7 @@
       go
       gopls
       gotools
+      harper
       lua-language-server
       nil
       nixd
diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index 0123089..fc149a2 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -7,6 +7,13 @@ local servers = {
   superhtml = {},
   ts_ls = {},
 
+  harper_ls = {
+    filetypes = {
+      "asciidoc", "c", "gitcommit", "go", "html", "javascript", "just", "lua", "markdown",
+      "nix", "python", "ruby", "rust", "text", "toml", "typescript", "zig",
+    }
+  },
+
   lua_ls = {
     settings = {
       Lua = {

From c94ce60795d70550d5655a56064d5a7a5df8d7e1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Dec 2024 23:19:47 +0100
Subject: [PATCH 499/656] ghostty: use hardcoded session names in tmux

---
 home/common/ghostty.nix | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index c1fbc4b..977eedc 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -121,7 +121,7 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -s main"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -D -s main -t main"'';
         genericName = "Ghostty (local)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (local)";
@@ -138,7 +138,7 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-local-secondary -e "tmux new-session -A -s secondary -t main"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-local-secondary -e "tmux new-session -A -D -s secondary -t main"'';
         genericName = "Ghostty (local) Secondary";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (local) Secondary";
@@ -155,7 +155,7 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -s main"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -D -s main -t main"'';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (nemo)";

From 5c319ac288e3dbcaac73224774f09e582df3ce5b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Dec 2024 09:42:24 +0100
Subject: [PATCH 500/656] nvim: Iterate on colors

---
 home/common/nvim/dieter/lua/dieter/init.lua | 33 ++++++++++++---------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 4ba8e4c..e803a36 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -42,16 +42,18 @@ local colors = {
     background = "NONE",
     foreground = "NONE",
 
-    accent1 = hsl(12, 100, 50),
+    accent1 = hsl(202, 57, 57),  -- Blue
+    accent2 = hsl(40, 57, 57),  -- Yellow
 
-    dimmed = hsl(0, 0, 25),
-    dimmed_subtle = hsl(0, 0, 50),
+    dimmed = hsl(212, 19, 25),
+    -- dimmed_subtle = hsl(212, 19, 70),
+    dimmed_subtle = hsl(212, 5, 65),
 
-    highlight_subtle = hsl(0, 0, 6),
+    highlight_subtle = hsl(212, 27, 11),
     highlight_intense = hsl(58, 100, 60),
 
-    string = hsl(96, 50, 70),
-    comment = hsl(220, 50, 60),
+    string = hsl(96, 35, 60),
+    comment = hsl(2, 69, 68),
     comment_error = hsl(2, 85, 50),
 
     diagnostic_error = hsl(353, 100, 45),
@@ -71,10 +73,6 @@ local colors = {
     delete = hsl(350, 100, 40),
     delete_quarter = hsl(350, 100, 15),
 
-    -- dialog_bg = background,
-    -- dialog_fg = hsl(216, 70, 80),
-    -- dialog_bg = hsl(216, 25, 20),
-    -- selection = hsl(216, 25, 33),
     selection = hsl(213, 60, 40),
 
     cmp_bg = hsl(218, 30, 13),
@@ -105,7 +103,7 @@ local theme = {
   Special = { link = "NormalNC" },
   Type = { link = "NormalNC" },
 
-  String = { fg = c.string },
+  String = { fg = c.string, italic = true },
 
   Comment = { fg = c.comment, italic = true, bold = true },
   CommentError = { fg = c.comment_error, italic = true, bold = true },
@@ -128,7 +126,8 @@ local theme = {
   ["@function"] = { link = "NormalNC" },
   ["@special"] = { link = "NormalNC" },
   ["@variable"] = { link = "NormalNC" },
-  ["@lsp.type.variable"] = { fg = c.dimmed_subtle },
+  ["@variable.parameter"] = { fg = c.accent2 },
+  ["@lsp.type.variable"] = { fg = c.dimmed_subtle, italic = true },
 
   -- UI Elements
   CursorLine = { bg = c.highlight_subtle },
@@ -148,8 +147,13 @@ local theme = {
   DiagnosticSignInfo = { fg = c.diagnostic_info },
   DiagnosticSignWarn = { fg = c.diagnostic_warning },
   LineNr = { fg = c.dimmed, italic = true },
-  IndentLine = { fg = c.background },
-  IndentLineCurrent = { fg = c.dimmed },
+  CursorLineNr = { fg = c.dimmed_subtle, bg = c.highlight_subtle, bold = true },
+
+  IndentLine = { fg = c.dimmed },
+  IndentLineCurrent = { fg = c.dimmed_subtle },
+  MiniIndentscopeSymbol = { link = "IndentLine" },
+  MiniIndentscopeSymbolOff = { link = "IndentLine" },
+
   TreesitterContext = { reverse = true },
   TreesitterContextLineNumber = { bg = c.dimmed, reverse = true, italic = true },
   InclineNormal = { bg = c.background },
@@ -200,6 +204,7 @@ local theme = {
 
   Visual = { bg = c.selection },
   LspReferenceText = { fg = c.highlight_intense, undercurl = true },
+  LspInlayHint = { fg = c.accent1, italic = true, bold = true },
 }
 
 vim.cmd("hi clear")

From aed9af6f4582bf87a817deb2b7ce72484818004d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 2 Dec 2024 09:42:24 +0100
Subject: [PATCH 501/656] nvim: enable inlay hints + toggling

---
 flake.lock                      | 56 ++++++++++++++++-----------------
 home/common/nvim/default.nix    | 24 +++++++++++++-
 home/common/nvim/init.lua       |  2 +-
 home/common/nvim/lsp.lua        | 18 ++++++++++-
 home/common/nvim/rust.lua       | 40 +++++++++++++++++++++++
 home/common/nvim/treesitter.nix |  1 +
 6 files changed, 110 insertions(+), 31 deletions(-)
 create mode 100644 home/common/nvim/rust.lua

diff --git a/flake.lock b/flake.lock
index 2f56044..294813a 100644
--- a/flake.lock
+++ b/flake.lock
@@ -40,11 +40,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1730504689,
-        "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
+        "lastModified": 1733269028,
+        "narHash": "sha256-kVq/jAKKtbvWwbL9wf0SKDxtxsC5Gb+nlIYEFnyXhGA=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "506278e768c2a08bec68eb62932193e341f55c90",
+        "rev": "e37654df08605b510ad84eceaafcc7248495e843",
         "type": "github"
       },
       "original": {
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1732920523,
-        "narHash": "sha256-/Udch6RRLBSjluDXjQHWpiYFFJR15g+qV263ibVBwoc=",
+        "lastModified": 1733235265,
+        "narHash": "sha256-BZBmyv2gY4SmanxCM0ZVYhYx7t2/Az/okDOQj+4RIso=",
         "ref": "refs/heads/main",
-        "rev": "3c637a2777885dab9f8bb9d2b7c36411d62e1e4c",
-        "revCount": 8136,
+        "rev": "50dc4b75d73bab7631e22e19e940331ad7ac8cfd",
+        "revCount": 8155,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -209,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1732884235,
-        "narHash": "sha256-r8j6R3nrvwbT1aUp4EPQ1KC7gm0pu9VcV1aNaB+XG6Q=",
+        "lastModified": 1733317578,
+        "narHash": "sha256-anN/LcP5IuqEARvhPETg1vnbyG3IQ0wdvSAYEJfIQzA=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "819f682269f4e002884702b87e445c82840c68f2",
+        "rev": "ad48eb25cd0b00ce730da00fa1f8e6e6c27b397d",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1732925246,
-        "narHash": "sha256-MjqyzOEa6s9OGO8SMh5C2kqo57+iSNsgDbzPBbpi4QU=",
+        "lastModified": 1733314815,
+        "narHash": "sha256-FxQzRALeGEfZg7ZA+ArlGBbs3Jtwd7Tr7+E6iucHKDA=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "7461a0b228bb48bb02af086f8b9ee9a83583120b",
+        "rev": "7545e949aa9bc2396130191100f1fbf9765bc448",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1732903628,
-        "narHash": "sha256-JF8zmoLdqmbKCSS5Smf/Yj0jEl5f+qKhSubhPo/BvUM=",
+        "lastModified": 1733247868,
+        "narHash": "sha256-TGXXXV/jWUBF2ZBiYt6RKIvUGpsefDe/RSXnUzejxMU=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "2833925cfc688786759d6a980a1ad62b62d20570",
+        "rev": "ae93c7f369a174f3d738ab55030de2c9dfc10c57",
         "type": "github"
       },
       "original": {
@@ -263,11 +263,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1732617236,
-        "narHash": "sha256-PYkz6U0bSEaEB1al7O1XsqVNeSNS+s3NVclJw7YC43w=",
+        "lastModified": 1733097829,
+        "narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e",
+        "rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
         "type": "github"
       },
       "original": {
@@ -279,11 +279,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1732749044,
-        "narHash": "sha256-T38FQOg0BV5M8FN1712fovzNakSOENEYs+CSkg31C9Y=",
+        "lastModified": 1733220138,
+        "narHash": "sha256-Yh5XZ9yVurrcYdNTSWxYgW4+EJ0pcOqgM1043z9JaRc=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685",
+        "rev": "bcb68885668cccec12276bbb379f8f2557aa06ce",
         "type": "github"
       },
       "original": {
@@ -295,11 +295,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1732937961,
-        "narHash": "sha256-B5pYT+IVaqcrfOekkwKvx/iToDnuQWzc2oyDxzzBDc4=",
+        "lastModified": 1733097829,
+        "narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "4703b8d2c708e13a8cab03d865f90973536dcdf5",
+        "rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
         "type": "github"
       },
       "original": {
@@ -311,11 +311,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1732837521,
-        "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=",
+        "lastModified": 1733212471,
+        "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370",
+        "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 152649f..b5599db 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -50,7 +50,6 @@
     plugins = with pkgs.vimPlugins; [
       friendly-snippets
       go-nvim
-      rustaceanvim
       targets-vim
       ts-comments-nvim
 
@@ -116,6 +115,23 @@
         '';
       }
 
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "inlay-hints";
+          src = pkgs.fetchFromGitHub {
+            owner = "MysticalDevil";
+            repo = "inlay-hints.nvim";
+            rev = "af84dee42cd118af6d592b06c1c0e45d6432a6c0"; # 2024-08-23
+            hash = "sha256-DZVtFAUK9c8GInp+JdCQ1BKe0dkAheHKI67oxdMmA24=";
+          };
+        };
+        type = "lua";
+        config = ''
+          require('inlay-hints').setup()
+          require("inlay-hints.utils").enable_inlay_hints()
+        '';
+      }
+
       {
         plugin = codeium-nvim;
         type = "lua";
@@ -185,6 +201,12 @@
         type = "lua";
         config = lib.fileContents ./mini.lua;
       }
+
+      {
+        plugin = rustaceanvim;
+        type = "lua";
+        config = lib.fileContents ./rust.lua;
+      }
     ];
   };
 }
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 5295c24..fbb6738 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -152,5 +152,5 @@ vim.keymap.set("n", "K", function()
 vim.keymap.set("n", "<Leader>ub", function()
   vim.o.background = (vim.o.background == "light" and "dark" or "light")
   end, opts("Toggle dark/light background"))
-
+vim.keymap.set("n", "<Leader>uh", "<cmd>InlayHintsToggle<cr>", opts("Toggle inlay hints"))
 
diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index fc149a2..164c0cb 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -1,12 +1,27 @@
 local lspconfig = require("lspconfig")
 local servers = {
   cssls = {},
-  gopls = {},
   html = {},
   jsonls = {},
   superhtml = {},
   ts_ls = {},
 
+  gopls = {
+    settings = {
+      gopls = {
+        hints = {
+          rangeVariableTypes = true,
+          parameterNames = true,
+          constantValues = true,
+          assignVariableTypes = true,
+          compositeLiteralFields = true,
+          compositeLiteralTypes = true,
+          functionTypeParameters = true,
+        },
+      },
+    },
+  },
+
   harper_ls = {
     filetypes = {
       "asciidoc", "c", "gitcommit", "go", "html", "javascript", "just", "lua", "markdown",
@@ -22,6 +37,7 @@ local servers = {
           path = vim.split(package.path, ";"),
         },
         diagnostics = { globals = { "vim", "hs" } },
+        hint = { enable = true },
         workspace = {
           library = {
             [vim.fn.expand("$VIMRUNTIME/lua")] = true,
diff --git a/home/common/nvim/rust.lua b/home/common/nvim/rust.lua
new file mode 100644
index 0000000..982daa7
--- /dev/null
+++ b/home/common/nvim/rust.lua
@@ -0,0 +1,40 @@
+vim.g.rustaceanvim = {
+  server = {
+    settings = {
+      ["rust-analyzer"] = {
+        inlayHints = {
+          bindingModeHints = {
+            enable = false,
+          },
+          chainingHints = {
+            enable = true,
+          },
+          closingBraceHints = {
+            enable = true,
+            minLines = 25,
+          },
+          closureReturnTypeHints = {
+            enable = "never",
+          },
+          lifetimeElisionHints = {
+            enable = "never",
+            useParameterNames = false,
+          },
+          maxLength = 25,
+          parameterHints = {
+            enable = true,
+          },
+          reborrowHints = {
+            enable = "never",
+          },
+          renderColons = true,
+          typeHints = {
+            enable = true,
+            hideClosureInitialization = false,
+            hideNamedConstructor = false,
+          },
+        },
+      },
+    },
+  },
+}
diff --git a/home/common/nvim/treesitter.nix b/home/common/nvim/treesitter.nix
index 4fb87ec..d18b8ae 100644
--- a/home/common/nvim/treesitter.nix
+++ b/home/common/nvim/treesitter.nix
@@ -13,6 +13,7 @@
     plugins = with pkgs.vimPlugins; [
       ts-comments-nvim
       nvim-ts-context-commentstring
+      playground
 
       {
         plugin = nvim-treesitter-context;

From 4465aa5abc8a1be9d0ce22a1fcd36bb29b40c35f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 5 Dec 2024 09:36:56 +0100
Subject: [PATCH 502/656] chore: fix typo

---
 common/laptop.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/common/laptop.nix b/common/laptop.nix
index b91a011..2e0d6da 100644
--- a/common/laptop.nix
+++ b/common/laptop.nix
@@ -11,7 +11,7 @@ in
 {
   options.patagia.laptop.enable = mkEnableOption "Laptop tools and configuration";
 
-  config = mkIf config.laptop.enable {
+  config = mkIf config.patagia.laptop.enable {
     environment.systemPackages = with pkgs; [ gnomeExtensions.battery-health-charging ];
 
     services.fprintd.enable = true;

From da605daf0867c2d28cdd0bb105ff5460d9db3ce3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 5 Dec 2024 09:36:56 +0100
Subject: [PATCH 503/656] jj: upgrade to 0.24.0

---
 flake.lock                       |  80 ++---
 pkgs/jujutsu-openssh/Cargo.lock  | 498 ++++++++++++++++---------------
 pkgs/jujutsu-openssh/default.nix |   6 +-
 3 files changed, 297 insertions(+), 287 deletions(-)

diff --git a/flake.lock b/flake.lock
index 294813a..77d0531 100644
--- a/flake.lock
+++ b/flake.lock
@@ -3,11 +3,11 @@
     "flake-compat": {
       "flake": false,
       "locked": {
-        "lastModified": 1732722421,
-        "narHash": "sha256-HRJ/18p+WoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg=",
+        "lastModified": 1733328505,
+        "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
         "owner": "edolstra",
         "repo": "flake-compat",
-        "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac",
+        "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
         "type": "github"
       },
       "original": {
@@ -40,11 +40,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733269028,
-        "narHash": "sha256-kVq/jAKKtbvWwbL9wf0SKDxtxsC5Gb+nlIYEFnyXhGA=",
+        "lastModified": 1733312601,
+        "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "e37654df08605b510ad84eceaafcc7248495e843",
+        "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
         "type": "github"
       },
       "original": {
@@ -62,11 +62,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1712014858,
-        "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
+        "lastModified": 1733312601,
+        "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
+        "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
         "type": "github"
       },
       "original": {
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1733235265,
-        "narHash": "sha256-BZBmyv2gY4SmanxCM0ZVYhYx7t2/Az/okDOQj+4RIso=",
+        "lastModified": 1733686035,
+        "narHash": "sha256-uhbYV9gdMAPgBFm5CiH3defxuzrVXD1HsxkZPUqMxoQ=",
         "ref": "refs/heads/main",
-        "rev": "50dc4b75d73bab7631e22e19e940331ad7ac8cfd",
-        "revCount": 8155,
+        "rev": "40ad31deea3d236ad762f2c21f2834af3b767bdb",
+        "revCount": 8184,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -145,11 +145,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1732021966,
-        "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=",
+        "lastModified": 1733318908,
+        "narHash": "sha256-SVQVsbafSM1dJ4fpgyBqLZ+Lft+jcQuMtEL3lQWx2Sk=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "3308484d1a443fc5bc92012435d79e80458fe43c",
+        "rev": "6f4e2a2112050951a314d2733a994fbab94864c6",
         "type": "github"
       },
       "original": {
@@ -189,11 +189,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1730903510,
-        "narHash": "sha256-mnynlrPeiW0nUQ8KGZHb3WyxAxA3Ye/BH8gMjdoKP6E=",
+        "lastModified": 1733333617,
+        "narHash": "sha256-nMMQXREGvLOLvUa0ByhYFdaL0Jov0t1wzLbKjr05P2w=",
         "owner": "hercules-ci",
         "repo": "hercules-ci-effects",
-        "rev": "b89ac4d66d618b915b1f0a408e2775fe3821d141",
+        "rev": "56f8ea8d502c87cf62444bec4ee04512e8ea24ea",
         "type": "github"
       },
       "original": {
@@ -209,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733317578,
-        "narHash": "sha256-anN/LcP5IuqEARvhPETg1vnbyG3IQ0wdvSAYEJfIQzA=",
+        "lastModified": 1733484277,
+        "narHash": "sha256-i5ay20XsvpW91N4URET/nOc0VQWOAd4c4vbqYtcH8Rc=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "ad48eb25cd0b00ce730da00fa1f8e6e6c27b397d",
+        "rev": "d00c6f6d0ad16d598bf7e2956f52c1d9d5de3c3a",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1733314815,
-        "narHash": "sha256-FxQzRALeGEfZg7ZA+ArlGBbs3Jtwd7Tr7+E6iucHKDA=",
+        "lastModified": 1733618008,
+        "narHash": "sha256-8MM4WF1AapF9QWDJhoXGLcEKrLE3S75QA74YEQt0A18=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "7545e949aa9bc2396130191100f1fbf9765bc448",
+        "rev": "b75d6c354368841ce4291142b79882362e574f61",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1733247868,
-        "narHash": "sha256-TGXXXV/jWUBF2ZBiYt6RKIvUGpsefDe/RSXnUzejxMU=",
+        "lastModified": 1733614558,
+        "narHash": "sha256-JcI4DL5fn0KGX5TxoSLIxwTfi6rikRHsG/gI/7SUDIg=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "ae93c7f369a174f3d738ab55030de2c9dfc10c57",
+        "rev": "4fcc5cd34a75df9a3088c83dc1a87aa6e37051e1",
         "type": "github"
       },
       "original": {
@@ -263,11 +263,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1733097829,
-        "narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
+        "lastModified": 1733376361,
+        "narHash": "sha256-aLJxoTDDSqB+/3orsulE6/qdlX6MzDLIITLZqdgMpqo=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
+        "rev": "929116e316068c7318c54eb4d827f7d9756d5e9c",
         "type": "github"
       },
       "original": {
@@ -279,11 +279,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1733220138,
-        "narHash": "sha256-Yh5XZ9yVurrcYdNTSWxYgW4+EJ0pcOqgM1043z9JaRc=",
+        "lastModified": 1733384649,
+        "narHash": "sha256-K5DJ2LpPqht7K76bsxetI+YHhGGRyVteTPRQaIIKJpw=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "bcb68885668cccec12276bbb379f8f2557aa06ce",
+        "rev": "190c31a89e5eec80dd6604d7f9e5af3802a58a13",
         "type": "github"
       },
       "original": {
@@ -295,11 +295,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1733097829,
-        "narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
+        "lastModified": 1733376361,
+        "narHash": "sha256-aLJxoTDDSqB+/3orsulE6/qdlX6MzDLIITLZqdgMpqo=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
+        "rev": "929116e316068c7318c54eb4d827f7d9756d5e9c",
         "type": "github"
       },
       "original": {
@@ -311,11 +311,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1733212471,
-        "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
+        "lastModified": 1733581040,
+        "narHash": "sha256-Qn3nPMSopRQJgmvHzVqPcE3I03zJyl8cSbgnnltfFDY=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
+        "rev": "22c3f2cf41a0e70184334a958e6b124fb0ce3e01",
         "type": "github"
       },
       "original": {
diff --git a/pkgs/jujutsu-openssh/Cargo.lock b/pkgs/jujutsu-openssh/Cargo.lock
index f9d6918..5146150 100644
--- a/pkgs/jujutsu-openssh/Cargo.lock
+++ b/pkgs/jujutsu-openssh/Cargo.lock
@@ -123,9 +123,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.93"
+version = "1.0.94"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
+checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
 
 [[package]]
 name = "arc-swap"
@@ -178,17 +178,6 @@ version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
-[[package]]
-name = "backoff"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
-dependencies = [
- "getrandom",
- "instant",
- "rand",
-]
-
 [[package]]
 name = "backtrace"
 version = "0.3.73"
@@ -204,17 +193,14 @@ dependencies = [
  "rustc-demangle",
 ]
 
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
 [[package]]
 name = "bitflags"
 version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "blake2"
@@ -236,9 +222,9 @@ dependencies = [
 
 [[package]]
 name = "bstr"
-version = "1.10.0"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
+checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22"
 dependencies = [
  "memchr",
  "regex-automata 0.4.8",
@@ -357,9 +343,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.20"
+version = "4.5.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8"
+checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -376,9 +362,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.20"
+version = "4.5.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54"
+checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1"
 dependencies = [
  "anstream",
  "anstyle",
@@ -389,11 +375,14 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.5.37"
+version = "4.5.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11611dca53440593f38e6b25ec629de50b14cdfa63adc0fb856115a2c6d97595"
+checksum = "d9647a559c112175f17cf724dc72d3645680a883c58481332779192b0d8e7a01"
 dependencies = [
  "clap",
+ "clap_lex",
+ "is_executable",
+ "shlex",
 ]
 
 [[package]]
@@ -585,7 +574,7 @@ version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "crossterm_winapi",
  "libc",
  "mio 0.8.11",
@@ -727,21 +716,14 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
-[[package]]
-name = "esl01-renderdag"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a1840969ab8be31e186bb6d2f672d586dcd203dd4019a80dc1277a14686eca9"
-dependencies = [
- "bitflags 1.3.2",
- "itertools 0.10.5",
-]
-
 [[package]]
 name = "faster-hex"
 version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "fastrand"
@@ -890,7 +872,7 @@ dependencies = [
 
 [[package]]
 name = "gen-protos"
-version = "0.23.0"
+version = "0.24.0"
 dependencies = [
  "prost-build",
 ]
@@ -927,7 +909,7 @@ name = "git2"
 version = "0.19.0"
 source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=60e29ff0d#60e29ff0d84cdffd9f366455d32606e582a4c378"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "libc",
  "libgit2-sys",
  "log",
@@ -938,9 +920,9 @@ dependencies = [
 
 [[package]]
 name = "gix"
-version = "0.66.0"
+version = "0.68.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9048b8d1ae2104f045cb37e5c450fc49d5d8af22609386bfc739c11ba88995eb"
+checksum = "b04c66359b5e17f92395abc433861df0edf48f39f3f590818d1d7217327dd6a1"
 dependencies = [
  "gix-actor",
  "gix-attributes",
@@ -979,28 +961,28 @@ dependencies = [
  "gix-worktree",
  "once_cell",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-actor"
-version = "0.32.0"
+version = "0.33.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665"
+checksum = "32b24171f514cef7bb4dfb72a0b06dacf609b33ba8ad2489d4c4559a03b7afb3"
 dependencies = [
  "bstr",
  "gix-date",
  "gix-utils",
  "itoa",
- "thiserror",
- "winnow 0.6.18",
+ "thiserror 2.0.4",
+ "winnow",
 ]
 
 [[package]]
 name = "gix-attributes"
-version = "0.22.5"
+version = "0.23.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebccbf25aa4a973dd352564a9000af69edca90623e8a16dad9cbc03713131311"
+checksum = "ddf9bf852194c0edfe699a2d36422d2c1f28f73b7c6d446c3f0ccd3ba232cadc"
 dependencies = [
  "bstr",
  "gix-glob",
@@ -1009,33 +991,33 @@ dependencies = [
  "gix-trace",
  "kstring",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
  "unicode-bom",
 ]
 
 [[package]]
 name = "gix-bitmap"
-version = "0.2.11"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a371db66cbd4e13f0ed9dc4c0fea712d7276805fccc877f77e96374d317e87ae"
+checksum = "d48b897b4bbc881aea994b4a5bbb340a04979d7be9089791304e04a9fbc66b53"
 dependencies = [
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-chunk"
-version = "0.4.8"
+version = "0.4.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45c8751169961ba7640b513c3b24af61aa962c967aaf04116734975cd5af0c52"
+checksum = "c6ffbeb3a5c0b8b84c3fe4133a6f8c82fa962f4caefe8d0762eced025d3eb4f7"
 dependencies = [
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-command"
-version = "0.3.9"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff2e692b36bbcf09286c70803006ca3fd56551a311de450be317a0ab8ea92e7"
+checksum = "6d7d6b8f3a64453fd7e8191eb80b351eb7ac0839b40a1237cd2c137d5079fe53"
 dependencies = [
  "bstr",
  "gix-path",
@@ -1045,23 +1027,23 @@ dependencies = [
 
 [[package]]
 name = "gix-commitgraph"
-version = "0.24.3"
+version = "0.25.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "133b06f67f565836ec0c473e2116a60fb74f80b6435e21d88013ac0e3c60fc78"
+checksum = "a8da6591a7868fb2b6dabddea6b09988b0b05e0213f938dbaa11a03dd7a48d85"
 dependencies = [
  "bstr",
  "gix-chunk",
  "gix-features",
  "gix-hash",
  "memmap2",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-config"
-version = "0.40.0"
+version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0"
+checksum = "6649b406ca1f99cb148959cf00468b231f07950f8ec438cc0903cda563606f19"
 dependencies = [
  "bstr",
  "gix-config-value",
@@ -1073,41 +1055,41 @@ dependencies = [
  "memchr",
  "once_cell",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
  "unicode-bom",
- "winnow 0.6.18",
+ "winnow",
 ]
 
 [[package]]
 name = "gix-config-value"
-version = "0.14.8"
+version = "0.14.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03f76169faa0dec598eac60f83d7fcdd739ec16596eca8fb144c88973dbe6f8c"
+checksum = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "bstr",
  "gix-path",
  "libc",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-date"
-version = "0.9.0"
+version = "0.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35c84b7af01e68daf7a6bb8bb909c1ff5edb3ce4326f1f43063a5a96d3c3c8a5"
+checksum = "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d"
 dependencies = [
  "bstr",
  "itoa",
  "jiff",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-diff"
-version = "0.46.0"
+version = "0.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92c9afd80fff00f8b38b1c1928442feb4cd6d2232a6ed806b6b193151a3d336c"
+checksum = "a327be31a392144b60ab0b1c863362c32a1c8f7effdfa2141d5d5b6b916ef3bf"
 dependencies = [
  "bstr",
  "gix-command",
@@ -1118,16 +1100,17 @@ dependencies = [
  "gix-path",
  "gix-tempfile",
  "gix-trace",
+ "gix-traverse",
  "gix-worktree",
  "imara-diff",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-discover"
-version = "0.35.0"
+version = "0.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0577366b9567376bc26e815fd74451ebd0e6218814e242f8e5b7072c58d956d2"
+checksum = "83bf6dfa4e266a4a9becb4d18fc801f92c3f7cc6c433dd86fdadbcf315ffb6ef"
 dependencies = [
  "bstr",
  "dunce",
@@ -1136,14 +1119,14 @@ dependencies = [
  "gix-path",
  "gix-ref",
  "gix-sec",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-features"
-version = "0.38.2"
+version = "0.39.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69"
+checksum = "7d85d673f2e022a340dba4713bed77ef2cf4cd737d2f3e0f159d45e0935fd81f"
 dependencies = [
  "crc32fast",
  "crossbeam-channel",
@@ -1156,15 +1139,15 @@ dependencies = [
  "parking_lot",
  "prodash",
  "sha1_smol",
- "thiserror",
+ "thiserror 2.0.4",
  "walkdir",
 ]
 
 [[package]]
 name = "gix-filter"
-version = "0.13.0"
+version = "0.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4121790ae140066e5b953becc72e7496278138d19239be2e63b5067b0843119e"
+checksum = "5108cc58d58b27df10ac4de7f31b2eb96d588a33e5eba23739b865f5d8db7995"
 dependencies = [
  "bstr",
  "encoding_rs",
@@ -1178,14 +1161,14 @@ dependencies = [
  "gix-trace",
  "gix-utils",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-fs"
-version = "0.11.3"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575"
+checksum = "34740384d8d763975858fa2c176b68652a6fcc09f616e24e3ce967b0d370e4d8"
 dependencies = [
  "fastrand",
  "gix-features",
@@ -1194,11 +1177,11 @@ dependencies = [
 
 [[package]]
 name = "gix-glob"
-version = "0.16.5"
+version = "0.17.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111"
+checksum = "aaf69a6bec0a3581567484bf99a4003afcaf6c469fd4214352517ea355cf3435"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "bstr",
  "gix-features",
  "gix-path",
@@ -1206,19 +1189,19 @@ dependencies = [
 
 [[package]]
 name = "gix-hash"
-version = "0.14.2"
+version = "0.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e"
+checksum = "0b5eccc17194ed0e67d49285e4853307e4147e95407f91c1c3e4a13ba9f4e4ce"
 dependencies = [
  "faster-hex",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-hashtable"
-version = "0.5.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242"
+checksum = "0ef65b256631078ef733bc5530c4e6b1c2e7d5c2830b75d4e9034ab3997d18fe"
 dependencies = [
  "gix-hash",
  "hashbrown 0.14.5",
@@ -1227,9 +1210,9 @@ dependencies = [
 
 [[package]]
 name = "gix-ignore"
-version = "0.11.4"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e447cd96598460f5906a0f6c75e950a39f98c2705fc755ad2f2020c9e937fab7"
+checksum = "b6b1fb24d2a4af0aa7438e2771d60c14a80cf2c9bd55c29cf1712b841f05bb8a"
 dependencies = [
  "bstr",
  "gix-glob",
@@ -1240,11 +1223,11 @@ dependencies = [
 
 [[package]]
 name = "gix-index"
-version = "0.35.0"
+version = "0.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0cd4203244444017682176e65fd0180be9298e58ed90bd4a8489a357795ed22d"
+checksum = "270645fd20556b64c8ffa1540d921b281e6994413a0ca068596f97e9367a257a"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "bstr",
  "filetime",
  "fnv",
@@ -1263,64 +1246,66 @@ dependencies = [
  "memmap2",
  "rustix",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-lock"
-version = "14.0.0"
+version = "15.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d"
+checksum = "5102acdf4acae2644e38dbbd18cdfba9597a218f7d85f810fe5430207e03c2de"
 dependencies = [
  "gix-tempfile",
  "gix-utils",
- "thiserror",
+ "thiserror 1.0.69",
 ]
 
 [[package]]
 name = "gix-object"
-version = "0.44.0"
+version = "0.46.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa"
+checksum = "65d93e2bbfa83a307e47f45e45de7b6c04d7375a8bd5907b215f4bf45237d879"
 dependencies = [
  "bstr",
  "gix-actor",
  "gix-date",
  "gix-features",
  "gix-hash",
+ "gix-hashtable",
  "gix-utils",
  "gix-validate",
  "itoa",
  "smallvec",
- "thiserror",
- "winnow 0.6.18",
+ "thiserror 2.0.4",
+ "winnow",
 ]
 
 [[package]]
 name = "gix-odb"
-version = "0.63.0"
+version = "0.65.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3158068701c17df54f0ab2adda527f5a6aca38fd5fd80ceb7e3c0a2717ec747"
+checksum = "93bed6e1b577c25a6bb8e6ecbf4df525f29a671ddf5f2221821a56a8dbeec4e3"
 dependencies = [
  "arc-swap",
  "gix-date",
  "gix-features",
  "gix-fs",
  "gix-hash",
+ "gix-hashtable",
  "gix-object",
  "gix-pack",
  "gix-path",
  "gix-quote",
  "parking_lot",
  "tempfile",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-pack"
-version = "0.53.0"
+version = "0.55.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3223aa342eee21e1e0e403cad8ae9caf9edca55ef84c347738d10681676fd954"
+checksum = "9b91fec04d359544fecbb8e85117ec746fbaa9046ebafcefb58cb74f20dc76d4"
 dependencies = [
  "clru",
  "gix-chunk",
@@ -1331,66 +1316,66 @@ dependencies = [
  "gix-path",
  "memmap2",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
  "uluru",
 ]
 
 [[package]]
 name = "gix-packetline-blocking"
-version = "0.17.5"
+version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9802304baa798dd6f5ff8008a2b6516d54b74a69ca2d3a2b9e2d6c3b5556b40"
+checksum = "ce9004ce1bc00fd538b11c1ec8141a1558fb3af3d2b7ac1ac5c41881f9e42d2a"
 dependencies = [
  "bstr",
  "faster-hex",
  "gix-trace",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-path"
-version = "0.10.11"
+version = "0.10.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebfc4febd088abdcbc9f1246896e57e37b7a34f6909840045a1767c6dafac7af"
+checksum = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7"
 dependencies = [
  "bstr",
  "gix-trace",
  "home",
  "once_cell",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-pathspec"
-version = "0.7.7"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d23bf239532b4414d0e63b8ab3a65481881f7237ed9647bb10c1e3cc54c5ceb"
+checksum = "4c472dfbe4a4e96fcf7efddcd4771c9037bb4fdea2faaabf2f4888210c75b81e"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "bstr",
  "gix-attributes",
  "gix-config-value",
  "gix-glob",
  "gix-path",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-quote"
-version = "0.4.12"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbff4f9b9ea3fa7a25a70ee62f545143abef624ac6aa5884344e70c8b0a1d9ff"
+checksum = "64a1e282216ec2ab2816cd57e6ed88f8009e634aec47562883c05ac8a7009a63"
 dependencies = [
  "bstr",
  "gix-utils",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-ref"
-version = "0.47.0"
+version = "0.49.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5"
+checksum = "1eae462723686272a58f49501015ef7c0d67c3e042c20049d8dd9c7eff92efde"
 dependencies = [
  "gix-actor",
  "gix-features",
@@ -1403,43 +1388,44 @@ dependencies = [
  "gix-utils",
  "gix-validate",
  "memmap2",
- "thiserror",
- "winnow 0.6.18",
+ "thiserror 2.0.4",
+ "winnow",
 ]
 
 [[package]]
 name = "gix-refspec"
-version = "0.25.0"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebb005f82341ba67615ffdd9f7742c87787544441c88090878393d0682869ca6"
+checksum = "00c056bb747868c7eb0aeb352c9f9181ab8ca3d0a2550f16470803500c6c413d"
 dependencies = [
  "bstr",
  "gix-hash",
  "gix-revision",
  "gix-validate",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-revision"
-version = "0.29.0"
+version = "0.31.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba4621b219ac0cdb9256883030c3d56a6c64a6deaa829a92da73b9a576825e1e"
+checksum = "44488e0380847967bc3e3cacd8b22652e02ea1eb58afb60edd91847695cd2d8d"
 dependencies = [
  "bstr",
+ "gix-commitgraph",
  "gix-date",
  "gix-hash",
  "gix-object",
  "gix-revwalk",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-revwalk"
-version = "0.15.0"
+version = "0.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b41e72544b93084ee682ef3d5b31b1ba4d8fa27a017482900e5e044d5b1b3984"
+checksum = "510026fc32f456f8f067d8f37c34088b97a36b2229d88a6a5023ef179fcb109d"
 dependencies = [
  "gix-commitgraph",
  "gix-date",
@@ -1447,16 +1433,16 @@ dependencies = [
  "gix-hashtable",
  "gix-object",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-sec"
-version = "0.10.8"
+version = "0.10.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fe4d52f30a737bbece5276fab5d3a8b276dc2650df963e293d0673be34e7a5f"
+checksum = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "gix-path",
  "libc",
  "windows-sys 0.52.0",
@@ -1464,9 +1450,9 @@ dependencies = [
 
 [[package]]
 name = "gix-submodule"
-version = "0.14.0"
+version = "0.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "529d0af78cc2f372b3218f15eb1e3d1635a21c8937c12e2dd0b6fc80c2ca874b"
+checksum = "a2455f8c0fcb6ebe2a6e83c8f522d30615d763eb2ef7a23c7d929f9476e89f5c"
 dependencies = [
  "bstr",
  "gix-config",
@@ -1474,14 +1460,14 @@ dependencies = [
  "gix-pathspec",
  "gix-refspec",
  "gix-url",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-tempfile"
-version = "14.0.2"
+version = "15.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa"
+checksum = "2feb86ef094cc77a4a9a5afbfe5de626897351bbbd0de3cb9314baf3049adb82"
 dependencies = [
  "dashmap",
  "gix-fs",
@@ -1493,17 +1479,17 @@ dependencies = [
 
 [[package]]
 name = "gix-trace"
-version = "0.1.10"
+version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6cae0e8661c3ff92688ce1c8b8058b3efb312aba9492bbe93661a21705ab431b"
+checksum = "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952"
 
 [[package]]
 name = "gix-traverse"
-version = "0.41.0"
+version = "0.43.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "030da39af94e4df35472e9318228f36530989327906f38e27807df305fccb780"
+checksum = "3ff2ec9f779680f795363db1c563168b32b8d6728ec58564c628e85c92d29faf"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "gix-commitgraph",
  "gix-date",
  "gix-hash",
@@ -1511,28 +1497,27 @@ dependencies = [
  "gix-object",
  "gix-revwalk",
  "smallvec",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-url"
-version = "0.27.5"
+version = "0.28.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd280c5e84fb22e128ed2a053a0daeacb6379469be6a85e3d518a0636e160c89"
+checksum = "e09f97db3618fb8e473d7d97e77296b50aaee0ddcd6a867f07443e3e87391099"
 dependencies = [
  "bstr",
  "gix-features",
  "gix-path",
- "home",
- "thiserror",
+ "thiserror 2.0.4",
  "url",
 ]
 
 [[package]]
 name = "gix-utils"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35192df7fd0fa112263bad8021e2df7167df4cc2a6e6d15892e1e55621d3d4dc"
+checksum = "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f"
 dependencies = [
  "fastrand",
  "unicode-normalization",
@@ -1540,19 +1525,19 @@ dependencies = [
 
 [[package]]
 name = "gix-validate"
-version = "0.9.0"
+version = "0.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81f2badbb64e57b404593ee26b752c26991910fd0d81fe6f9a71c1a8309b6c86"
+checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937"
 dependencies = [
  "bstr",
- "thiserror",
+ "thiserror 2.0.4",
 ]
 
 [[package]]
 name = "gix-worktree"
-version = "0.36.0"
+version = "0.38.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c312ad76a3f2ba8e865b360d5cb3aa04660971d16dec6dd0ce717938d903149a"
+checksum = "756dbbe15188fa22540d5eab941f8f9cf511a5364d5aec34c88083c09f4bea13"
 dependencies = [
  "bstr",
  "gix-attributes",
@@ -1608,9 +1593,9 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.15.1"
+version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3"
+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
 
 [[package]]
 name = "heck"
@@ -1706,12 +1691,12 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.6.0"
+version = "2.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
+checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
 dependencies = [
  "equivalent",
- "hashbrown 0.15.1",
+ "hashbrown 0.15.2",
 ]
 
 [[package]]
@@ -1733,15 +1718,6 @@ dependencies = [
  "similar",
 ]
 
-[[package]]
-name = "instant"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
-dependencies = [
- "cfg-if",
-]
-
 [[package]]
 name = "is-terminal"
 version = "0.4.13"
@@ -1753,6 +1729,15 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
+[[package]]
+name = "is_executable"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2"
+dependencies = [
+ "winapi",
+]
+
 [[package]]
 name = "is_terminal_polyfill"
 version = "1.70.1"
@@ -1819,7 +1804,7 @@ dependencies = [
 
 [[package]]
 name = "jj-cli"
-version = "0.23.0"
+version = "0.24.0"
 dependencies = [
  "anyhow",
  "assert_cmd",
@@ -1837,10 +1822,10 @@ dependencies = [
  "crossterm",
  "dirs",
  "dunce",
- "esl01-renderdag",
  "futures 0.3.31",
  "git2",
  "gix",
+ "glob",
  "indexmap",
  "indoc",
  "insta",
@@ -1857,15 +1842,17 @@ dependencies = [
  "rayon",
  "regex",
  "rpassword",
+ "sapling-renderdag",
  "scm-record",
  "serde",
+ "serde_json",
  "slab",
  "strsim",
  "tempfile",
  "test-case",
  "testutils",
  "textwrap",
- "thiserror",
+ "thiserror 2.0.4",
  "timeago",
  "toml_edit",
  "tracing",
@@ -1876,11 +1863,10 @@ dependencies = [
 
 [[package]]
 name = "jj-lib"
-version = "0.23.0"
+version = "0.24.0"
 dependencies = [
  "assert_matches",
  "async-trait",
- "backoff",
  "blake2",
  "bstr",
  "chrono",
@@ -1890,13 +1876,11 @@ dependencies = [
  "criterion",
  "digest",
  "either",
- "esl01-renderdag",
  "futures 0.3.31",
  "git2",
  "gix",
- "gix-filter",
  "glob",
- "hashbrown 0.15.1",
+ "hashbrown 0.15.2",
  "hex",
  "ignore",
  "indexmap",
@@ -1919,6 +1903,7 @@ dependencies = [
  "regex",
  "rustix",
  "same-file",
+ "sapling-renderdag",
  "serde",
  "serde_json",
  "smallvec",
@@ -1926,8 +1911,9 @@ dependencies = [
  "tempfile",
  "test-case",
  "testutils",
- "thiserror",
+ "thiserror 2.0.4",
  "tokio",
+ "toml_edit",
  "tracing",
  "version_check",
  "watchman_client",
@@ -1938,7 +1924,7 @@ dependencies = [
 
 [[package]]
 name = "jj-lib-proc-macros"
-version = "0.23.0"
+version = "0.24.0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1980,9 +1966,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "libc"
-version = "0.2.161"
+version = "0.2.167"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
+checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc"
 
 [[package]]
 name = "libgit2-sys"
@@ -2002,7 +1988,7 @@ version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "libc",
  "redox_syscall",
 ]
@@ -2122,7 +2108,7 @@ dependencies = [
  "parking_lot",
  "regex",
  "textwrap",
- "thiserror",
+ "thiserror 1.0.69",
 ]
 
 [[package]]
@@ -2306,7 +2292,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
 dependencies = [
  "memchr",
- "thiserror",
+ "thiserror 1.0.69",
  "ucd-trie",
 ]
 
@@ -2464,18 +2450,22 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.89"
+version = "1.0.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
+checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "prodash"
-version = "28.0.0"
+version = "29.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79"
+checksum = "a266d8d6020c61a437be704c5e618037588e1985c7dbb7bf8d265db84cffe325"
+dependencies = [
+ "log",
+ "parking_lot",
+]
 
 [[package]]
 name = "prost"
@@ -2575,7 +2565,7 @@ version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d16546c5b5962abf8ce6e2881e722b4e0ae3b6f1a08a26ae3573c55853ca68d3"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "cassowary",
  "compact_str",
  "crossterm",
@@ -2616,7 +2606,7 @@ version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
 ]
 
 [[package]]
@@ -2627,7 +2617,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
 dependencies = [
  "getrandom",
  "libredox",
- "thiserror",
+ "thiserror 1.0.69",
 ]
 
 [[package]]
@@ -2729,11 +2719,11 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustix"
-version = "0.38.39"
+version = "0.38.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee"
+checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -2761,6 +2751,15 @@ dependencies = [
  "winapi-util",
 ]
 
+[[package]]
+name = "sapling-renderdag"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edffb89cab87bd0901c5749d576f5d37a1f34e05160e936f463f4e94cc447b61"
+dependencies = [
+ "bitflags",
+]
+
 [[package]]
 name = "scanlex"
 version = "0.1.4"
@@ -2779,7 +2778,7 @@ dependencies = [
  "ratatui",
  "serde",
  "serde_json",
- "thiserror",
+ "thiserror 1.0.69",
  "tracing",
  "unicode-width",
 ]
@@ -2792,9 +2791,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "serde"
-version = "1.0.210"
+version = "1.0.215"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
+checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
 dependencies = [
  "serde_derive",
 ]
@@ -2810,7 +2809,7 @@ dependencies = [
  "bytes",
  "serde",
  "serde_bytes",
- "thiserror",
+ "thiserror 1.0.69",
 ]
 
 [[package]]
@@ -2824,9 +2823,9 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.210"
+version = "1.0.215"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
+checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2835,9 +2834,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.132"
+version = "1.0.133"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"
+checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
 dependencies = [
  "itoa",
  "memchr",
@@ -3011,9 +3010,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.87"
+version = "2.0.90"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
+checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3022,9 +3021,9 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.13.0"
+version = "3.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
+checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c"
 dependencies = [
  "cfg-if",
  "fastrand",
@@ -3084,7 +3083,7 @@ dependencies = [
 
 [[package]]
 name = "testutils"
-version = "0.23.0"
+version = "0.24.0"
 dependencies = [
  "async-trait",
  "config",
@@ -3111,18 +3110,38 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.68"
+version = "1.0.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
 dependencies = [
- "thiserror-impl",
+ "thiserror-impl 1.0.69",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490"
+dependencies = [
+ "thiserror-impl 2.0.4",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.68"
+version = "1.0.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3172,9 +3191,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.41.0"
+version = "1.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb"
+checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551"
 dependencies = [
  "backtrace",
  "bytes",
@@ -3235,22 +3254,22 @@ dependencies = [
 
 [[package]]
 name = "toml_edit"
-version = "0.19.15"
+version = "0.22.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
 dependencies = [
  "indexmap",
  "serde",
  "serde_spanned",
  "toml_datetime",
- "winnow 0.5.40",
+ "winnow",
 ]
 
 [[package]]
 name = "tracing"
-version = "0.1.40"
+version = "0.1.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
 dependencies = [
  "pin-project-lite",
  "tracing-attributes",
@@ -3259,9 +3278,9 @@ dependencies = [
 
 [[package]]
 name = "tracing-attributes"
-version = "0.1.27"
+version = "0.1.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3281,9 +3300,9 @@ dependencies = [
 
 [[package]]
 name = "tracing-core"
-version = "0.1.32"
+version = "0.1.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
 dependencies = [
  "once_cell",
  "valuable",
@@ -3302,9 +3321,9 @@ dependencies = [
 
 [[package]]
 name = "tracing-subscriber"
-version = "0.3.18"
+version = "0.3.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
 dependencies = [
  "matchers",
  "nu-ansi-term",
@@ -3528,7 +3547,7 @@ dependencies = [
  "maplit",
  "serde",
  "serde_bser",
- "thiserror",
+ "thiserror 1.0.69",
  "tokio",
  "tokio-util",
  "winapi",
@@ -3743,15 +3762,6 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
-[[package]]
-name = "winnow"
-version = "0.5.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
-dependencies = [
- "memchr",
-]
-
 [[package]]
 name = "winnow"
 version = "0.6.18"
diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
index ff65c83..1d3ec6a 100644
--- a/pkgs/jujutsu-openssh/default.nix
+++ b/pkgs/jujutsu-openssh/default.nix
@@ -16,13 +16,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "jujutsu-openssh";
-  version = "0.23.0+pr3191.openssh";
+  version = "0.24.0+pr3191.openssh";
 
   src = fetchFromGitHub {
     owner = "dln";
     repo = "jj";
-    rev = "aa61f294708502d4faf120720252b4aa76157f2d"; # https://github.com/dln/jj/tree/openssh
-    hash = "sha256-5U873EtczuQBysXmfhLh0wrZ7rdkszOKHlakROBckWI=";
+    rev = "b6608a03881542d6a8c98f659b80b57a27906096"; # https://github.com/dln/jj/tree/openssh
+    hash = "sha256-kUfwjdQGq0UcIlVnNf/z0iG+y7SHf/ZZLVKXDyvDkVg=";
   };
 
   cargoLock.lockFile = ./Cargo.lock;

From 2d5364c5de0166f9a763bdc5e62dd8c1a170bcd1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 8 Dec 2024 23:00:45 +0100
Subject: [PATCH 504/656] nvim: blink-cmp 0.7.3 is in nixpkgs now

---
 home/common/nvim/default.nix |  2 +-
 pkgs/blink-cmp/default.nix   | 45 ------------------------------------
 pkgs/default.nix             |  1 -
 3 files changed, 1 insertion(+), 47 deletions(-)
 delete mode 100644 pkgs/blink-cmp/default.nix

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index b5599db..9f991b0 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -60,7 +60,7 @@
       }
 
       {
-        plugin = pkgs.blink-cmp;
+        plugin = blink-cmp;
         type = "lua";
         config = ''
           require'blink-cmp'.setup({
diff --git a/pkgs/blink-cmp/default.nix b/pkgs/blink-cmp/default.nix
deleted file mode 100644
index e9307e4..0000000
--- a/pkgs/blink-cmp/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  lib,
-  rustPlatform,
-  fetchFromGitHub,
-  stdenv,
-  vimUtils,
-}:
-let
-  version = "0.7.3";
-  src = fetchFromGitHub {
-    owner = "Saghen";
-    repo = "blink.cmp";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-nxiODLKgGeXzN5sqkLWU0PcsuSSB1scSzTC5qyCxLCI=";
-  };
-  libExt = if stdenv.hostPlatform.isDarwin then "dylib" else "so";
-  blink-fuzzy-lib = rustPlatform.buildRustPackage {
-    inherit version src;
-    pname = "blink-fuzzy-lib";
-    env = {
-      # TODO: remove this if plugin stops using nightly rust
-      RUSTC_BOOTSTRAP = true;
-    };
-    useFetchCargoVendor = true;
-    cargoHash = "sha256-XXI2jEoD6XbFNk3O8B6+aLzl1ZcJq1VinQXb+AOw8Rw=";
-  };
-in
-vimUtils.buildVimPlugin {
-  pname = "blink-cmp";
-  inherit version src;
-  preInstall = ''
-    mkdir -p target/release
-    ln -s ${blink-fuzzy-lib}/lib/libblink_cmp_fuzzy.${libExt} target/release/libblink_cmp_fuzzy.${libExt}
-  '';
-  meta = {
-    description = "Performant, batteries-included completion plugin for Neovim";
-    homepage = "https://github.com/saghen/blink.cmp";
-    maintainers = with lib.maintainers; [
-      balssh
-      redxtech
-    ];
-  };
-  doInstallCheck = true;
-  nvimRequireCheck = "blink-cmp";
-}
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 1ee0f62..ab3485b 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -1,5 +1,4 @@
 pkgs: {
-  blink-cmp = pkgs.callPackage ./blink-cmp { };
   gnome-ssh-askpass4 = pkgs.callPackage ./gnome-ssh-askpass4 { };
   jujutsu-openssh = pkgs.callPackage ./jujutsu-openssh { };
   lazyjj = pkgs.callPackage ./lazyjj { };

From 264546666cb431d4747e4e093214d91775e032d5 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 8 Dec 2024 23:03:11 +0100
Subject: [PATCH 505/656] lazyjj: nixpkgs caught up and ran by

---
 flake.lock              | 26 +++++++++++++-------------
 pkgs/default.nix        |  1 -
 pkgs/lazyjj/default.nix | 30 ------------------------------
 3 files changed, 13 insertions(+), 44 deletions(-)
 delete mode 100644 pkgs/lazyjj/default.nix

diff --git a/flake.lock b/flake.lock
index 77d0531..2bd73e6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1733686035,
-        "narHash": "sha256-uhbYV9gdMAPgBFm5CiH3defxuzrVXD1HsxkZPUqMxoQ=",
+        "lastModified": 1733704542,
+        "narHash": "sha256-tGY+WuCTF/hoZpISys+jLaPXvQV4QyGmSTyecFV1R3I=",
         "ref": "refs/heads/main",
-        "rev": "40ad31deea3d236ad762f2c21f2834af3b767bdb",
-        "revCount": 8184,
+        "rev": "ae2cf8dc371c960aa0772065c7f2a741c8bdc91b",
+        "revCount": 8188,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -145,11 +145,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733318908,
-        "narHash": "sha256-SVQVsbafSM1dJ4fpgyBqLZ+Lft+jcQuMtEL3lQWx2Sk=",
+        "lastModified": 1733665616,
+        "narHash": "sha256-+XTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd+lh2A=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "6f4e2a2112050951a314d2733a994fbab94864c6",
+        "rev": "d8c02f0ffef0ef39f6063731fc539d8c71eb463a",
         "type": "github"
       },
       "original": {
@@ -232,11 +232,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1733618008,
-        "narHash": "sha256-8MM4WF1AapF9QWDJhoXGLcEKrLE3S75QA74YEQt0A18=",
+        "lastModified": 1733703025,
+        "narHash": "sha256-lMWofhJTYhnqvd+QzeRb5J58cYGOEI+zzqcHybKxkWU=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "b75d6c354368841ce4291142b79882362e574f61",
+        "rev": "dae2f13b6d2a39d1e56df54fabe5c6452ddf6b2a",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1733614558,
-        "narHash": "sha256-JcI4DL5fn0KGX5TxoSLIxwTfi6rikRHsG/gI/7SUDIg=",
+        "lastModified": 1733660965,
+        "narHash": "sha256-Nm+9/OZfpb4hayCz/IpAzO2waQimlt+kM1fMOM1viWo=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "4fcc5cd34a75df9a3088c83dc1a87aa6e37051e1",
+        "rev": "84d9f4f9f9efbfc72630f01f5f837c50fd7020d4",
         "type": "github"
       },
       "original": {
diff --git a/pkgs/default.nix b/pkgs/default.nix
index ab3485b..068b02a 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -1,5 +1,4 @@
 pkgs: {
   gnome-ssh-askpass4 = pkgs.callPackage ./gnome-ssh-askpass4 { };
   jujutsu-openssh = pkgs.callPackage ./jujutsu-openssh { };
-  lazyjj = pkgs.callPackage ./lazyjj { };
 }
diff --git a/pkgs/lazyjj/default.nix b/pkgs/lazyjj/default.nix
deleted file mode 100644
index c253e67..0000000
--- a/pkgs/lazyjj/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  stdenvNoCC,
-  fetchzip,
-}:
-let
-  version = "0.3.1";
-in
-stdenvNoCC.mkDerivation {
-  name = "lazyjj";
-  inherit version;
-
-  src = fetchzip {
-    url = "https://github.com/Cretezy/lazyjj/releases/download/v0.3.1/lazyjj-v0.3.1-x86_64-unknown-linux-musl.tar.gz";
-    hash = "sha256-6R4W6uyq8sns8WLoJxp06xAYaJ0Zn+pZLtwhVIPobmc=";
-  };
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -m755 -D $src/lazyjj $out/bin/lazyjj
-    runHook postInstall
-  '';
-
-  meta = {
-    homepage = "https://github.com/Cretezy/lazyjj";
-    description = "TUI for jj";
-    mainProgram = "lazyjj";
-    platforms = [ "x86_64-linux" ];
-  };
-}

From 378fd7caa0ad8fc8a0661167c5f83d930605fe8a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 10 Dec 2024 15:30:04 +0100
Subject: [PATCH 506/656] patagia.dev -> patagia.net

---
 common/nix.nix          |  1 -
 flake.lock              | 74 ++++++++++++++++++++++++++---------------
 hosts/dinky/default.nix | 10 +++---
 hosts/nemo/default.nix  |  6 ++--
 hosts/pearl/default.nix |  4 +--
 5 files changed, 58 insertions(+), 37 deletions(-)

diff --git a/common/nix.nix b/common/nix.nix
index 1d2bde9..b6362a3 100644
--- a/common/nix.nix
+++ b/common/nix.nix
@@ -20,7 +20,6 @@
         # Workaround for https://github.com/NixOS/nix/issues/9574
         nix-path = config.nix.nixPath;
         substituters = [
-          # "https://cache-nixos-org.aarn.shelman.io"
           "https://cache.nixos.org/"
         ];
         trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
diff --git a/flake.lock b/flake.lock
index 2bd73e6..67742e2 100644
--- a/flake.lock
+++ b/flake.lock
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1733704542,
-        "narHash": "sha256-tGY+WuCTF/hoZpISys+jLaPXvQV4QyGmSTyecFV1R3I=",
+        "lastModified": 1733867032,
+        "narHash": "sha256-2ddDF3j8aI70WdWIn+Gsef4XGM2+grIlaEtHlkZmWdY=",
         "ref": "refs/heads/main",
-        "rev": "ae2cf8dc371c960aa0772065c7f2a741c8bdc91b",
-        "revCount": 8188,
+        "rev": "59df17a699f6f13700823124cefaf91fb0c37d4f",
+        "revCount": 8196,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -209,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733484277,
-        "narHash": "sha256-i5ay20XsvpW91N4URET/nOc0VQWOAd4c4vbqYtcH8Rc=",
+        "lastModified": 1733869277,
+        "narHash": "sha256-qFWxVV48wwiyvrAbGeSbZ5LAOv1Kv/lvDtibOhuc1/o=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "d00c6f6d0ad16d598bf7e2956f52c1d9d5de3c3a",
+        "rev": "8772bae58c0a1390727aaf13802debfa29757d67",
         "type": "github"
       },
       "original": {
@@ -229,14 +229,15 @@
         "git-hooks": "git-hooks",
         "hercules-ci-effects": "hercules-ci-effects",
         "neovim-src": "neovim-src",
-        "nixpkgs": "nixpkgs"
+        "nixpkgs": "nixpkgs",
+        "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1733703025,
-        "narHash": "sha256-lMWofhJTYhnqvd+QzeRb5J58cYGOEI+zzqcHybKxkWU=",
+        "lastModified": 1733846759,
+        "narHash": "sha256-Xp/rWqO4XXJAqh5c2xju4NCBRpi8lQIknLQmCYfrdWY=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "dae2f13b6d2a39d1e56df54fabe5c6452ddf6b2a",
+        "rev": "dcd1be4d5f9fa160d0c68c1967f4ecc458b01969",
         "type": "github"
       },
       "original": {
@@ -248,11 +249,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1733660965,
-        "narHash": "sha256-Nm+9/OZfpb4hayCz/IpAzO2waQimlt+kM1fMOM1viWo=",
+        "lastModified": 1733731191,
+        "narHash": "sha256-Xtd0YLx6RKJMDu2GfE9geO48Dw3KnpVkfZjUqA51xDw=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "84d9f4f9f9efbfc72630f01f5f837c50fd7020d4",
+        "rev": "3bb2d027597107a3d7f84ef61507104fd4dc050a",
         "type": "github"
       },
       "original": {
@@ -263,11 +264,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1733376361,
-        "narHash": "sha256-aLJxoTDDSqB+/3orsulE6/qdlX6MzDLIITLZqdgMpqo=",
+        "lastModified": 1733656523,
+        "narHash": "sha256-w0FXPfpGhOihoJDiwMsyN1EzpsXi2F8VQ+NVZQSMtys=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "929116e316068c7318c54eb4d827f7d9756d5e9c",
+        "rev": "93dc9803a1ee435e590b02cde9589038d5cc3a4e",
         "type": "github"
       },
       "original": {
@@ -279,11 +280,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1733384649,
-        "narHash": "sha256-K5DJ2LpPqht7K76bsxetI+YHhGGRyVteTPRQaIIKJpw=",
+        "lastModified": 1733730953,
+        "narHash": "sha256-dlK7n82FEyZlHH7BFHQAM5tua+lQO1Iv7aAtglc1O5s=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "190c31a89e5eec80dd6604d7f9e5af3802a58a13",
+        "rev": "7109b680d161993918b0a126f38bc39763e5a709",
         "type": "github"
       },
       "original": {
@@ -295,11 +296,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1733376361,
-        "narHash": "sha256-aLJxoTDDSqB+/3orsulE6/qdlX6MzDLIITLZqdgMpqo=",
+        "lastModified": 1733686850,
+        "narHash": "sha256-NQEO/nZWWGTGlkBWtCs/1iF1yl2lmQ1oY/8YZrumn3I=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "929116e316068c7318c54eb4d827f7d9756d5e9c",
+        "rev": "dd51f52372a20a93c219e8216fe528a648ffcbf4",
         "type": "github"
       },
       "original": {
@@ -311,11 +312,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1733581040,
-        "narHash": "sha256-Qn3nPMSopRQJgmvHzVqPcE3I03zJyl8cSbgnnltfFDY=",
+        "lastModified": 1733759999,
+        "narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "22c3f2cf41a0e70184334a958e6b124fb0ce3e01",
+        "rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56",
         "type": "github"
       },
       "original": {
@@ -351,6 +352,27 @@
         "type": "github"
       }
     },
+    "treefmt-nix": {
+      "inputs": {
+        "nixpkgs": [
+          "neovim-nightly-overlay",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1733761991,
+        "narHash": "sha256-s4DalCDepD22jtKL5Nw6f4LP5UwoMcPzPZgHWjAfqbQ=",
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "rev": "0ce9d149d99bc383d1f2d85f31f6ebd146e46085",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "type": "github"
+      }
+    },
     "zig": {
       "inputs": {
         "flake-compat": [
diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index 90f6d5a..5a5806a 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -78,10 +78,10 @@
 
   networking = {
     hostName = "dinky";
-    domain = "aarn.patagia.dev";
+    domain = "aarn.patagia.net";
     search = [
-      "patagia.dev"
-      "aarn.patagia.dev"
+      "patagia.net"
+      "aarn.patagia.net"
     ];
     useDHCP = lib.mkDefault true;
   };
@@ -120,7 +120,7 @@
   nix.settings.trusted-users = [ "dln" ];
   nix.buildMachines = [
     {
-      hostName = "nemo.aarn.patagia.dev";
+      hostName = "nemo.aarn.patagia.net";
       sshUser = "nixremote";
       sshKey = "/root/.ssh/id_ed25519";
       system = "x86_64-linux";
@@ -138,7 +138,7 @@
   nix.distributedBuilds = true;
   nix.settings.builders-use-substitutes = true;
   nix.settings.trusted-substituters = [
-    "ssh-ng://nemo.aarn.patagia.dev"
+    "ssh-ng://nemo.aarn.patagia.net"
   ];
 
   system.stateVersion = "24.05"; # Did you read the comment?
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index ada8496..748c8b2 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -87,7 +87,7 @@
 
   networking = {
     hostName = "nemo"; # Define your hostname.
-    domain = "aarn.patagia.dev";
+    domain = "aarn.patagia.net";
     nameservers = [
       "10.1.100.11"
       "10.1.100.12"
@@ -143,8 +143,8 @@
   services.resolved = {
     enable = true;
     domains = [
-      "patagia.dev"
-      "aarn.patagia.dev"
+      "patagia.net"
+      "aarn.patagia.net"
     ];
     llmnr = "false";
     fallbackDns = [ "9.9.9.9" ];
diff --git a/hosts/pearl/default.nix b/hosts/pearl/default.nix
index a44a372..1120826 100644
--- a/hosts/pearl/default.nix
+++ b/hosts/pearl/default.nix
@@ -33,10 +33,10 @@
 
   networking = {
     hostName = "pearl";
-    domain = "aarn.patagia.dev";
+    domain = "aarn.patagia.net";
     search = [
       "patagia.dev"
-      "aarn.patagia.dev"
+      "aarn.patagia.net"
     ];
     useDHCP = lib.mkDefault true;
   };

From 4c259757dbd5e627c5f54d76c8b6e8779b60b619 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 507/656] nvim: add c-p binding

---
 home/common/nvim/init.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index fbb6738..b94dc09 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -124,6 +124,7 @@ vim.keymap.set("n", "<Leader>D", vim.diagnostic.setloclist, { desc = "Diagnostic
 vim.keymap.set("n", "<Leader>r", vim.lsp.buf.rename, opts("Rename Symbol"))
 vim.keymap.set('n', '<Leader>F', "<cmd>Pick files<cr>", opts("Open file picker CWD"))
 vim.keymap.set('n', '<Leader>f', "<cmd>Pick files_root<cr>", opts("Open file picker"))
+vim.keymap.set('n', '<c-p>', "<Leader>f", { remap = true })
 vim.keymap.set('n', '<Leader>g', "<cmd>Pick oldfiles<cr>", opts("Open file picker history"))
 vim.keymap.set("n", '<Leader>k', vim.lsp.buf.hover, opts("Show docs for item under cursor"))
 vim.keymap.set('n', '<Leader>q', require('mini.bufremove').delete, opts("Delete buffer"))

From 195a66d7bfff484417e469ad4043389f5c015f6d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 508/656] nvim: add direnv-vim plugin

---
 flake.lock                   | 50 ++++++++++++++++++------------------
 home/common/nvim/default.nix |  1 +
 2 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/flake.lock b/flake.lock
index 67742e2..c6fc0c8 100644
--- a/flake.lock
+++ b/flake.lock
@@ -103,11 +103,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1733867032,
-        "narHash": "sha256-2ddDF3j8aI70WdWIn+Gsef4XGM2+grIlaEtHlkZmWdY=",
+        "lastModified": 1734275633,
+        "narHash": "sha256-/5Rnuouf4DrQWKc5sMjA/8Uiznp8/oCQe3YaYvp+fWU=",
         "ref": "refs/heads/main",
-        "rev": "59df17a699f6f13700823124cefaf91fb0c37d4f",
-        "revCount": 8196,
+        "rev": "ceef2900e24944b18a6aadf5e6dd40aeef64e85d",
+        "revCount": 8271,
         "type": "git",
         "url": "ssh://git@github.com/ghostty-org/ghostty"
       },
@@ -209,11 +209,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733869277,
-        "narHash": "sha256-qFWxVV48wwiyvrAbGeSbZ5LAOv1Kv/lvDtibOhuc1/o=",
+        "lastModified": 1734093295,
+        "narHash": "sha256-hSwgGpcZtdDsk1dnzA0xj5cNaHgN9A99hRF/mxMtwS4=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "8772bae58c0a1390727aaf13802debfa29757d67",
+        "rev": "66c5d8b62818ec4c1edb3e941f55ef78df8141a8",
         "type": "github"
       },
       "original": {
@@ -233,11 +233,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1733846759,
-        "narHash": "sha256-Xp/rWqO4XXJAqh5c2xju4NCBRpi8lQIknLQmCYfrdWY=",
+        "lastModified": 1734048484,
+        "narHash": "sha256-EtSEYNx19xzuEBJsT7yXG+nVx11CM3rvrAQAXcvG/5Q=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "dcd1be4d5f9fa160d0c68c1967f4ecc458b01969",
+        "rev": "044f9a36ad620a119ebe154c26ec571a09f75039",
         "type": "github"
       },
       "original": {
@@ -249,11 +249,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1733731191,
-        "narHash": "sha256-Xtd0YLx6RKJMDu2GfE9geO48Dw3KnpVkfZjUqA51xDw=",
+        "lastModified": 1734000357,
+        "narHash": "sha256-8FO5Ca9bLEiD649b5gkQCdjpTmbPenJHpN0JBhtLpjE=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "3bb2d027597107a3d7f84ef61507104fd4dc050a",
+        "rev": "17383870dd3b7f04eddd48ed929cc25c7e102277",
         "type": "github"
       },
       "original": {
@@ -264,11 +264,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1733656523,
-        "narHash": "sha256-w0FXPfpGhOihoJDiwMsyN1EzpsXi2F8VQ+NVZQSMtys=",
+        "lastModified": 1733749988,
+        "narHash": "sha256-+5qdtgXceqhK5ZR1YbP1fAUsweBIrhL38726oIEAtDs=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "93dc9803a1ee435e590b02cde9589038d5cc3a4e",
+        "rev": "bc27f0fde01ce4e1bfec1ab122d72b7380278e68",
         "type": "github"
       },
       "original": {
@@ -280,11 +280,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1733730953,
-        "narHash": "sha256-dlK7n82FEyZlHH7BFHQAM5tua+lQO1Iv7aAtglc1O5s=",
+        "lastModified": 1734017764,
+        "narHash": "sha256-msOfmyJSjAHgIygI/JD0Ae3JsDv4rT54Nlfr5t6MQMQ=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "7109b680d161993918b0a126f38bc39763e5a709",
+        "rev": "64e9404f308e0f0a0d8cdd7c358f74e34802494b",
         "type": "github"
       },
       "original": {
@@ -296,11 +296,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1733686850,
-        "narHash": "sha256-NQEO/nZWWGTGlkBWtCs/1iF1yl2lmQ1oY/8YZrumn3I=",
+        "lastModified": 1734126203,
+        "narHash": "sha256-0XovF7BYP50rTD2v4r55tR5MuBLet7q4xIz6Rgh3BBU=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "dd51f52372a20a93c219e8216fe528a648ffcbf4",
+        "rev": "71a6392e367b08525ee710a93af2e80083b5b3e2",
         "type": "github"
       },
       "original": {
@@ -312,11 +312,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1733759999,
-        "narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=",
+        "lastModified": 1734119587,
+        "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56",
+        "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 9f991b0..fad4f3d 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -48,6 +48,7 @@
     ];
 
     plugins = with pkgs.vimPlugins; [
+      direnv-vim
       friendly-snippets
       go-nvim
       targets-vim

From 0ff88467e6e8fadadb70b05c8ea6629cba3717bc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 509/656] athens moved to athens.patagia.net

---
 home/common/devel.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/devel.nix b/home/common/devel.nix
index c8e6c0a..21cffd0 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -29,6 +29,6 @@
   ];
 
   home.sessionVariables = {
-    GOPROXY = "https://athena.patagia.dev";
+    GOPROXY = "https://athena.patagia.net";
   };
 }

From f5af1628e716a722e3837e92d79fe8703cc6ccbc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 510/656] atuin: moved to atuin.patagia.net

---
 home/common/atuin.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/atuin.nix b/home/common/atuin.nix
index 720459b..991dcec 100644
--- a/home/common/atuin.nix
+++ b/home/common/atuin.nix
@@ -13,7 +13,7 @@
       search_mode_shell_up_key_binding = "prefix";
       show_help = false;
       style = "compact";
-      sync_address = "https://atuin.patagia.dev";
+      sync_address = "https://atuin.patagia.net";
       sync.records = true;
 
       daemon = {

From f53cbba16fb02334d1842185884ec5a6fde0f91b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 511/656] Enable avahi

---
 common/base.nix | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/common/base.nix b/common/base.nix
index 5eb3b4e..9207bf3 100644
--- a/common/base.nix
+++ b/common/base.nix
@@ -51,6 +51,18 @@
     '';
   };
 
+  services.avahi = {
+    nssmdns4 = true;
+    enable = true;
+    ipv4 = true;
+    ipv6 = true;
+    publish = {
+      enable = true;
+      addresses = true;
+      workstation = true;
+    };
+  };
+
   # Open ports in the firewall.
   # networking.firewall.allowedTCPPorts = [ ... ];
   # networking.firewall.allowedUDPPorts = [ ... ];

From 1379ed01f0ea57b6a9e7e8b211a781eff6b14edd Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 512/656] Use cache-nixos-org.aarn.patagia.net as cache

---
 common/nix.nix | 2 +-
 flake.nix      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/nix.nix b/common/nix.nix
index b6362a3..da49b67 100644
--- a/common/nix.nix
+++ b/common/nix.nix
@@ -20,7 +20,7 @@
         # Workaround for https://github.com/NixOS/nix/issues/9574
         nix-path = config.nix.nixPath;
         substituters = [
-          "https://cache.nixos.org/"
+          "https://cache-nixos-org.aarn.patagia.net/"
         ];
         trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
         extra-substituters = [
diff --git a/flake.nix b/flake.nix
index 848f99f..c200102 100644
--- a/flake.nix
+++ b/flake.nix
@@ -3,7 +3,7 @@
 
   nixConfig = {
     substituters = [
-      "https://cache.nixos.org/"
+      "https://cache-nixos-org.aarn.patagia.net/"
     ];
     extra-substituters = [
       "https://nix-community.cachix.org"

From fa7fce620a86ca9f1707a813725fe69ccd41b69a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 513/656] ghostty: Use official (now released + public) flake

---
 flake.nix | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/flake.nix b/flake.nix
index c200102..5f52e80 100644
--- a/flake.nix
+++ b/flake.nix
@@ -14,6 +14,7 @@
   };
 
   inputs = {
+    ghostty.url = "github:ghostty-org/ghostty";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
@@ -21,14 +22,6 @@
 
     home-manager.url = "github:nix-community/home-manager";
     home-manager.inputs.nixpkgs.follows = "nixpkgs";
-
-    ghostty = {
-      url = "git+ssh://git@github.com/ghostty-org/ghostty";
-      inputs = {
-        nixpkgs-stable.follows = "nixpkgs";
-        nixpkgs-unstable.follows = "nixpkgs";
-      };
-    };
     ghostty-hm.url = "github:clo4/ghostty-hm-module";
   };
 

From baaf51693925984288cbdfa338317950a9910811 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 514/656] nix: bump

---
 flake.nix              | 2 +-
 hosts/nemo/default.nix | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/flake.nix b/flake.nix
index 5f52e80..ce544bd 100644
--- a/flake.nix
+++ b/flake.nix
@@ -17,7 +17,7 @@
     ghostty.url = "github:ghostty-org/ghostty";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
-    nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
+    nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 
     home-manager.url = "github:nix-community/home-manager";
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 748c8b2..c36cc1c 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -219,5 +219,5 @@
     "nixremote"
   ];
 
-  system.stateVersion = "24.05"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
+  system.stateVersion = "24.11"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
 }

From 49d4bbd7c12654af196b39bdeceeaa4562634009 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 515/656] gimp: skip plugins for now

---
 home/dln/desktop.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index ae7ded3..b783e5d 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -7,7 +7,7 @@
   home.packages = with pkgs; [
     cameractrls-gtk4
     dynamic-wallpaper
-    gimp-with-plugins
+    gimp
     inkscape
     inputs.ghostty.packages.${pkgs.system}.default
     moonlight-qt

From 8b46fa253d94fa764f939451cbec432bf0ec6ae1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 516/656] nvim fixings

---
 home/common/nvim/default.nix | 80 ++++++++++++++++++++----------------
 1 file changed, 44 insertions(+), 36 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index fad4f3d..1c9b4a7 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -72,30 +72,38 @@
             },
             completion = {
               accept = {
-                auto_brackets = {
-                  enabled = true,
-                },
+                auto_brackets = { enabled = true, },
               },
 
               documentation = {
                 auto_show = true,
                 auto_show_delay_ms = 800,
-                window = {
-                  border = 'rounded',
-                },
-                ghost_text = {
-                  enabled = true,
-                },
+                window = { border = 'rounded', },
               },
 
-              signature = {
-                enabled = true,
-                window = {
-                  border = 'rounded',
-                },
-              },
+              ghost_text = { enabled = true },
 
+              menu = {
+                auto_show = false,
+              },
             },
+
+            fuzzy = {
+              prebuilt_binaries = {
+                download = false
+              },
+            },
+
+            signature = {
+              enabled = true,
+              window = { border = 'rounded', },
+            },
+
+             sources = {
+              default = { 'lsp', 'buffer', 'path', 'snippets' },
+              cmdline = {},
+            },
+
           })
         '';
       }
@@ -106,8 +114,8 @@
           src = pkgs.fetchFromGitHub {
             owner = "saghen";
             repo = "blink.compat";
-            rev = "78f3f7187ff4a1444e952548c556d936da8f72fc"; # v2.1.2
-            hash = "sha256-aqHDwrzPOyOw9UbJlQX10/cVQwNHg4v6i9jSm+pNKZc=";
+            rev = "5ca8848c8cc32abdc980e5db4f0eb7bb8fbf84dc"; # Dec 25, 2024
+            hash = "sha256-tFQeKyqdo3mvptYnWxKhTpI4ROFNQ6u3P8cLqtlsozw=";
           };
         };
         type = "lua";
@@ -143,25 +151,25 @@
         '';
       }
 
-      {
-        plugin = pkgs.vimUtils.buildVimPlugin {
-          name = "neocodeium";
-          src = pkgs.fetchFromGitHub {
-            owner = "monkoose";
-            repo = "neocodeium";
-            rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0
-            hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU=";
-          };
-        };
-        type = "lua";
-        config = ''
-          local neocodeium =require('neocodeium')
-          neocodeium.setup()
-          vim.keymap.set("i", "<C-j>", neocodeium.accept, { remap = true })
-          vim.keymap.set("i", "<A-f>", neocodeium.accept, { remap = true })
-          vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete, { remap = true })
-        '';
-      }
+      # {
+      #   plugin = pkgs.vimUtils.buildVimPlugin {
+      #     name = "neocodeium";
+      #     src = pkgs.fetchFromGitHub {
+      #       owner = "monkoose";
+      #       repo = "neocodeium";
+      #       rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0
+      #       hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU=";
+      #     };
+      #   };
+      #   type = "lua";
+      #   config = ''
+      #     local neocodeium =require('neocodeium')
+      #     neocodeium.setup()
+      #     vim.keymap.set("i", "<C-j>", neocodeium.accept, { remap = true })
+      #     vim.keymap.set("i", "<A-f>", neocodeium.accept, { remap = true })
+      #     vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete, { remap = true })
+      #   '';
+      # }
 
       {
         plugin = pkgs.vimUtils.buildVimPlugin {

From f26beb87bd3984aea595fd84eab299f445fb0251 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 517/656] nvim: nvim-tree-pairs appears broken right now

---
 home/common/nvim/treesitter.nix | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/home/common/nvim/treesitter.nix b/home/common/nvim/treesitter.nix
index d18b8ae..9c765c4 100644
--- a/home/common/nvim/treesitter.nix
+++ b/home/common/nvim/treesitter.nix
@@ -44,20 +44,6 @@
         '';
       }
 
-      {
-        plugin = pkgs.vimUtils.buildVimPlugin {
-          name = "nvim-tree-pairs"; # make % match in TS
-          src = pkgs.fetchFromGitHub {
-            owner = "yorickpeterse";
-            repo = "nvim-tree-pairs";
-            rev = "e7f7b6cc28dda6f3fa271ce63b0d371d5b7641da";
-            hash = "sha256-fb4EsrWAbm8+dWAhiirCPuR44MEg+KYb9hZOIuEuT24=";
-          };
-        };
-        type = "lua";
-        config = "require('tree-pairs').setup()";
-      }
-
       {
         plugin = nvim-treesitter-textobjects;
         type = "lua";

From b4550106246663506d8be8e78f668555252dc004 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 11 Dec 2024 20:15:15 +0100
Subject: [PATCH 518/656] nvim: blink-cmp goodness

---
 flake.lock                      | 141 +++++++++++++++++++++-----------
 home/common/nvim/blink-cmp.lua  |  56 +++++++++++++
 home/common/nvim/default.nix    |  44 +---------
 home/common/nvim/treesitter.nix |   2 +-
 4 files changed, 151 insertions(+), 92 deletions(-)
 create mode 100644 home/common/nvim/blink-cmp.lua

diff --git a/flake.lock b/flake.lock
index c6fc0c8..086a183 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,6 +1,22 @@
 {
   "nodes": {
     "flake-compat": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696426674,
+        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
+    "flake-compat_2": {
       "flake": false,
       "locked": {
         "lastModified": 1733328505,
@@ -16,7 +32,7 @@
         "type": "github"
       }
     },
-    "flake-compat_2": {
+    "flake-compat_3": {
       "flake": false,
       "locked": {
         "lastModified": 1696426674,
@@ -94,26 +110,23 @@
     },
     "ghostty": {
       "inputs": {
-        "nixpkgs-stable": [
-          "nixpkgs"
-        ],
-        "nixpkgs-unstable": [
-          "nixpkgs"
-        ],
+        "flake-compat": "flake-compat",
+        "nixpkgs-stable": "nixpkgs-stable",
+        "nixpkgs-unstable": "nixpkgs-unstable",
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1734275633,
-        "narHash": "sha256-/5Rnuouf4DrQWKc5sMjA/8Uiznp8/oCQe3YaYvp+fWU=",
-        "ref": "refs/heads/main",
-        "rev": "ceef2900e24944b18a6aadf5e6dd40aeef64e85d",
-        "revCount": 8271,
-        "type": "git",
-        "url": "ssh://git@github.com/ghostty-org/ghostty"
+        "lastModified": 1735271978,
+        "narHash": "sha256-y6Ony5eq4F4E76Y2ZhALSEzBZ4GbGRVQIEScPieCDGI=",
+        "owner": "ghostty-org",
+        "repo": "ghostty",
+        "rev": "a8e5eef11cc67f87f445626f9ca2993373774bf8",
+        "type": "github"
       },
       "original": {
-        "type": "git",
-        "url": "ssh://git@github.com/ghostty-org/ghostty"
+        "owner": "ghostty-org",
+        "repo": "ghostty",
+        "type": "github"
       }
     },
     "ghostty-hm": {
@@ -133,7 +146,7 @@
     },
     "git-hooks": {
       "inputs": {
-        "flake-compat": "flake-compat_2",
+        "flake-compat": "flake-compat_3",
         "gitignore": "gitignore",
         "nixpkgs": [
           "neovim-nightly-overlay",
@@ -145,11 +158,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733665616,
-        "narHash": "sha256-+XTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd+lh2A=",
+        "lastModified": 1734797603,
+        "narHash": "sha256-ulZN7ps8nBV31SE+dwkDvKIzvN6hroRY8sYOT0w+E28=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "d8c02f0ffef0ef39f6063731fc539d8c71eb463a",
+        "rev": "f0f0dc4920a903c3e08f5bdb9246bb572fcae498",
         "type": "github"
       },
       "original": {
@@ -209,11 +222,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1734093295,
-        "narHash": "sha256-hSwgGpcZtdDsk1dnzA0xj5cNaHgN9A99hRF/mxMtwS4=",
+        "lastModified": 1735053786,
+        "narHash": "sha256-Gm+0DcbUS338vvkwyYWms5jsWlx8z8MeQBzcnIDuIkw=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "66c5d8b62818ec4c1edb3e941f55ef78df8141a8",
+        "rev": "35b98d20ca8f4ca1f6a2c30b8a2c8bb305a36d84",
         "type": "github"
       },
       "original": {
@@ -224,7 +237,7 @@
     },
     "neovim-nightly-overlay": {
       "inputs": {
-        "flake-compat": "flake-compat",
+        "flake-compat": "flake-compat_2",
         "flake-parts": "flake-parts",
         "git-hooks": "git-hooks",
         "hercules-ci-effects": "hercules-ci-effects",
@@ -233,11 +246,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1734048484,
-        "narHash": "sha256-EtSEYNx19xzuEBJsT7yXG+nVx11CM3rvrAQAXcvG/5Q=",
+        "lastModified": 1735172062,
+        "narHash": "sha256-Ru+5fwMqXEoc6G1PbuTppAzxtqvj0322cBAWCb0Yhbo=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "044f9a36ad620a119ebe154c26ec571a09f75039",
+        "rev": "d05e1d754812bcd89925d845992f377faf6c4944",
         "type": "github"
       },
       "original": {
@@ -249,11 +262,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1734000357,
-        "narHash": "sha256-8FO5Ca9bLEiD649b5gkQCdjpTmbPenJHpN0JBhtLpjE=",
+        "lastModified": 1735157560,
+        "narHash": "sha256-ndlWdGm61W3uObi8cowWqnPdJwq2FsH4GHGOQYeNSOM=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "17383870dd3b7f04eddd48ed929cc25c7e102277",
+        "rev": "487c48ec8689b865bad04fdb87b61f5ada25da97",
         "type": "github"
       },
       "original": {
@@ -264,11 +277,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1733749988,
-        "narHash": "sha256-+5qdtgXceqhK5ZR1YbP1fAUsweBIrhL38726oIEAtDs=",
+        "lastModified": 1734988233,
+        "narHash": "sha256-Ucfnxq1rF/GjNP3kTL+uTfgdoE9a3fxDftSfeLIS8mA=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "bc27f0fde01ce4e1bfec1ab122d72b7380278e68",
+        "rev": "de1864217bfa9b5845f465e771e0ecb48b30e02d",
         "type": "github"
       },
       "original": {
@@ -280,27 +293,59 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1734017764,
-        "narHash": "sha256-msOfmyJSjAHgIygI/JD0Ae3JsDv4rT54Nlfr5t6MQMQ=",
+        "lastModified": 1733423277,
+        "narHash": "sha256-TxabjxEgkNbCGFRHgM/b9yZWlBj60gUOUnRT/wbVQR8=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "64e9404f308e0f0a0d8cdd7c358f74e34802494b",
+        "rev": "e36963a147267afc055f7cf65225958633e536bf",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
-        "ref": "nixos-24.05",
+        "ref": "release-24.11",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-stable_2": {
+      "locked": {
+        "lastModified": 1735141468,
+        "narHash": "sha256-VIAjBr1qGcEbmhLwQJD6TABppPMggzOvqFsqkDoMsAY=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "4005c3ff7505313cbc21081776ad0ce5dfd7a3ce",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-24.11",
         "repo": "nixpkgs",
         "type": "github"
       }
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1734126203,
-        "narHash": "sha256-0XovF7BYP50rTD2v4r55tR5MuBLet7q4xIz6Rgh3BBU=",
+        "lastModified": 1733229606,
+        "narHash": "sha256-FLYY5M0rpa5C2QAE3CKLYAM6TwbKicdRK6qNrSHlNrE=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "71a6392e367b08525ee710a93af2e80083b5b3e2",
+        "rev": "566e53c2ad750c84f6d31f9ccb9d00f823165550",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs-unstable_2": {
+      "locked": {
+        "lastModified": 1735268880,
+        "narHash": "sha256-7QEFnKkzD13SPxs+UFR5bUFN2fRw+GlL0am72ZjNre4=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "7cc0bff31a3a705d3ac4fdceb030a17239412210",
         "type": "github"
       },
       "original": {
@@ -312,11 +357,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1734119587,
-        "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
+        "lastModified": 1735291276,
+        "narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
+        "rev": "634fd46801442d760e09493a794c4f15db2d0cbb",
         "type": "github"
       },
       "original": {
@@ -333,8 +378,8 @@
         "home-manager": "home-manager",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
         "nixpkgs": "nixpkgs_2",
-        "nixpkgs-stable": "nixpkgs-stable",
-        "nixpkgs-unstable": "nixpkgs-unstable"
+        "nixpkgs-stable": "nixpkgs-stable_2",
+        "nixpkgs-unstable": "nixpkgs-unstable_2"
       }
     },
     "systems": {
@@ -360,11 +405,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733761991,
-        "narHash": "sha256-s4DalCDepD22jtKL5Nw6f4LP5UwoMcPzPZgHWjAfqbQ=",
+        "lastModified": 1735135567,
+        "narHash": "sha256-8T3K5amndEavxnludPyfj3Z1IkcFdRpR23q+T0BVeZE=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "0ce9d149d99bc383d1f2d85f31f6ebd146e46085",
+        "rev": "9e09d30a644c57257715902efbb3adc56c79cf28",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua
new file mode 100644
index 0000000..b34b6fc
--- /dev/null
+++ b/home/common/nvim/blink-cmp.lua
@@ -0,0 +1,56 @@
+require 'blink-cmp'.setup({
+  keymap = {
+    preset = 'enter',
+    ["<PageDown>"] = { "scroll_documentation_down" },
+    ["<PageUp>"] = { "scroll_documentation_up" },
+  },
+  completion = {
+    accept = {
+      auto_brackets = { enabled = true, },
+    },
+
+    documentation = {
+      auto_show = true,
+      auto_show_delay_ms = 800,
+      window = { border = 'rounded', },
+    },
+
+    ghost_text = { enabled = true },
+
+    list = {
+      selection = "manual",
+    },
+
+    menu = {
+      auto_show = true,
+    },
+  },
+
+  fuzzy = {
+    prebuilt_binaries = {
+      download = false
+    },
+  },
+
+  keymap = {
+    preset = 'super-tab',
+  },
+
+  signature = {
+    enabled = true,
+    window = { border = 'rounded', },
+  },
+
+  sources = {
+    default = { 'lsp', 'codeium', 'buffer' },
+    cmdline = {},
+    providers = {
+      codeium = {
+        name = "codeium",
+        module = 'blink.compat.source',
+        score_offset = -100,
+      },
+    },
+  },
+
+})
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 1c9b4a7..d6dd694 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -63,49 +63,7 @@
       {
         plugin = blink-cmp;
         type = "lua";
-        config = ''
-          require'blink-cmp'.setup({
-            keymap = {
-              preset = 'enter',
-              ["<PageDown>"] = { "scroll_documentation_down" },
-              ["<PageUp>"] = { "scroll_documentation_up" },
-            },
-            completion = {
-              accept = {
-                auto_brackets = { enabled = true, },
-              },
-
-              documentation = {
-                auto_show = true,
-                auto_show_delay_ms = 800,
-                window = { border = 'rounded', },
-              },
-
-              ghost_text = { enabled = true },
-
-              menu = {
-                auto_show = false,
-              },
-            },
-
-            fuzzy = {
-              prebuilt_binaries = {
-                download = false
-              },
-            },
-
-            signature = {
-              enabled = true,
-              window = { border = 'rounded', },
-            },
-
-             sources = {
-              default = { 'lsp', 'buffer', 'path', 'snippets' },
-              cmdline = {},
-            },
-
-          })
-        '';
+        config = lib.fileContents ./blink-cmp.lua;
       }
 
       {
diff --git a/home/common/nvim/treesitter.nix b/home/common/nvim/treesitter.nix
index 9c765c4..25e15f8 100644
--- a/home/common/nvim/treesitter.nix
+++ b/home/common/nvim/treesitter.nix
@@ -11,9 +11,9 @@
     ];
 
     plugins = with pkgs.vimPlugins; [
-      ts-comments-nvim
       nvim-ts-context-commentstring
       playground
+      ts-comments-nvim
 
       {
         plugin = nvim-treesitter-context;

From 461f3a9a46d7d28b96d7074383a0c6b7a2f31a65 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 28 Dec 2024 10:22:29 +0100
Subject: [PATCH 519/656] nix update

---
 flake.lock | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/flake.lock b/flake.lock
index 086a183..de58e6d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -116,11 +116,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735271978,
-        "narHash": "sha256-y6Ony5eq4F4E76Y2ZhALSEzBZ4GbGRVQIEScPieCDGI=",
+        "lastModified": 1735508351,
+        "narHash": "sha256-hrmauluOxnJlvc49WeclJdoz24Nb7c/WHhyLGkmpde8=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "a8e5eef11cc67f87f445626f9ca2993373774bf8",
+        "rev": "b3925b83ae4b24b02a9b268e88dffcf1af25734b",
         "type": "github"
       },
       "original": {
@@ -222,11 +222,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735053786,
-        "narHash": "sha256-Gm+0DcbUS338vvkwyYWms5jsWlx8z8MeQBzcnIDuIkw=",
+        "lastModified": 1735381016,
+        "narHash": "sha256-CyCZFhMUkuYbSD6bxB/r43EdmDE7hYeZZPTCv0GudO4=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "35b98d20ca8f4ca1f6a2c30b8a2c8bb305a36d84",
+        "rev": "10e99c43cdf4a0713b4e81d90691d22c6a58bdf2",
         "type": "github"
       },
       "original": {
@@ -246,11 +246,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1735172062,
-        "narHash": "sha256-Ru+5fwMqXEoc6G1PbuTppAzxtqvj0322cBAWCb0Yhbo=",
+        "lastModified": 1735463474,
+        "narHash": "sha256-QTw0q1dJnoFygq9aiwjrXsX5cZEwruVzPz3VKg8KemQ=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "d05e1d754812bcd89925d845992f377faf6c4944",
+        "rev": "3d6e49088eae842b6c0556fba66cfb14123f0d59",
         "type": "github"
       },
       "original": {
@@ -262,11 +262,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1735157560,
-        "narHash": "sha256-ndlWdGm61W3uObi8cowWqnPdJwq2FsH4GHGOQYeNSOM=",
+        "lastModified": 1735384850,
+        "narHash": "sha256-e1KLj+283Znt14U9DkKw+zPqShe0AkFPGpT44BhZ9KU=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "487c48ec8689b865bad04fdb87b61f5ada25da97",
+        "rev": "2b07b14eacf3197754c63f42f9c880e85960eef2",
         "type": "github"
       },
       "original": {
@@ -277,11 +277,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1734988233,
-        "narHash": "sha256-Ucfnxq1rF/GjNP3kTL+uTfgdoE9a3fxDftSfeLIS8mA=",
+        "lastModified": 1735268880,
+        "narHash": "sha256-7QEFnKkzD13SPxs+UFR5bUFN2fRw+GlL0am72ZjNre4=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "de1864217bfa9b5845f465e771e0ecb48b30e02d",
+        "rev": "7cc0bff31a3a705d3ac4fdceb030a17239412210",
         "type": "github"
       },
       "original": {
@@ -309,11 +309,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1735141468,
-        "narHash": "sha256-VIAjBr1qGcEbmhLwQJD6TABppPMggzOvqFsqkDoMsAY=",
+        "lastModified": 1735264675,
+        "narHash": "sha256-MgdXpeX2GuJbtlBrH9EdsUeWl/yXEubyvxM1G+yO4Ak=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "4005c3ff7505313cbc21081776ad0ce5dfd7a3ce",
+        "rev": "d49da4c08359e3c39c4e27c74ac7ac9b70085966",
         "type": "github"
       },
       "original": {

From 714cbcb8a9f37c7c062d3d4c17e04e31d32eb9d3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 30 Dec 2024 08:02:33 +0100
Subject: [PATCH 520/656] nvim: reformat

---
 home/common/nvim/mini.lua | 99 ++++++++++++++++++++-------------------
 1 file changed, 50 insertions(+), 49 deletions(-)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index f1de03f..c6788f1 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -71,6 +71,7 @@ MiniPick.registry.files_root = function(local_opts)
   local_opts.tool = "rg"
   return MiniPick.builtin.files(local_opts, { source = { cwd = root_dir, tool = "rg" } })
 end
+
 MiniPick.registry.grep_live_root = function(local_opts)
   local root_patterns = { ".jj", ".git" }
   local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])
@@ -79,56 +80,56 @@ MiniPick.registry.grep_live_root = function(local_opts)
 end
 
 require("mini.pick").registry.buffers = function(local_opts, opts)
-		local_opts = vim.tbl_deep_extend(
-			"force",
-			{ sort_lastused = false, sort_mru = true, include_current = true, include_unlisted = false },
-			local_opts or {}
-		)
-		local buffers_output = vim.api.nvim_exec("buffers" .. (local_opts.include_unlisted and "!" or ""), true)
-		local cur_buf_id, include_current = vim.api.nvim_get_current_buf(), local_opts.include_current
-		local items = {}
-		local default_selection_idx = 1
-		for _, l in ipairs(vim.split(buffers_output, "\n")) do
-			local buf_str, name = l:match("^%s*%d+"), l:match('"(.*)"')
-			local buf_id = tonumber(buf_str)
-			local flag = buf_id == vim.fn.bufnr("") and "%" or (buf_id == vim.fn.bufnr("#") and "#" or " ")
-			local item = { text = name, bufnr = buf_id, flag = flag }
-			if buf_id ~= cur_buf_id or include_current then
-				if local_opts.sort_lastused and not local_opts.ignore_current_buffer and flag == "#" then
-					default_selection_idx = 2
-				end
-				if local_opts.sort_lastused and (flag == "#" or flag == "%") then
-					local idx = ((items[1] ~= nil and items[1].flag == "%") and 2 or 1)
-					table.insert(items, idx, item)
-				else
-					table.insert(items, item)
-				end
-			end
-		end
-		if local_opts.sort_mru then
-			table.sort(items, function(a, b)
-				return vim.fn.getbufinfo(a.bufnr)[1].lastused > vim.fn.getbufinfo(b.bufnr)[1].lastused
-			end)
-		end
+  local_opts = vim.tbl_deep_extend(
+    "force",
+    { sort_lastused = false, sort_mru = true, include_current = true, include_unlisted = false },
+    local_opts or {}
+  )
+  local buffers_output = vim.api.nvim_exec("buffers" .. (local_opts.include_unlisted and "!" or ""), true)
+  local cur_buf_id, include_current = vim.api.nvim_get_current_buf(), local_opts.include_current
+  local items = {}
+  local default_selection_idx = 1
+  for _, l in ipairs(vim.split(buffers_output, "\n")) do
+    local buf_str, name = l:match("^%s*%d+"), l:match('"(.*)"')
+    local buf_id = tonumber(buf_str)
+    local flag = buf_id == vim.fn.bufnr("") and "%" or (buf_id == vim.fn.bufnr("#") and "#" or " ")
+    local item = { text = name, bufnr = buf_id, flag = flag }
+    if buf_id ~= cur_buf_id or include_current then
+      if local_opts.sort_lastused and not local_opts.ignore_current_buffer and flag == "#" then
+        default_selection_idx = 2
+      end
+      if local_opts.sort_lastused and (flag == "#" or flag == "%") then
+        local idx = ((items[1] ~= nil and items[1].flag == "%") and 2 or 1)
+        table.insert(items, idx, item)
+      else
+        table.insert(items, item)
+      end
+    end
+  end
+  if local_opts.sort_mru then
+    table.sort(items, function(a, b)
+      return vim.fn.getbufinfo(a.bufnr)[1].lastused > vim.fn.getbufinfo(b.bufnr)[1].lastused
+    end)
+  end
 
-		local show = function(buf_id, items, query)
-			require("mini.pick").default_show(buf_id, items, query, { show_icons = true })
-		end
-		local default_opts = { source = { name = "Buffers", show = show } }
-		opts = vim.tbl_deep_extend("force", default_opts, opts or {}, { source = { items = items } })
-		if default_selection_idx > 1 then
-			vim.api.nvim_create_autocmd("User", {
-				pattern = "MiniPickStart",
-				once = true,
-				callback = function()
-					local mappings = require("mini.pick").get_picker_opts().mappings
-					local keys = vim.fn["repeat"](mappings.move_down, default_selection_idx - 1)
-					vim.api.nvim_input(vim.api.nvim_replace_termcodes(keys, true, true, true))
-				end,
-			})
-		end
-		return require("mini.pick").start(opts)
-	end
+  local show = function(buf_id, items, query)
+    require("mini.pick").default_show(buf_id, items, query, { show_icons = true })
+  end
+  local default_opts = { source = { name = "Buffers", show = show } }
+  opts = vim.tbl_deep_extend("force", default_opts, opts or {}, { source = { items = items } })
+  if default_selection_idx > 1 then
+    vim.api.nvim_create_autocmd("User", {
+      pattern = "MiniPickStart",
+      once = true,
+      callback = function()
+        local mappings = require("mini.pick").get_picker_opts().mappings
+        local keys = vim.fn["repeat"](mappings.move_down, default_selection_idx - 1)
+        vim.api.nvim_input(vim.api.nvim_replace_termcodes(keys, true, true, true))
+      end,
+    })
+  end
+  return require("mini.pick").start(opts)
+end
 
 local miniclue = require('mini.clue')
 miniclue.setup({ -- cute prompts about bindings

From c4a2a60fa6b4d520bbf8a9c20aaa86f4d3628960 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 30 Dec 2024 08:02:33 +0100
Subject: [PATCH 521/656] nvim: implement projects picker

---
 home/common/nvim/init.lua |  1 +
 home/common/nvim/mini.lua | 39 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index b94dc09..1330396 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -127,6 +127,7 @@ vim.keymap.set('n', '<Leader>f', "<cmd>Pick files_root<cr>", opts("Open file pic
 vim.keymap.set('n', '<c-p>', "<Leader>f", { remap = true })
 vim.keymap.set('n', '<Leader>g', "<cmd>Pick oldfiles<cr>", opts("Open file picker history"))
 vim.keymap.set("n", '<Leader>k', vim.lsp.buf.hover, opts("Show docs for item under cursor"))
+vim.keymap.set('n', '<Leader>p', "<cmd>Pick projects<cr>", opts("Open projects picker"))
 vim.keymap.set('n', '<Leader>q', require('mini.bufremove').delete, opts("Delete buffer"))
 vim.keymap.set('n', '<Leader>s', "<cmd>Pick lsp scope='document_symbol'<cr>", opts("Open symbol picker"))
 vim.keymap.set('n', '<Leader>S', "<cmd>Pick lsp scope='workspace_symbol'<cr>", opts("Open workspace symbol picker"))
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index c6788f1..a572728 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -64,6 +64,45 @@ require('mini.pick').setup({
     config = picker_win_config,
   },
 })
+
+MiniPick.registry.projects = function(local_opts)
+  local root = vim.fn.expand("~/src")
+
+  local command = {
+    "fd",
+    "--max-depth=8",
+    "--one-file-system",
+    "--unrestricted",
+    "--full-path",
+    "/.jj/repo/store/type$|/.git/HEAD$",
+    root,
+  }
+
+  local postprocess = function(paths)
+    local result = {}
+    for _, path in ipairs(paths) do
+      path = path:gsub("%/.jj/repo/store/type$", "")
+      path = path:gsub("%/.git/HEAD$", "")
+      local item = {
+        path = path,
+        text = path:gsub("%" .. root .. "/", " "),
+      }
+      table.insert(result, item)
+    end
+    return result
+  end
+
+  local choose = function(item)
+    local_opts.cwd = item.path
+    vim.fn.chdir(item.path)
+    vim.schedule(function()
+      MiniPick.builtin.files(local_opts, { source = { cwd = item.path, tool = "rg" } })
+    end)
+  end
+
+  return MiniPick.builtin.cli({ command = command, postprocess = postprocess }, { source = { choose = choose } })
+end
+
 MiniPick.registry.files_root = function(local_opts)
   local root_patterns = { ".jj", ".git" }
   local root_dir = vim.fs.dirname(vim.fs.find(root_patterns, { upward = true })[1])

From 46c13deee715786d4ebc1d72b1bb56aa9419b231 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 30 Dec 2024 08:02:33 +0100
Subject: [PATCH 522/656] nix update

---
 flake.lock | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/flake.lock b/flake.lock
index de58e6d..a2d4639 100644
--- a/flake.lock
+++ b/flake.lock
@@ -116,11 +116,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735508351,
-        "narHash": "sha256-hrmauluOxnJlvc49WeclJdoz24Nb7c/WHhyLGkmpde8=",
+        "lastModified": 1735535921,
+        "narHash": "sha256-cfsHww91bRA2Frni54+blIGZGU9/269vaWzeGcNRNN0=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "b3925b83ae4b24b02a9b268e88dffcf1af25734b",
+        "rev": "87bd0bb744d6a1c45022aa39f21219d0b6ff3261",
         "type": "github"
       },
       "original": {
@@ -246,11 +246,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1735463474,
-        "narHash": "sha256-QTw0q1dJnoFygq9aiwjrXsX5cZEwruVzPz3VKg8KemQ=",
+        "lastModified": 1735517129,
+        "narHash": "sha256-ibHgAkr8OXAP8MRBo4Z7AIaVdOHywGR2J8R50vZCQjI=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "3d6e49088eae842b6c0556fba66cfb14123f0d59",
+        "rev": "fd381a5a19f553c2466dc437fb94fcf799d77e82",
         "type": "github"
       },
       "original": {
@@ -262,11 +262,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1735384850,
-        "narHash": "sha256-e1KLj+283Znt14U9DkKw+zPqShe0AkFPGpT44BhZ9KU=",
+        "lastModified": 1735489459,
+        "narHash": "sha256-PMeWazyxGxpA6UeVrWH/ur8WuqliGxXlRjTTQdMiYVc=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "2b07b14eacf3197754c63f42f9c880e85960eef2",
+        "rev": "e4bc8b5967d22840c1e52c97acab0f77107cd48c",
         "type": "github"
       },
       "original": {
@@ -309,11 +309,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1735264675,
-        "narHash": "sha256-MgdXpeX2GuJbtlBrH9EdsUeWl/yXEubyvxM1G+yO4Ak=",
+        "lastModified": 1735412871,
+        "narHash": "sha256-Qoz0ow6jDGUIBHxduc7Y1cjYFS71tvEGJV5Src/mj98=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "d49da4c08359e3c39c4e27c74ac7ac9b70085966",
+        "rev": "9f94733f93e4fe6e82f516efae007096e4ab5a21",
         "type": "github"
       },
       "original": {
@@ -341,11 +341,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1735268880,
-        "narHash": "sha256-7QEFnKkzD13SPxs+UFR5bUFN2fRw+GlL0am72ZjNre4=",
+        "lastModified": 1735523292,
+        "narHash": "sha256-opBsbR/nrGxiiF6XzlVluiHYb6yN/hEwv+lBWTy9xoM=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "7cc0bff31a3a705d3ac4fdceb030a17239412210",
+        "rev": "6d97d419e5a9b36e6293887a89a078cf85f5a61b",
         "type": "github"
       },
       "original": {
@@ -357,11 +357,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1735291276,
-        "narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=",
+        "lastModified": 1735471104,
+        "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "634fd46801442d760e09493a794c4f15db2d0cbb",
+        "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4",
         "type": "github"
       },
       "original": {

From be47c9500b802cb21bf383ebc73cbccd5aed05a0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Dec 2024 23:19:47 +0100
Subject: [PATCH 523/656] dinky is laptop

---
 home/common/default.nix | 1 +
 home/dln/dinky.nix      | 1 +
 2 files changed, 2 insertions(+)

diff --git a/home/common/default.nix b/home/common/default.nix
index e66ef79..26df1d8 100644
--- a/home/common/default.nix
+++ b/home/common/default.nix
@@ -19,5 +19,6 @@
   ];
 
   options.patagia.desktop.enable = lib.mkEnableOption "Desktop environment";
+  options.patagia.laptop.enable = lib.mkEnableOption "Laptop";
   options.patagia.oled.enable = lib.mkEnableOption "Darker darks on oled screens";
 }
diff --git a/home/dln/dinky.nix b/home/dln/dinky.nix
index fd47c55..9b9e955 100644
--- a/home/dln/dinky.nix
+++ b/home/dln/dinky.nix
@@ -6,6 +6,7 @@
   ];
 
   patagia = {
+    laptop.enable = true;
     oled.enable = true;
   };
 

From 2497584fd0a2beff5fc1728501a3b1ab0cef2f66 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Dec 2024 23:19:47 +0100
Subject: [PATCH 524/656] Remove unused zed

---
 home/dln/desktop.nix | 1 -
 1 file changed, 1 deletion(-)

diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index b783e5d..95d3157 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -15,7 +15,6 @@
     pavucontrol
     plexamp
     signal-desktop
-    zed-editor
   ];
 
   xdg.desktopEntries = {

From be8780d846b7d5ae5a62c23994404151169d5b14 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 1 Dec 2024 23:19:47 +0100
Subject: [PATCH 525/656] Experiment with having no system wide language
 tooling

---
 flake.lock                   | 12 ++++++------
 flake.nix                    |  1 +
 home/common/devel.nix        | 17 -----------------
 home/common/nvim/default.nix | 33 ++++++++++++++++++---------------
 4 files changed, 25 insertions(+), 38 deletions(-)

diff --git a/flake.lock b/flake.lock
index a2d4639..0d72b93 100644
--- a/flake.lock
+++ b/flake.lock
@@ -116,11 +116,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735535921,
-        "narHash": "sha256-cfsHww91bRA2Frni54+blIGZGU9/269vaWzeGcNRNN0=",
+        "lastModified": 1735589157,
+        "narHash": "sha256-s5fJn9LSwz3cfkKSvicQppCnXVs8F05OH96yaa5K2Dc=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "87bd0bb744d6a1c45022aa39f21219d0b6ff3261",
+        "rev": "ef542c6e63b40b3541dc5efd625c0b95f750bbc6",
         "type": "github"
       },
       "original": {
@@ -309,11 +309,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1735412871,
-        "narHash": "sha256-Qoz0ow6jDGUIBHxduc7Y1cjYFS71tvEGJV5Src/mj98=",
+        "lastModified": 1735531152,
+        "narHash": "sha256-As8I+ebItDKtboWgDXYZSIjGlKeqiLBvjxsQHUmAf1Q=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9f94733f93e4fe6e82f516efae007096e4ab5a21",
+        "rev": "3ffbbdbac0566a0977da3d2657b89cbcfe9a173b",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index ce544bd..170ca39 100644
--- a/flake.nix
+++ b/flake.nix
@@ -67,6 +67,7 @@
         packages = with pkgs; [
           just
           nh
+          nixd
         ];
       };
 
diff --git a/home/common/devel.nix b/home/common/devel.nix
index 21cffd0..910900e 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -2,30 +2,13 @@
 {
   home.packages = with pkgs; [
     age-plugin-fido2-hmac
-    bacon
-    cargo
-    clang
-    codeium
     comma
     dogdns
     file
-    gnumake
-    go
     just
-    ldns
-    minio-client
-    nil
     nix-output-monitor
-    nixd
-    nixfmt-rfc-style
-    nodejs_22
     passage
     rage
-    prettierd
-    rust-analyzer
-    rustc
-    stylua
-    tree-sitter
   ];
 
   home.sessionVariables = {
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index d6dd694..ab9a1b0 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -24,36 +24,38 @@
     extraLuaConfig = lib.fileContents ./init.lua;
 
     extraPackages = with pkgs; [
-      black
       codeium
-      cue
-      go
-      gopls
-      gotools
       harper
       lua-language-server
-      nil
       nixd
-      nodePackages.prettier
-      nodePackages.typescript
-      nodePackages.typescript-language-server
-      nodePackages.bash-language-server
-      rust-analyzer
-      rustfmt
       shellcheck
       shfmt
       stylua
-      superhtml
-      vscode-langservers-extracted
     ];
 
     plugins = with pkgs.vimPlugins; [
-      direnv-vim
       friendly-snippets
       go-nvim
       targets-vim
       ts-comments-nvim
 
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "direnv-nvim";
+          src = pkgs.fetchFromGitHub {
+            owner = "actionshrimp";
+            repo = "direnv.nvim";
+            rev = "main";
+            hash = "sha256-7NcVskgAurbIuEVIXxHvXZfYQBOEXLURGzllfVEQKNE=";
+          };
+        };
+        type = "lua";
+        config = ''
+          require('direnv-nvim').setup {
+            type = "dir"
+          }
+        '';
+      }
       {
         plugin = nvim-lspconfig;
         type = "lua";
@@ -174,6 +176,7 @@
         type = "lua";
         config = lib.fileContents ./rust.lua;
       }
+
     ];
   };
 }

From c749caf2e9ddd6b810f7d7cdc48ab0c1e5b346fc Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 31 Dec 2024 14:32:15 +0100
Subject: [PATCH 526/656] nvim: do not enable inlay hints by default

---
 home/common/nvim/default.nix | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index ab9a1b0..5a76e67 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -90,14 +90,15 @@
           src = pkgs.fetchFromGitHub {
             owner = "MysticalDevil";
             repo = "inlay-hints.nvim";
-            rev = "af84dee42cd118af6d592b06c1c0e45d6432a6c0"; # 2024-08-23
-            hash = "sha256-DZVtFAUK9c8GInp+JdCQ1BKe0dkAheHKI67oxdMmA24=";
+            rev = "3259b54f3b954b4d8260f3ee49ceabe978ea5636";
+            hash = "sha256-99KCGoPowa4PA1jkCm4ZbbgrFl84NWnKQMgkfy8KS5E=";
           };
         };
         type = "lua";
         config = ''
-          require('inlay-hints').setup()
-          require("inlay-hints.utils").enable_inlay_hints()
+          require('inlay-hints').setup {
+            autocmd = { enable = false },
+          }
         '';
       }
 

From cdc020ff0d54117a83c50dccf05ff72bb464d35b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 31 Dec 2024 14:33:50 +0100
Subject: [PATCH 527/656] nvim: trying out just using blink cmp for neocodium
 as well

---
 home/common/nvim/default.nix | 20 --------------------
 1 file changed, 20 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 5a76e67..2731261 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -112,26 +112,6 @@
         '';
       }
 
-      # {
-      #   plugin = pkgs.vimUtils.buildVimPlugin {
-      #     name = "neocodeium";
-      #     src = pkgs.fetchFromGitHub {
-      #       owner = "monkoose";
-      #       repo = "neocodeium";
-      #       rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0
-      #       hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU=";
-      #     };
-      #   };
-      #   type = "lua";
-      #   config = ''
-      #     local neocodeium =require('neocodeium')
-      #     neocodeium.setup()
-      #     vim.keymap.set("i", "<C-j>", neocodeium.accept, { remap = true })
-      #     vim.keymap.set("i", "<A-f>", neocodeium.accept, { remap = true })
-      #     vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete, { remap = true })
-      #   '';
-      # }
-
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
           name = "diagflow";

From 494bd5cad1b3a3eb96c8c19c86c259ceb03d9caf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 31 Dec 2024 14:42:32 +0100
Subject: [PATCH 528/656] nvim: <Leader>uw toggles line wrap

---
 home/common/nvim/init.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 1330396..c32cefe 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -155,4 +155,5 @@ vim.keymap.set("n", "<Leader>ub", function()
   vim.o.background = (vim.o.background == "light" and "dark" or "light")
   end, opts("Toggle dark/light background"))
 vim.keymap.set("n", "<Leader>uh", "<cmd>InlayHintsToggle<cr>", opts("Toggle inlay hints"))
+vim.keymap.set("n", "<Leader>uw","<cmd>set invwrap<cr>", opts("Toggle line wrapping"))
 

From be77222a9987bda6839a26ae303a2e488db8343f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 1 Jan 2025 13:12:48 +0100
Subject: [PATCH 529/656] Ditch tmux for ghostty tabs + a more stateless living

---
 home/common/fish.nix    | 30 +++---------------------
 home/common/ghostty.nix | 51 ++++-------------------------------------
 home/common/tmux.nix    | 20 ++++++++--------
 3 files changed, 16 insertions(+), 85 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 4452d23..5fd6a55 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -43,40 +43,17 @@
         body = ''confirm "⚠ Really shutdown $(hostname)?" && command shutdown $argv'';
       };
 
-      tmux-refresh-env = {
-        description = "Refresh environment variables from tmux session";
-        body = ''
-          for var in (tmux show-environment | string match -rv '^-')
-            set -l parts (string split -m 1 '=' $var)
-            if test (count $parts) -eq 2
-              set -Ux $parts[1] $parts[2]
-            end
-          end
-        '';
-      };
-
       kubectl = {
         description = "Wraps kubectl in grc";
         wraps = "kubectl";
         body = "grc.wrap kubectl $argv";
       };
 
-      edit = {
-        description = "Open a file in already running nvim and switch tab";
+      e = {
+        description = "Open a file in already running nvim";
         argumentNames = [ "file" ];
         body = ''
-          set _file (readlink -f "$file")
-          if test -z "$file"
-              set _root (vcs_root)
-              set _file (fd --type f . "$_root" | sed -e "s#^$_root/##" | fzf --no-sort --layout=reverse)
-              set _file "$_root/$_file"
-          end
-          set _nvim_socket "$XDG_RUNTIME_DIR/nvim-persistent.sock"
-          if test -S "$_nvim_socket" && tmux select-window -t nvim 2>/dev/null
-            nvim --server "$_nvim_socket" --remote "$_file"
-            return 0
-          end
-          tmux new-window -S -n nvim nvim --listen "$_nvim_socket" "$_file"
+          nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote (readlink -f "$file")
         '';
       };
 
@@ -156,7 +133,6 @@
     ];
 
     shellAbbrs = {
-      e = "edit";
       l = "bat";
       ls = "eza";
       tree = "eza --tree";
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 977eedc..7db5cca 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -34,8 +34,9 @@
 
         shell-integration = "fish";
 
-        window-decoration = false;
-        gtk-tabs-location = "bottom";
+        window-decoration = true;
+        gtk-single-instance = true;
+        gtk-tabs-location = "hidden";
         gtk-titlebar = false;
         window-padding-x = 12;
         window-padding-y = 0;
@@ -49,16 +50,6 @@
           "alt+shift+v=paste_from_clipboard"
           "ctrl+tab=goto_split:previous"
           "super+enter=toggle_fullscreen"
-          "ctrl+enter=unbind"
-          "alt+one=unbind"
-          "alt+two=unbind"
-          "alt+three=unbind"
-          "alt+four=unbind"
-          "alt+five=unbind"
-          "alt+six=unbind"
-          "alt+seven=unbind"
-          "alt+eight=unbind"
-          "alt+nine=unbind"
         ];
       };
     };
@@ -116,46 +107,12 @@
     '';
 
     xdg.desktopEntries = {
-      ghostty-local = {
-        categories = [
-          "System"
-          "TerminalEmulator"
-        ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-local -e "tmux new-session -A -D -s main -t main"'';
-        genericName = "Ghostty (local)";
-        icon = "com.mitchellh.ghostty";
-        name = "Ghostty (local)";
-        settings = {
-          StartupWMClass = "com.mitchellh.ghostty-local";
-          TryExec = "ghostty";
-        };
-        terminal = false;
-        type = "Application";
-      };
-
-      ghostty-local-secondary = {
-        categories = [
-          "System"
-          "TerminalEmulator"
-        ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-local-secondary -e "tmux new-session -A -D -s secondary -t main"'';
-        genericName = "Ghostty (local) Secondary";
-        icon = "com.mitchellh.ghostty";
-        name = "Ghostty (local) Secondary";
-        settings = {
-          StartupWMClass = "com.mitchellh.ghostty-local-secondary";
-          TryExec = "ghostty";
-        };
-        terminal = false;
-        type = "Application";
-      };
-
       ghostty-nemo = {
         categories = [
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-nemo -e "ssh -t nemo tmux new-session -A -D -s main -t main"'';
+        exec = ''ghostty --class=com.mitchellh.ghostty-nemo --command="ssh -t nemo"'';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (nemo)";
diff --git a/home/common/tmux.nix b/home/common/tmux.nix
index d5b0687..a587338 100644
--- a/home/common/tmux.nix
+++ b/home/common/tmux.nix
@@ -25,7 +25,6 @@
       set -g status-right '%F |  %R'
       set -g status off
       set -g update-environment "SSH_AUTH_SOCK"
-      setenv -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/ssh-agent"
       setw -g alternate-screen on
       setw -g automatic-rename off
       setw -g window-status-format ""
@@ -34,16 +33,15 @@
 
       set -s command-alias[1000] stty='run-shell "tmux send-keys \"stty cols #{pane_width} rows #{pane_height}\" Enter"'
 
-      bind -n M-1 if-shell 'tmux select-window -t nvim' refresh-client 'new-window -S -n nvim nvim --listen $XDG_RUNTIME_DIR/nvim-persistent.sock'
-      bind -n M-2 if-shell 'tmux select-window -t t1' refresh-client 'new-window -S -n t1'
-      bind -n M-3 if-shell 'tmux select-window -t t2' refresh-client 'new-window -S -n t2'
-      bind -n M-4 if-shell 'tmux select-window -t t3' refresh-client 'new-window -S -n t3'
-      bind -n M-5 if-shell 'tmux select-window -t t4' refresh-client 'new-window -S -n t4'
-      bind -n M-6 if-shell 'tmux select-window -t t5' refresh-client 'new-window -S -n t5'
-      bind -n M-7 if-shell 'tmux select-window -t t6' refresh-client 'new-window -S -n t6'
-      bind -n M-8 if-shell 'tmux select-window -t t7' refresh-client 'new-window -S -n t7'
-      bind -n M-9 if-shell 'tmux select-window -t t8' refresh-client 'new-window -S -n t8'
-      bind -n M-0 if-shell 'tmux select-window -t t9' refresh-client 'new-window -S -n t9'
+      bind -n C-2 if-shell 'tmux select-window -t t1' refresh-client 'new-window -S -n t1'
+      bind -n C-3 if-shell 'tmux select-window -t t2' refresh-client 'new-window -S -n t2'
+      bind -n C-4 if-shell 'tmux select-window -t t3' refresh-client 'new-window -S -n t3'
+      bind -n C-5 if-shell 'tmux select-window -t t4' refresh-client 'new-window -S -n t4'
+      bind -n C-6 if-shell 'tmux select-window -t t5' refresh-client 'new-window -S -n t5'
+      bind -n C-7 if-shell 'tmux select-window -t t6' refresh-client 'new-window -S -n t6'
+      bind -n C-8 if-shell 'tmux select-window -t t7' refresh-client 'new-window -S -n t7'
+      bind -n C-9 if-shell 'tmux select-window -t t8' refresh-client 'new-window -S -n t8'
+      bind -n C-0 if-shell 'tmux select-window -t t9' refresh-client 'new-window -S -n t9'
       bind -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 1 scroll-up
       bind -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-down
       bind C-s set-option -g status

From 376fb67f48fff74d39b29dbbc9bae64d40e98ba9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 1 Jan 2025 16:55:29 +0100
Subject: [PATCH 530/656] nix update

---
 flake.lock | 42 +++++++++++++++++++++---------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/flake.lock b/flake.lock
index 0d72b93..2b181d7 100644
--- a/flake.lock
+++ b/flake.lock
@@ -116,11 +116,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735589157,
-        "narHash": "sha256-s5fJn9LSwz3cfkKSvicQppCnXVs8F05OH96yaa5K2Dc=",
+        "lastModified": 1735689283,
+        "narHash": "sha256-LOZRScnB8Q9ylmlXnt2j2v4Aj1b5JZTdSeKYaFL1RDw=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "ef542c6e63b40b3541dc5efd625c0b95f750bbc6",
+        "rev": "60611b8a4a1d5b3c1097cce85eb0311de0696cfa",
         "type": "github"
       },
       "original": {
@@ -222,11 +222,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735381016,
-        "narHash": "sha256-CyCZFhMUkuYbSD6bxB/r43EdmDE7hYeZZPTCv0GudO4=",
+        "lastModified": 1735735907,
+        "narHash": "sha256-/AOGn9qJMjrZQyWYbObHTKmWDUP0q9+0TAXOJnq6ik0=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "10e99c43cdf4a0713b4e81d90691d22c6a58bdf2",
+        "rev": "59a4c43e9ba6db24698c112720a58a334117de83",
         "type": "github"
       },
       "original": {
@@ -246,11 +246,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1735517129,
-        "narHash": "sha256-ibHgAkr8OXAP8MRBo4Z7AIaVdOHywGR2J8R50vZCQjI=",
+        "lastModified": 1735693090,
+        "narHash": "sha256-Axke90GBbocA48Lrb7ub/RycvHt1NcujkZW1RMF+Q7Q=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "fd381a5a19f553c2466dc437fb94fcf799d77e82",
+        "rev": "47e417b35d1ec8bf79deec3e96c90f1e41a9e1e4",
         "type": "github"
       },
       "original": {
@@ -262,11 +262,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1735489459,
-        "narHash": "sha256-PMeWazyxGxpA6UeVrWH/ur8WuqliGxXlRjTTQdMiYVc=",
+        "lastModified": 1735686267,
+        "narHash": "sha256-gLa+1QOW7P5J4cAG34BW68tnf/yOx50rH6iZuSyoX1A=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "e4bc8b5967d22840c1e52c97acab0f77107cd48c",
+        "rev": "59cbe640233eeb6ae96231e059449e73e15f9ea5",
         "type": "github"
       },
       "original": {
@@ -277,11 +277,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1735268880,
-        "narHash": "sha256-7QEFnKkzD13SPxs+UFR5bUFN2fRw+GlL0am72ZjNre4=",
+        "lastModified": 1735554305,
+        "narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "7cc0bff31a3a705d3ac4fdceb030a17239412210",
+        "rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
         "type": "github"
       },
       "original": {
@@ -341,11 +341,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1735523292,
-        "narHash": "sha256-opBsbR/nrGxiiF6XzlVluiHYb6yN/hEwv+lBWTy9xoM=",
+        "lastModified": 1735617354,
+        "narHash": "sha256-5zJyv66q68QZJZsXtmjDBazGnF0id593VSy+8eSckoo=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "6d97d419e5a9b36e6293887a89a078cf85f5a61b",
+        "rev": "69b9a8c860bdbb977adfa9c5e817ccb717884182",
         "type": "github"
       },
       "original": {
@@ -405,11 +405,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735135567,
-        "narHash": "sha256-8T3K5amndEavxnludPyfj3Z1IkcFdRpR23q+T0BVeZE=",
+        "lastModified": 1735653038,
+        "narHash": "sha256-Q6xAmciTXDtZfUxf6c15QqtRR8BvX4edYPstF/uoqMk=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "9e09d30a644c57257715902efbb3adc56c79cf28",
+        "rev": "56c0ecd79f7ba01a0ec027da015df751d6ca3ae7",
         "type": "github"
       },
       "original": {

From 9ee84b89e6eaceffcc259e0812fffebc977dae9b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 00:30:54 +0100
Subject: [PATCH 531/656] nvim: color scheme tweaks

---
 home/common/nvim/dieter/lua/dieter/init.lua | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index e803a36..1a638dd 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -52,9 +52,14 @@ local colors = {
     highlight_subtle = hsl(212, 27, 11),
     highlight_intense = hsl(58, 100, 60),
 
-    string = hsl(96, 35, 60),
+    -- string = hsl(96, 35, 60),
+    -- string = hsl(80, 79, 83),
+    string = hsl(90, 45, 70),
     comment = hsl(2, 69, 68),
     comment_error = hsl(2, 85, 50),
+    func = hsl(40, 57, 87),
+    member = hsl(213, 45, 75),
+    punc = hsl(213, 45, 50),
 
     diagnostic_error = hsl(353, 100, 45),
     diagnostic_warning = hsl(30, 100, 50),
@@ -97,13 +102,14 @@ local theme = {
 
   Constant = { link = "NormalNC" },
   Delimiter = { link = "NormalNC" },
+  Function = { fg = c.func },
   Identifier = { link = "NormalNC" },
   Keyword = { fg = c.foreground, bold = true },
   Operator = { link = "NormalNC" },
   Special = { link = "NormalNC" },
   Type = { link = "NormalNC" },
 
-  String = { fg = c.string, italic = true },
+  String = { fg = c.string },
 
   Comment = { fg = c.comment, italic = true, bold = true },
   CommentError = { fg = c.comment_error, italic = true, bold = true },
@@ -123,11 +129,13 @@ local theme = {
   GitSignsDeleteNr = { link = "DiffDelete" },
 
   -- Treesitter
-  ["@function"] = { link = "NormalNC" },
+  -- ["@function"] = { link = "NormalNC" },
+  ["@punctuation.special"] = { fg = c.punc },
   ["@special"] = { link = "NormalNC" },
   ["@variable"] = { link = "NormalNC" },
+  ["@variable.member"] = { fg = c.member },
   ["@variable.parameter"] = { fg = c.accent2 },
-  ["@lsp.type.variable"] = { fg = c.dimmed_subtle, italic = true },
+  -- ["@lsp.type.variable"] = { fg = c.dimmed_subtle, italic = true },
 
   -- UI Elements
   CursorLine = { bg = c.highlight_subtle },

From 311cd9042e5d22ce52980d02ade6b8c7e6152cd8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 10:55:43 +0100
Subject: [PATCH 532/656] nvim: wrapper script for persistent+remote control

---
 home/common/fish.nix         |  2 +-
 home/common/ghostty.nix      |  5 ++++-
 home/common/nvim/default.nix | 12 ++++++++++++
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 5fd6a55..253c701 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -53,7 +53,7 @@
         description = "Open a file in already running nvim";
         argumentNames = [ "file" ];
         body = ''
-          nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote (readlink -f "$file")
+          nvim-remote --remote (readlink -f "$file")
         '';
       };
 
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 7db5cca..60174c8 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -33,6 +33,7 @@
         unfocused-split-opacity = 1.0;
 
         shell-integration = "fish";
+        initial-command = "nvim-remote";
 
         window-decoration = true;
         gtk-single-instance = true;
@@ -112,7 +113,9 @@
           "System"
           "TerminalEmulator"
         ];
-        exec = ''ghostty --class=com.mitchellh.ghostty-nemo --command="ssh -t nemo"'';
+        exec = ''
+        ghostty --class=com.mitchellh.ghostty-nemo --command="ssh -t nemo" --initial-command="ssh -t nemo nvim-remote"
+        '';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
         name = "Ghostty (nemo)";
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 2731261..a67f7e3 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -4,11 +4,23 @@
   pkgs,
   ...
 }:
+let
+  nvim-remote = pkgs.writeShellApplication {
+    name = "nvim-remote";
+    text = ''
+      _sess=$(echo -n "$USER@''${SSH_CONNECTION:-$HOSTNAME}" | tr -c '[:alnum:]@.' '_')
+      _nvim_sock="''${XDG_RUNTIME_DIR:-/tmp}/nvim.$_sess.sock"
+      exec nvim --listen "$_nvim_sock" --server "$_nvim_sock" "$@"
+    '';
+  };
+in
 {
   imports = [
     ./treesitter.nix
   ];
 
+  home.packages = [ nvim-remote ];
+
   programs.man.generateCaches = false;
 
   programs.neovim = {

From a603dd1cada3f589d3ea2d8a82ae4d419d8b1bca Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 16:19:21 +0100
Subject: [PATCH 533/656] ghostty: module has been merged to home-manager

---
 flake.lock              | 64 ++++++++++++++++-------------------------
 flake.nix               |  3 --
 home/common/ghostty.nix |  7 ++---
 home/dln/desktop.nix    |  1 -
 4 files changed, 26 insertions(+), 49 deletions(-)

diff --git a/flake.lock b/flake.lock
index 2b181d7..bb16977 100644
--- a/flake.lock
+++ b/flake.lock
@@ -56,11 +56,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733312601,
-        "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
+        "lastModified": 1735774679,
+        "narHash": "sha256-soePLBazJk0qQdDVhdbM98vYdssfs3WFedcq+raipRI=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
+        "rev": "f2f7418ce0ab4a5309a4596161d154cfc877af66",
         "type": "github"
       },
       "original": {
@@ -116,11 +116,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735689283,
-        "narHash": "sha256-LOZRScnB8Q9ylmlXnt2j2v4Aj1b5JZTdSeKYaFL1RDw=",
+        "lastModified": 1735765328,
+        "narHash": "sha256-f4LI34cXP8nOTi4Va6GPUFaJYf0qGbabk+OeUddsfuk=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "60611b8a4a1d5b3c1097cce85eb0311de0696cfa",
+        "rev": "94599102e9fb8247af08cbbbcb7ee25e3d31e1bd",
         "type": "github"
       },
       "original": {
@@ -129,21 +129,6 @@
         "type": "github"
       }
     },
-    "ghostty-hm": {
-      "locked": {
-        "lastModified": 1702368251,
-        "narHash": "sha256-hafrDmzGplzm+vdIo+LkOjRfA4qRcy5JmpGGksnht5c=",
-        "owner": "clo4",
-        "repo": "ghostty-hm-module",
-        "rev": "887e13a6e7acf5ffaab0119d96e476d84db90904",
-        "type": "github"
-      },
-      "original": {
-        "owner": "clo4",
-        "repo": "ghostty-hm-module",
-        "type": "github"
-      }
-    },
     "git-hooks": {
       "inputs": {
         "flake-compat": "flake-compat_3",
@@ -202,11 +187,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733333617,
-        "narHash": "sha256-nMMQXREGvLOLvUa0ByhYFdaL0Jov0t1wzLbKjr05P2w=",
+        "lastModified": 1735695978,
+        "narHash": "sha256-cwk53OX1S1bCFY09zydubZNmmwcx9l5XEba8mVYuNE4=",
         "owner": "hercules-ci",
         "repo": "hercules-ci-effects",
-        "rev": "56f8ea8d502c87cf62444bec4ee04512e8ea24ea",
+        "rev": "f6233b5cfbada692d93a73d6ed35bdbfd0fdb9c4",
         "type": "github"
       },
       "original": {
@@ -222,11 +207,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735735907,
-        "narHash": "sha256-/AOGn9qJMjrZQyWYbObHTKmWDUP0q9+0TAXOJnq6ik0=",
+        "lastModified": 1735774425,
+        "narHash": "sha256-C73gLFnEh8ZI0uDijUgCDWCd21T6I6tsaWgIBHcfAXg=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "59a4c43e9ba6db24698c112720a58a334117de83",
+        "rev": "5f6aa268e419d053c3d5025da740e390b12ac936",
         "type": "github"
       },
       "original": {
@@ -246,11 +231,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1735693090,
-        "narHash": "sha256-Axke90GBbocA48Lrb7ub/RycvHt1NcujkZW1RMF+Q7Q=",
+        "lastModified": 1735801710,
+        "narHash": "sha256-Z6Pl8LWYbPnqSinpSxrylfCpa4XkEVhzpfnfqiD0Kv8=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "47e417b35d1ec8bf79deec3e96c90f1e41a9e1e4",
+        "rev": "57a05ea557689b9d85dd594a9a26778b6842a18a",
         "type": "github"
       },
       "original": {
@@ -262,11 +247,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1735686267,
-        "narHash": "sha256-gLa+1QOW7P5J4cAG34BW68tnf/yOx50rH6iZuSyoX1A=",
+        "lastModified": 1735771362,
+        "narHash": "sha256-+HxTD7TxeIySWsE++VKDWBMQK5OqTv391wADaZ8UDuo=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "59cbe640233eeb6ae96231e059449e73e15f9ea5",
+        "rev": "6dc0eb9f41e6453fe003dd3a28c58b701fd003c9",
         "type": "github"
       },
       "original": {
@@ -277,11 +262,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1735554305,
-        "narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
+        "lastModified": 1735617354,
+        "narHash": "sha256-5zJyv66q68QZJZsXtmjDBazGnF0id593VSy+8eSckoo=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
+        "rev": "69b9a8c860bdbb977adfa9c5e817ccb717884182",
         "type": "github"
       },
       "original": {
@@ -309,11 +294,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1735531152,
-        "narHash": "sha256-As8I+ebItDKtboWgDXYZSIjGlKeqiLBvjxsQHUmAf1Q=",
+        "lastModified": 1735669367,
+        "narHash": "sha256-tfYRbFhMOnYaM4ippqqid3BaLOXoFNdImrfBfCp4zn0=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "3ffbbdbac0566a0977da3d2657b89cbcfe9a173b",
+        "rev": "edf04b75c13c2ac0e54df5ec5c543e300f76f1c9",
         "type": "github"
       },
       "original": {
@@ -374,7 +359,6 @@
     "root": {
       "inputs": {
         "ghostty": "ghostty",
-        "ghostty-hm": "ghostty-hm",
         "home-manager": "home-manager",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
         "nixpkgs": "nixpkgs_2",
diff --git a/flake.nix b/flake.nix
index 170ca39..c19e910 100644
--- a/flake.nix
+++ b/flake.nix
@@ -22,14 +22,12 @@
 
     home-manager.url = "github:nix-community/home-manager";
     home-manager.inputs.nixpkgs.follows = "nixpkgs";
-    ghostty-hm.url = "github:clo4/ghostty-hm-module";
   };
 
   outputs =
     inputs@{
       self,
       nixpkgs,
-      ghostty-hm,
       home-manager,
       ...
     }:
@@ -55,7 +53,6 @@
             inherit inputs outputs;
           };
           modules = [
-            ghostty-hm.homeModules.default
             ./home/common
           ] ++ modules;
         };
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 60174c8..165989a 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -7,13 +7,10 @@
 }:
 {
   config = lib.mkIf config.patagia.desktop.enable {
-
-    home.packages = with pkgs; [
-      inputs.ghostty.packages.${pkgs.system}.default
-    ];
-
     programs.ghostty = {
       enable = true;
+      enableFishIntegration = true;
+      package = inputs.ghostty.packages.${pkgs.system}.default;
       settings = {
         font-size = 14;
         font-family = "Berkeley Mono Variable";
diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index 95d3157..783f875 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -9,7 +9,6 @@
     dynamic-wallpaper
     gimp
     inkscape
-    inputs.ghostty.packages.${pkgs.system}.default
     moonlight-qt
     obsidian
     pavucontrol

From 091442fcdf183fcc65f5799f59c663f2c3ffd367 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 17:04:16 +0100
Subject: [PATCH 534/656] ghostty: use berkeley mono v2

---
 home/common/ghostty.nix | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 165989a..3ff4a1e 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -13,11 +13,12 @@
       package = inputs.ghostty.packages.${pkgs.system}.default;
       settings = {
         font-size = 14;
-        font-family = "Berkeley Mono Variable";
+        font-family = "TX-02";
         font-family-bold-italic = "Monaspace Xenon";
+        font-style-bold = "Bold";
+        font-style-italic = "Light Oblique";
         font-style-bold-italic = "ExtraLight Italic";
         font-synthetic-style = false;
-        font-variation-italic = [ "wght=100" ];
 
         adjust-cell-height = 1;
         adjust-cursor-thickness = 5;

From 13348be8e987eac9e6555634fc71e120f7317551 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 19:46:32 +0100
Subject: [PATCH 535/656] nvim: Add dieter/dieter-nocolor variants. Switch with
 <Leader>uc

---
 home/common/nvim/default.nix                  |   2 +-
 .../nvim/dieter/colors/dieter-nocolor.lua     |   2 +
 home/common/nvim/dieter/colors/dieter.lua     |   2 +-
 home/common/nvim/dieter/lua/dieter/init.lua   | 255 ++++++++++--------
 home/common/nvim/init.lua                     |   7 +
 5 files changed, 156 insertions(+), 112 deletions(-)
 create mode 100644 home/common/nvim/dieter/colors/dieter-nocolor.lua

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index a67f7e3..4312729 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -154,7 +154,7 @@ in
         };
         type = "lua";
         config = ''
-          vim.cmd.colorscheme "dieter"
+          vim.cmd.colorscheme "dieter-nocolor"
         '';
       }
 
diff --git a/home/common/nvim/dieter/colors/dieter-nocolor.lua b/home/common/nvim/dieter/colors/dieter-nocolor.lua
new file mode 100644
index 0000000..6f016e4
--- /dev/null
+++ b/home/common/nvim/dieter/colors/dieter-nocolor.lua
@@ -0,0 +1,2 @@
+package.loaded["dieter"] = nil
+require("dieter").setup_nocolor()
diff --git a/home/common/nvim/dieter/colors/dieter.lua b/home/common/nvim/dieter/colors/dieter.lua
index 38e858c..5dd7a50 100644
--- a/home/common/nvim/dieter/colors/dieter.lua
+++ b/home/common/nvim/dieter/colors/dieter.lua
@@ -1,2 +1,2 @@
 package.loaded["dieter"] = nil
-require("dieter")
+require("dieter").setup()
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 1a638dd..4b4c55d 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -42,7 +42,7 @@ local colors = {
     background = "NONE",
     foreground = "NONE",
 
-    accent1 = hsl(202, 57, 57),  -- Blue
+    accent1 = hsl(202, 57, 57), -- Blue
     accent2 = hsl(40, 57, 57),  -- Yellow
 
     dimmed = hsl(212, 19, 25),
@@ -93,136 +93,171 @@ local colors = {
 
 }
 
-local c = colors[vim.o.background]
-c.dialog_fg = c.foreground
-c.dialog_bg = c.background
+local setupGroups = function(c)
+  c.dialog_fg = c.foreground
+  c.dialog_bg = c.background
 
-local theme = {
-  Normal = { fg = c.foreground, bg = c.background },
+  return {
+    Normal = { fg = c.foreground, bg = c.background },
 
-  Constant = { link = "NormalNC" },
-  Delimiter = { link = "NormalNC" },
-  Function = { fg = c.func },
-  Identifier = { link = "NormalNC" },
-  Keyword = { fg = c.foreground, bold = true },
-  Operator = { link = "NormalNC" },
-  Special = { link = "NormalNC" },
-  Type = { link = "NormalNC" },
+    Constant = { link = "NormalNC" },
+    Delimiter = { link = "NormalNC" },
+    Function = { fg = c.func },
+    Identifier = { link = "NormalNC" },
+    Keyword = { fg = c.foreground, bold = true },
+    Operator = { link = "NormalNC" },
+    Special = { link = "NormalNC" },
+    Type = { link = "NormalNC" },
 
-  String = { fg = c.string },
+    String = { fg = c.string },
 
-  Comment = { fg = c.comment, italic = true, bold = true },
-  CommentError = { fg = c.comment_error, italic = true, bold = true },
-  ["@comment.note"] = { link = "Comment" },
-  ["@comment.todo"] = { link = "CommentError" },
-  ["@comment.error"] = { link = "CommentError" },
-  ["@comment.warning"] = { link = "CommentError" },
+    Visual = { bg = c.selection },
 
-  DiffAdd = { fg = c.add, bg = c.add_quarter },
-  GitSignsAdd = { fg = c.add, bg = c.background },
-  GitSignsAddNr = { link = "DiffAdd" },
-  DiffChange = { fg = c.change, bg = c.change_quarter },
-  GitSignsChange = { fg = c.change, bg = c.background },
-  GitSignsChangeNr = { link = "DiffChange" },
-  DiffDelete = { fg = c.delete, bg = c.delete_quarter },
-  GitSignsDelete = { fg = c.delete, bg = c.background },
-  GitSignsDeleteNr = { link = "DiffDelete" },
+    Comment = { fg = c.comment, italic = true, bold = true },
+    CommentError = { fg = c.comment_error, italic = true, bold = true },
+    ["@comment.note"] = { link = "Comment" },
+    ["@comment.todo"] = { link = "CommentError" },
+    ["@comment.error"] = { link = "CommentError" },
+    ["@comment.warning"] = { link = "CommentError" },
 
-  -- Treesitter
-  -- ["@function"] = { link = "NormalNC" },
-  ["@punctuation.special"] = { fg = c.punc },
-  ["@special"] = { link = "NormalNC" },
-  ["@variable"] = { link = "NormalNC" },
-  ["@variable.member"] = { fg = c.member },
-  ["@variable.parameter"] = { fg = c.accent2 },
-  -- ["@lsp.type.variable"] = { fg = c.dimmed_subtle, italic = true },
+    DiffAdd = { fg = c.add, bg = c.add_quarter },
+    GitSignsAdd = { fg = c.add, bg = c.background },
+    GitSignsAddNr = { link = "DiffAdd" },
+    DiffChange = { fg = c.change, bg = c.change_quarter },
+    GitSignsChange = { fg = c.change, bg = c.background },
+    GitSignsChangeNr = { link = "DiffChange" },
+    DiffDelete = { fg = c.delete, bg = c.delete_quarter },
+    GitSignsDelete = { fg = c.delete, bg = c.background },
+    GitSignsDeleteNr = { link = "DiffDelete" },
 
-  -- UI Elements
-  CursorLine = { bg = c.highlight_subtle },
+    -- Treesitter
+    -- ["@function"] = { link = "NormalNC" },
+    ["@punctuation.special"] = { fg = c.punc },
+    ["@special"] = { link = "NormalNC" },
+    ["@variable"] = { link = "NormalNC" },
+    ["@variable.member"] = { fg = c.member },
+    ["@variable.parameter"] = { fg = c.accent2 },
+    -- ["@lsp.type.variable"] = { fg = c.dimmed_subtle, italic = true },
 
-  DiagnosticError = { fg = c.diagnostic_error, italic = true },
-  DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.popup_error_bg },
-  DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
-  DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
-  DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
-  DiagnosticUnderlineError = { fg = c.diagnostic_error, undercurl = true },
-  DiagnosticUnderlineWarn = { fg = c.diagnostic_warn, undercurl = true },
-  DiagnosticUnderlineInfo = { fg = c.diagnostic_info, undercurl = true },
-  DiagnosticUnderlinehint = { fg = c.diagnostic_hint, undercurl = true },
+    -- UI Elements
+    CursorLine = { bg = c.highlight_subtle },
 
-  DiagnosticSignError = { fg = c.diagnostic_error },
-  DiagnosticSignHint = { fg = c.diagnostic_hint },
-  DiagnosticSignInfo = { fg = c.diagnostic_info },
-  DiagnosticSignWarn = { fg = c.diagnostic_warning },
-  LineNr = { fg = c.dimmed, italic = true },
-  CursorLineNr = { fg = c.dimmed_subtle, bg = c.highlight_subtle, bold = true },
+    DiagnosticError = { fg = c.diagnostic_error, italic = true },
+    DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.popup_error_bg },
+    DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
+    DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
+    DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
+    DiagnosticUnderlineError = { fg = c.diagnostic_error, undercurl = true },
+    DiagnosticUnderlineWarn = { fg = c.diagnostic_warn, undercurl = true },
+    DiagnosticUnderlineInfo = { fg = c.diagnostic_info, undercurl = true },
+    DiagnosticUnderlinehint = { fg = c.diagnostic_hint, undercurl = true },
 
-  IndentLine = { fg = c.dimmed },
-  IndentLineCurrent = { fg = c.dimmed_subtle },
-  MiniIndentscopeSymbol = { link = "IndentLine" },
-  MiniIndentscopeSymbolOff = { link = "IndentLine" },
+    DiagnosticSignError = { fg = c.diagnostic_error },
+    DiagnosticSignHint = { fg = c.diagnostic_hint },
+    DiagnosticSignInfo = { fg = c.diagnostic_info },
+    DiagnosticSignWarn = { fg = c.diagnostic_warning },
+    LineNr = { fg = c.dimmed, italic = true },
+    CursorLineNr = { fg = c.dimmed_subtle, bg = c.highlight_subtle, bold = true },
 
-  TreesitterContext = { reverse = true },
-  TreesitterContextLineNumber = { bg = c.dimmed, reverse = true, italic = true },
-  InclineNormal = { bg = c.background },
-  InclineNormalNC = { bg = c.background },
+    IndentLine = { fg = c.dimmed },
+    IndentLineCurrent = { fg = c.dimmed_subtle },
+    MiniIndentscopeSymbol = { link = "IndentLine" },
+    MiniIndentscopeSymbolOff = { link = "IndentLine" },
 
-  WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
-  NormalFloat = { bg = c.doc_bg, fg = c.doc_fg },
-  FloatBorder = { fg = c.doc_fg },
-  FloatTitle = { fg = c.doc_fg, bold = true },
+    TreesitterContext = { reverse = true },
+    TreesitterContextLineNumber = { bg = c.dimmed, reverse = true, italic = true },
+    InclineNormal = { bg = c.background },
+    InclineNormalNC = { bg = c.background },
 
-  Title = { fg = c.foreground, bold = true },
+    WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
+    NormalFloat = { bg = c.doc_bg, fg = c.doc_fg },
+    FloatBorder = { fg = c.doc_fg },
+    FloatTitle = { fg = c.doc_fg, bold = true },
 
-  MiniPickNormal = { link = "Normal" },
-  MiniPickBorder = { link = "MiniPickNormal" },
-  MiniPickBorderText = { link = "MiniPickBorder" },
-  MiniPickMatchCurrent = { bg = c.background, fg = c.foreground, reverse = true },
+    Title = { fg = c.foreground, bold = true },
 
-  MiniClueBorder = { link = "MiniPickNormal" },
-  MiniClueTitle = { bg = c.background, fg = c.foreground, bold = true },
-  MiniClueNextKey = { link = "MiniClueTitle" },
-  MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
-  MiniClueDescSingle = { bg = c.background, fg = c.foreground },
-  MiniClueSeparator = { link = "MiniClueBorder" },
+    MiniPickNormal = { link = "Normal" },
+    MiniPickBorder = { link = "MiniPickNormal" },
+    MiniPickBorderText = { link = "MiniPickBorder" },
+    MiniPickMatchCurrent = { bg = c.background, fg = c.foreground, reverse = true },
 
-  MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
+    MiniClueBorder = { link = "MiniPickNormal" },
+    MiniClueTitle = { bg = c.background, fg = c.foreground, bold = true },
+    MiniClueNextKey = { link = "MiniClueTitle" },
+    MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
+    MiniClueDescSingle = { bg = c.background, fg = c.foreground },
+    MiniClueSeparator = { link = "MiniClueBorder" },
 
-  BlinkCmpMenu = { bg = c.cmp_bg, fg = c.cmp_fg },
-  BlinkCmpMenuSelection = { bg = c.cmp_selected_bg, fg = c.cmp_selected_fg, reverse = false },
-  BlinkCmpMenuBorder = { bg = c.cmp_bg, fg = c.cmp_fg },
-  BlinkCmpLabel = { link = 'BlinkCmpMenu' },
-  BlinkCmpLabelMatch = { link = 'BlinkCmpMenu', underline = true },
+    MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
 
-  BlinkCmpDoc = { bg = c.doc_bg, fg = c.foreground },
-  BlinkCmpDocBorder = { bg = c.doc_bg, fg = c.doc_fg },
-  BlinkCmpDocDetail = { link = 'BlinkCmpDoc' },
-  BlinkCmpSignatureHelp = { link = 'BlinkCmpDoc' },
-  BlinkCmpSignatureHelpBorder = { link = 'BlinkCmpDocBorder' },
+    BlinkCmpMenu = { bg = c.cmp_bg, fg = c.cmp_fg },
+    BlinkCmpMenuSelection = { bg = c.cmp_selected_bg, fg = c.cmp_selected_fg, reverse = false },
+    BlinkCmpMenuBorder = { bg = c.cmp_bg, fg = c.cmp_fg },
+    BlinkCmpLabel = { link = 'BlinkCmpMenu' },
+    BlinkCmpLabelMatch = { link = 'BlinkCmpMenu', underline = true },
 
-  NeoCodeiumSuggestion = { fg = c.suggestion , bold = true, italic = true },
+    BlinkCmpDoc = { bg = c.doc_bg, fg = c.foreground },
+    BlinkCmpDocBorder = { bg = c.doc_bg, fg = c.doc_fg },
+    BlinkCmpDocDetail = { link = 'BlinkCmpDoc' },
+    BlinkCmpSignatureHelp = { link = 'BlinkCmpDoc' },
+    BlinkCmpSignatureHelpBorder = { link = 'BlinkCmpDocBorder' },
 
-  NoiceMini = { fg = c.foreground, italic = true },
-
-  TelescopeNormal = { fg = c.foreground, bg = c.background },
-  TelescopeBorder = { bold = true },
-  TelescopeSelection = { bg = c.selection },
-  TelescopeResultsNormal = { fg = c.foreground, bold = true },
-  TelescopeResultsComment = { fg = c.dimmed_subtle, italic = true, bold = false },
-
-  Visual = { bg = c.selection },
-  LspReferenceText = { fg = c.highlight_intense, undercurl = true },
-  LspInlayHint = { fg = c.accent1, italic = true, bold = true },
-}
-
-vim.cmd("hi clear")
-
-if vim.fn.exists("syntax_on") == 1 then
-  vim.cmd("syntax reset")
+    NeoCodeiumSuggestion = { fg = c.suggestion, bold = true, italic = true },
+    LspReferenceText = { fg = c.highlight_intense, undercurl = true },
+    LspInlayHint = { fg = c.accent1, italic = true, bold = true },
+  }
 end
 
-for group, hl in pairs(theme) do
-  vim.api.nvim_set_hl(0, group, hl)
+
+local setupGroupsNoColor = function(c)
+  local g = setupGroups(c)
+  local cl = { link = "NormalNC" }
+  g.Constant = cl
+  g.Delimiter = cl
+  g.Function = cl
+  g.Identifier = cl
+  g.Keyword = cl
+  g.Operator = cl
+  g["@punctuation.special"] = cl
+  g["@special"] = cl
+  g["@string"] = cl
+  g["@lsp.type.string"] = cl
+  g.Special = cl
+  g.String = cl
+  g.Type = cl
+  g.Variable = cl
+  g["@variable"] = cl
+  g["@variable.member"] = cl
+  g["@variable.parameter"] = cl
+  g.Comment = { fg = c.dimmed_subtle, italic = true, bold = true }
+  g.CommentError = { link = "Comment" }
+  return g
 end
 
-vim.g.colors_name = "dieter"
+local setup_common = function(groups)
+  vim.cmd("hi clear")
+  if vim.fn.exists("syntax_on") == 1 then
+    vim.cmd("syntax reset")
+  end
+  for group, hl in pairs(groups) do
+    vim.api.nvim_set_hl(0, group, hl)
+  end
+end
+
+local T = {}
+
+T.setup = function()
+  local c = colors[vim.o.background]
+  local groups = setupGroups(c)
+  setup_common(groups)
+  vim.g.colors_name = "dieter"
+end
+
+T.setup_nocolor = function()
+  local c = colors[vim.o.background]
+  local groups = setupGroupsNoColor(c)
+  setup_common(groups)
+  vim.g.colors_name = "dieter-nocolor"
+end
+
+return T
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index c32cefe..7c3e600 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -154,6 +154,13 @@ vim.keymap.set("n", "K", function()
 vim.keymap.set("n", "<Leader>ub", function()
   vim.o.background = (vim.o.background == "light" and "dark" or "light")
   end, opts("Toggle dark/light background"))
+vim.keymap.set("n", "<Leader>uc", function()
+  if vim.g.colors_name == "dieter-nocolor" then
+    vim.cmd [[colorscheme dieter]]
+  else
+    vim.cmd [[colorscheme dieter-nocolor]]
+  end
+end, opts("Toggle Dieter colors"))
 vim.keymap.set("n", "<Leader>uh", "<cmd>InlayHintsToggle<cr>", opts("Toggle inlay hints"))
 vim.keymap.set("n", "<Leader>uw","<cmd>set invwrap<cr>", opts("Toggle line wrapping"))
 

From 37372a5c69bb1b8cae6b97283738c3a0e5c17a8d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 20:27:42 +0100
Subject: [PATCH 536/656] nvim: colors

---
 home/common/nvim/dieter/lua/dieter/init.lua | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 4b4c55d..e8b7abd 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -52,6 +52,8 @@ local colors = {
     highlight_subtle = hsl(212, 27, 11),
     highlight_intense = hsl(58, 100, 60),
 
+    dialog_fg = hsl(191, 15, 75),
+
     -- string = hsl(96, 35, 60),
     -- string = hsl(80, 79, 83),
     string = hsl(90, 45, 70),
@@ -81,7 +83,7 @@ local colors = {
     selection = hsl(213, 60, 40),
 
     cmp_bg = hsl(218, 30, 13),
-    cmp_fg = hsl(218, 30, 60),
+    cmp_fg = hsl(218, 30, 80),
     cmp_selected_bg = hsl(218, 30, 25),
     cmp_selected_fg = hsl(218, 50, 80),
 
@@ -94,7 +96,6 @@ local colors = {
 }
 
 local setupGroups = function(c)
-  c.dialog_fg = c.foreground
   c.dialog_bg = c.background
 
   return {
@@ -176,12 +177,12 @@ local setupGroups = function(c)
 
     Title = { fg = c.foreground, bold = true },
 
-    MiniPickNormal = { link = "Normal" },
+    MiniPickNormal = { bg = c.dialog_bg, fg = c.dialog_fg },
     MiniPickBorder = { link = "MiniPickNormal" },
     MiniPickBorderText = { link = "MiniPickBorder" },
-    MiniPickMatchCurrent = { bg = c.background, fg = c.foreground, reverse = true },
+    MiniPickMatchCurrent = { bg = c.dialog_bg, fg = c.dialog_fg, reverse = true },
 
-    MiniClueBorder = { link = "MiniPickNormal" },
+    MiniClueBorder = { link = "MiniPicBorder" },
     MiniClueTitle = { bg = c.background, fg = c.foreground, bold = true },
     MiniClueNextKey = { link = "MiniClueTitle" },
     MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },

From f8ad364bc9c9fa4b32dba3c7f7fe65889c8491a7 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 21:11:26 +0100
Subject: [PATCH 537/656] ghostty: color adjustments

---
 home/common/ghostty.nix | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 3ff4a1e..d2dfb12 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -20,11 +20,9 @@
         font-style-bold-italic = "ExtraLight Italic";
         font-synthetic-style = false;
 
-        adjust-cell-height = 1;
-        adjust-cursor-thickness = 5;
-        adjust-font-baseline = 1;
+        adjust-cursor-thickness = 4;
         adjust-underline-position = 2;
-        adjust-underline-thickness = -1;
+        adjust-underline-thickness = -2;
 
         mouse-hide-while-typing = true;
         cursor-style = "block";
@@ -59,9 +57,9 @@
       in
       ''
       background = "${background}"
-      foreground = "#d1d5db"
-      cursor-color = #00d992
-      selection-background = #d7d7d7
+      foreground = #b7bec7
+      cursor-color = #e7e7b7
+      selection-background = #84979f
       selection-foreground = #000000
       palette = 0=#000000
       palette = 1=#ff0035
@@ -70,7 +68,7 @@
       palette = 4=#00a7ff
       palette = 5=#cb01ff
       palette = 6=#00e0ff
-      palette = 7=#f0f0f0
+      palette = 7=#b7bec7
       palette = 8=#444444
       palette = 9=#ff8c88
       palette = 10=#baff94

From f0710b34fba2fd30247b04bb3f9b9f3bcdd04a2c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 23:04:54 +0100
Subject: [PATCH 538/656] nvim: update Patagia logo

---
 home/common/nvim/mini.lua | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index a572728..297c1c6 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -239,11 +239,14 @@ require('mini.notify').setup({
 
 require('mini.starter').setup({
   header =
-  [[ ______                      _
-(_____ \     _              (_)
- _____) )___| |_  ____  ____ _  ____
-|  ____/ _  |  _)/ _  |/ _  | |/ _  |
-| |   ( ( | | |_( ( | ( ( | | ( ( | |
-|_|    \_||_|\___)_||_|\_|| |_|\_||_|
-                      (_____|]]
+  [[
+████████▄             ▄▄                      ▒▒
+██     ▀██            ██
+██     ▄██ ▄██████▄ ██████ ▄██████▄  ▄████▄██ ██ ▄██████▄
+████████▀  ▀▀    ██   ██   ▀▀    ██ ██▀   ▀██ ██ ▀▀    ██
+██         ▄███████   ██   ▄███████ ██     ██ ██ ▄███████
+██         ██    ██   ██   ██    ██ ██▄   ▄██ ██ ██    ██
+██         ▀████▀██   ▀███ ▀████▀██  ▀████▀██ ██ ▀████▀██
+                                    ▄▄     ██
+                                    ▀██████▀ ]]
 })

From 7e89879ae9f591fad9260030773206ca06a6a02a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 2 Jan 2025 23:08:15 +0100
Subject: [PATCH 539/656] lsjostro has his own home-manager setup now

---
 flake.nix              |  1 -
 home/lsjostro/home.nix | 40 ----------------------------------------
 home/lsjostro/nemo.nix |  6 ------
 3 files changed, 47 deletions(-)
 delete mode 100644 home/lsjostro/home.nix
 delete mode 100644 home/lsjostro/nemo.nix

diff --git a/flake.nix b/flake.nix
index c19e910..fc589f7 100644
--- a/flake.nix
+++ b/flake.nix
@@ -78,7 +78,6 @@
         "dln@dinky" = mkHome [ ./home/dln/dinky.nix ];
         "dln@nemo" = mkHome [ ./home/dln/nemo.nix ];
         "dln@pearl" = mkHome [ ./home/dln/pearl.nix ];
-        "lsjostro@nemo" = mkHome [ ./home/lsjostro/nemo.nix ];
       };
     };
 }
diff --git a/home/lsjostro/home.nix b/home/lsjostro/home.nix
deleted file mode 100644
index f1d8a4d..0000000
--- a/home/lsjostro/home.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ pkgs, ... }:
-{
-  home = {
-    username = "lsjostro";
-    homeDirectory = "/home/lsjostro";
-    packages = with pkgs; [ openconnect ];
-  };
-
-  programs.git = {
-    userName = "Lars Sjöstrom";
-    userEmail = "lars@radicore.se";
-  };
-
-  programs.ssh.matchBlocks = {
-    dev = {
-      hostname = "10.1.100.17";
-    };
-
-    nemo = {
-      hostname = "10.1.100.20";
-      forwardAgent = true;
-      localForwards = [
-        {
-          bind.address = "localhost";
-          bind.port = 8000;
-          host.address = "localhost";
-          host.port = 8000;
-        }
-        {
-          bind.address = "localhost";
-          bind.port = 8080;
-          host.address = "localhost";
-          host.port = 8080;
-        }
-      ];
-    };
-  };
-
-  home.stateVersion = "24.05"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
-}
diff --git a/home/lsjostro/nemo.nix b/home/lsjostro/nemo.nix
deleted file mode 100644
index 0de2f39..0000000
--- a/home/lsjostro/nemo.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ ... }:
-{
-  imports = [ ./home.nix ];
-
-  # Host specific user config goes here
-}

From 70fec1c1f1369022103e6824399652ca0d444908 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 00:11:25 +0100
Subject: [PATCH 540/656] nvim: just color underlines for diagnostics

---
 home/common/nvim/dieter/lua/dieter/init.lua | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index e8b7abd..e552e61 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -148,10 +148,10 @@ local setupGroups = function(c)
     DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
     DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
     DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
-    DiagnosticUnderlineError = { fg = c.diagnostic_error, undercurl = true },
-    DiagnosticUnderlineWarn = { fg = c.diagnostic_warn, undercurl = true },
-    DiagnosticUnderlineInfo = { fg = c.diagnostic_info, undercurl = true },
-    DiagnosticUnderlinehint = { fg = c.diagnostic_hint, undercurl = true },
+    DiagnosticUnderlineError = { fg = c.foreground, undercurl = true, sp = c.diagnostic_error },
+    DiagnosticUnderlineWarn = { fg = c.foreground, undercurl = true, sp = c.diagnostic_warn },
+    DiagnosticUnderlineInfo = { fg = c.foreground, undercurl = true, sp = c.diagnostic_info },
+    DiagnosticUnderlinehint = { fg = c.foreground, undercurl = true, sp = c.diagnostic_hint },
 
     DiagnosticSignError = { fg = c.diagnostic_error },
     DiagnosticSignHint = { fg = c.diagnostic_hint },

From 5a35ac9aeb78004ecdba79ce07c5cdcc19b12ae2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 00:11:25 +0100
Subject: [PATCH 541/656] nvim: absolute line numbers by default

---
 home/common/nvim/init.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 7c3e600..2372c92 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -8,7 +8,7 @@ vim.g.maplocalleader = ","
 vim.opt.cursorline = true
 vim.opt.laststatus = 0
 vim.opt.number = true
-vim.opt.relativenumber = true
+vim.opt.relativenumber = false
 vim.opt.ruler = true
 vim.opt.syntax = "on"
 vim.opt.termguicolors = true

From 6223f1e7c92ca7b1557f7a3ca3266314a0d3568c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 01:10:48 +0100
Subject: [PATCH 542/656] test-term: add ANSI color sets

---
 files/scripts/test-term.sh | 106 +++++++++++++++++++++++++++++++++++++
 1 file changed, 106 insertions(+)

diff --git a/files/scripts/test-term.sh b/files/scripts/test-term.sh
index 822e174..e702886 100755
--- a/files/scripts/test-term.sh
+++ b/files/scripts/test-term.sh
@@ -186,3 +186,109 @@ for i in $(seq 255 -1 128); do
 	echo -n " "
 done
 resetOutput
+
+
+## Color test
+
+# Tom Hale, 2016. MIT Licence.
+# Print out 256 colours, with each number printed in its corresponding colour
+# See http://askubuntu.com/questions/821157/print-a-256-color-test-pattern-in-the-terminal/821163#821163
+
+set -eu # Fail on errors or undeclared variables
+
+printable_colours=256
+
+# Return a colour that contrasts with the given colour
+# Bash only does integer division, so keep it integral
+function contrast_colour {
+    local r g b luminance
+    colour="$1"
+
+    if (( colour < 16 )); then # Initial 16 ANSI colours
+        (( colour == 0 )) && printf "15" || printf "0"
+        return
+    fi
+
+    # Greyscale # rgb_R = rgb_G = rgb_B = (number - 232) * 10 + 8
+    if (( colour > 231 )); then # Greyscale ramp
+        (( colour < 244 )) && printf "15" || printf "0"
+        return
+    fi
+
+    # All other colours:
+    # 6x6x6 colour cube = 16 + 36*R + 6*G + B  # Where RGB are [0..5]
+    # See http://stackoverflow.com/a/27165165/5353461
+
+    # r=$(( (colour-16) / 36 ))
+    g=$(( ((colour-16) % 36) / 6 ))
+    # b=$(( (colour-16) % 6 ))
+
+    # If luminance is bright, print number in black, white otherwise.
+    # Green contributes 587/1000 to human perceived luminance - ITU R-REC-BT.601
+    (( g > 2)) && printf "0" || printf "15"
+    return
+
+    # Uncomment the below for more precise luminance calculations
+
+    # # Calculate percieved brightness
+    # # See https://www.w3.org/TR/AERT#color-contrast
+    # # and http://www.itu.int/rec/R-REC-BT.601
+    # # Luminance is in range 0..5000 as each value is 0..5
+    # luminance=$(( (r * 299) + (g * 587) + (b * 114) ))
+    # (( $luminance > 2500 )) && printf "0" || printf "15"
+}
+
+# Print a coloured block with the number of that colour
+function print_colour {
+    local colour="$1" contrast
+    contrast=$(contrast_colour "$1")
+    printf "\e[48;5;%sm" "$colour"                # Start block of colour
+    printf "\e[38;5;%sm%3d" "$contrast" "$colour" # In contrast, print number
+    printf "\e[0m "                               # Reset colour
+}
+
+# Starting at $1, print a run of $2 colours
+function print_run {
+    local i
+    for (( i = "$1"; i < "$1" + "$2" && i < printable_colours; i++ )) do
+        print_colour "$i"
+    done
+    printf "  "
+}
+
+# Print blocks of colours
+function print_blocks {
+    local start="$1" i
+    local end="$2" # inclusive
+    local block_cols="$3"
+    local block_rows="$4"
+    local blocks_per_line="$5"
+    local block_length=$((block_cols * block_rows))
+
+    # Print sets of blocks
+    for (( i = start; i <= end; i += (blocks_per_line-1) * block_length )) do
+        printf "\n" # Space before each set of blocks
+        # For each block row
+        for (( row = 0; row < block_rows; row++ )) do
+            # Print block columns for all blocks on the line
+            for (( block = 0; block < blocks_per_line; block++ )) do
+                print_run $(( i + (block * block_length) )) "$block_cols"
+            done
+            (( i += block_cols )) # Prepare to print the next row
+            printf "\n"
+        done
+    done
+}
+
+echo
+echo "ANSI 4-bit colors:"
+echo
+
+print_run 0 16 # The first 16 colours are spread over the whole spectrum
+
+echo
+echo
+echo "ANSI 8-bit colors:"
+
+print_blocks 16 231 6 6 3 # 6x6x6 colour cube between 16 and 231 inclusive
+print_blocks 232 255 12 2 1 # Not 50, but 24 Shades of Grey

From 243a4765256801190bb7fb6236644b8b7324e9b2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 01:10:48 +0100
Subject: [PATCH 543/656] ghostty: lower underline position

---
 home/common/ghostty.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index d2dfb12..3904d69 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -21,7 +21,7 @@
         font-synthetic-style = false;
 
         adjust-cursor-thickness = 4;
-        adjust-underline-position = 2;
+        adjust-underline-position = 5;
         adjust-underline-thickness = -2;
 
         mouse-hide-while-typing = true;

From a8adda373c4b323d99e6642fecfcc499c71a8fce Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 01:10:48 +0100
Subject: [PATCH 544/656] fish: bold prompt symbol instead of colored

---
 home/common/fish.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 253c701..1061926 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -107,12 +107,12 @@
 
       fish_prompt.body = ''
         echo -e "\033[s\033[$LINES;1H\033[1;2;38;5;238m$(string pad -c '┄' -w $COLUMNS (fish_jj_prompt || fish_vcs_prompt))\033[0m\033[u"
-        string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color yellow) ' ❯ ' (set_color normal)
+        string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color --bold) ' ❯ ' (set_color normal)
       '';
 
       transient_prompt_func.body = ''
         echo
-        string join "" -- (set_color yellow) '❯ ' (set_color normal)
+        string join "" -- (set_color --bold) '❯ ' (set_color normal)
       '';
 
       rg.body = ''

From 79e3ffbac30f471011aa4c9ae72e1d161cf8e975 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 12:05:08 +0100
Subject: [PATCH 545/656] nvim: more subtle mini cursor word

---
 home/common/nvim/dieter/lua/dieter/init.lua | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index e552e61..8fc4535 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -66,7 +66,7 @@ local colors = {
     diagnostic_error = hsl(353, 100, 45),
     diagnostic_warning = hsl(30, 100, 50),
     diagnostic_info = hsl(176, 80, 60),
-    diagnostic_hint = hsl(176, 80, 60),
+    diagnostic_hint = hsl(210, 74, 60),
 
     popup_error_bg = hsl(0, 95, 7),
     popup_warning_bg = hsl(27, 95, 7),
@@ -189,6 +189,8 @@ local setupGroups = function(c)
     MiniClueDescSingle = { bg = c.background, fg = c.foreground },
     MiniClueSeparator = { link = "MiniClueBorder" },
 
+    MiniCursorWord = { underdotted = true, bold = true, sp = c.diagnostic_hint },
+
     MiniStarterCurrent = { link = "MiniPickMatchCurrent" },
 
     BlinkCmpMenu = { bg = c.cmp_bg, fg = c.cmp_fg },

From 9b9389592e0251da7f61ef604f0ea5ff36a58e59 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 12:02:44 +0100
Subject: [PATCH 546/656] eza: monochrome theme. use home-manager aliases.

---
 home/common/fish.nix  |  2 --
 home/common/utils.nix | 12 +++++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 1061926..53c9988 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -134,8 +134,6 @@
 
     shellAbbrs = {
       l = "bat";
-      ls = "eza";
-      tree = "eza --tree";
       top = "btm --basic --enable_cache_memory --battery";
       ts = "TZ=Z date '+%Y%m%dT%H%M%SZ'";
       w = "viddy $history[1]";
diff --git a/home/common/utils.nix b/home/common/utils.nix
index d9b5abe..4b5bc1a 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -33,11 +33,6 @@
       };
     };
 
-    eza = {
-      enable = true;
-      enableFishIntegration = true;
-    };
-
     fd.enable = true;
 
     fzf = {
@@ -69,4 +64,11 @@
       options = [ "--cmd=cd" ];
     };
   };
+
+  programs.eza = {
+      enable = true;
+      enableFishIntegration = true;
+  };
+  home.sessionVariables.EZA_COLORS = "reset:oc=0:ur=0:uw=0:ux=0:ue=0:gr=0:gw=0:gx=0:tr=0:tw=0:tx=0:su=0:sf=0:xa=0:sn=0:nb=0:nk=0:nm=0:ng=0:nt=0:sb=0:ub=0:uk=0:um=0:ug=0:ut=0:df=0:ds=0:uu=0:uR=0:un=0:gu=0:gR=0:gn=0:lc=0:lm=0:ga=0:gm=0:gd=0:gv=0:gt=0:gi=0:gc=0:Gm=0:Go=0:Gc=0:Gd=0:xx=0:da=0:in=0:bl=0:hd=0:lp=3:cc=0:bO=0:sp=0:mp=0:im=0:vi=0:mu=0:lo=0:cr=0:do=0:co=0:tm=0:cm=0:bu=0:sc=0:ic=0:Sn=0:Su=0:Sr=0:St=0:Sl=0:ff=0:di=1:ex=0:fi=0:pi=0:so=0:bd=0:cd=0:ln=3:or=3";
+
 }

From afa495919cf1dae0583d5eca458799726d633a18 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 12:48:33 +0100
Subject: [PATCH 547/656] nvim: colorings

---
 home/common/nvim/dieter/lua/dieter/init.lua | 13 +++++++++----
 home/common/nvim/init.lua                   |  8 +++-----
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 8fc4535..7a7d3a2 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -29,7 +29,6 @@ local colors = {
     change = hsl(41, 80, 80),
     change_quarter = hsl(224, 100, 85),
     delete = hsl(350, 100, 40),
-    delete_quarter = hsl(350, 100, 85),
 
     dialog_bg = hsl(224, 5, 92),
     selection = hsl(270, 75, 92),
@@ -80,7 +79,10 @@ local colors = {
     delete = hsl(350, 100, 40),
     delete_quarter = hsl(350, 100, 15),
 
-    selection = hsl(213, 60, 40),
+    selection = hsl(218, 30, 20),
+
+    search_bg = hsl(43, 100, 8),
+    search_fg = hsl(43, 100, 85),
 
     cmp_bg = hsl(218, 30, 13),
     cmp_fg = hsl(218, 30, 80),
@@ -114,6 +116,9 @@ local setupGroups = function(c)
 
     Visual = { bg = c.selection },
 
+    Search = { bg = c.search_bg, fg = c.search_fg },
+    CurSearch = { link = "Search" },
+
     Comment = { fg = c.comment, italic = true, bold = true },
     CommentError = { fg = c.comment_error, italic = true, bold = true },
     ["@comment.note"] = { link = "Comment" },
@@ -157,8 +162,8 @@ local setupGroups = function(c)
     DiagnosticSignHint = { fg = c.diagnostic_hint },
     DiagnosticSignInfo = { fg = c.diagnostic_info },
     DiagnosticSignWarn = { fg = c.diagnostic_warning },
-    LineNr = { fg = c.dimmed, italic = true },
-    CursorLineNr = { fg = c.dimmed_subtle, bg = c.highlight_subtle, bold = true },
+    LineNr = { fg = c.dimmed },
+    CursorLineNr = { fg = c.dimmed_subtle, bg = c.highlight_subtle },
 
     IndentLine = { fg = c.dimmed },
     IndentLineCurrent = { fg = c.dimmed_subtle },
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 2372c92..8682273 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -69,7 +69,6 @@ vim.o.timeoutlen = 10
 vim.o.timeout = true
 vim.o.updatetime = 50
 
-
 -- Use rg
 vim.o.grepprg = [[rg --glob "!.jj" --glob "!.git" --no-heading --vimgrep --follow $*]]
 vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" }
@@ -150,10 +149,10 @@ vim.keymap.set("n", "K", function()
     max_width = 80,
     offset_x = 2,
   }
-  end, {})
+end, {})
 vim.keymap.set("n", "<Leader>ub", function()
   vim.o.background = (vim.o.background == "light" and "dark" or "light")
-  end, opts("Toggle dark/light background"))
+end, opts("Toggle dark/light background"))
 vim.keymap.set("n", "<Leader>uc", function()
   if vim.g.colors_name == "dieter-nocolor" then
     vim.cmd [[colorscheme dieter]]
@@ -162,5 +161,4 @@ vim.keymap.set("n", "<Leader>uc", function()
   end
 end, opts("Toggle Dieter colors"))
 vim.keymap.set("n", "<Leader>uh", "<cmd>InlayHintsToggle<cr>", opts("Toggle inlay hints"))
-vim.keymap.set("n", "<Leader>uw","<cmd>set invwrap<cr>", opts("Toggle line wrapping"))
-
+vim.keymap.set("n", "<Leader>uw", "<cmd>set invwrap<cr>", opts("Toggle line wrapping"))

From 7954844ff624cb73fce3cfa0f450e35f2258cf8c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 12:48:33 +0100
Subject: [PATCH 548/656] fish: colorings

---
 files/config/fish/config.fish | 2 +-
 home/common/fish.nix          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/files/config/fish/config.fish b/files/config/fish/config.fish
index e794e56..c3d902f 100644
--- a/files/config/fish/config.fish
+++ b/files/config/fish/config.fish
@@ -12,7 +12,7 @@ set fish_emoji_width 2
 # Colors
 set fish_color_command --bold
 set fish_color_comment --italics --dim
-set fish_color_autosuggestion --italics --bold red
+set fish_color_autosuggestion --italics --bold --dim
 set fish_color_cancel
 set fish_color_command --bold
 set fish_color_comment --italics --dim
diff --git a/home/common/fish.nix b/home/common/fish.nix
index 53c9988..9fd7a43 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -107,7 +107,7 @@
 
       fish_prompt.body = ''
         echo -e "\033[s\033[$LINES;1H\033[1;2;38;5;238m$(string pad -c '┄' -w $COLUMNS (fish_jj_prompt || fish_vcs_prompt))\033[0m\033[u"
-        string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color --bold) ' ❯ ' (set_color normal)
+        string join "" -- (set_color --dim) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color --bold normal) ' ❯ ' (set_color normal)
       '';
 
       transient_prompt_func.body = ''

From 5032e07ee90aa455e24d32473d39d700b4e9caef Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 14:01:39 +0100
Subject: [PATCH 549/656] zoxide: fzf clown vomit mitigation effort

---
 home/common/utils.nix | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/home/common/utils.nix b/home/common/utils.nix
index 4b5bc1a..a8284c1 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -58,11 +58,6 @@
       ];
     };
 
-    zoxide = {
-      enable = true;
-      enableFishIntegration = true;
-      options = [ "--cmd=cd" ];
-    };
   };
 
   programs.eza = {
@@ -71,4 +66,11 @@
   };
   home.sessionVariables.EZA_COLORS = "reset:oc=0:ur=0:uw=0:ux=0:ue=0:gr=0:gw=0:gx=0:tr=0:tw=0:tx=0:su=0:sf=0:xa=0:sn=0:nb=0:nk=0:nm=0:ng=0:nt=0:sb=0:ub=0:uk=0:um=0:ug=0:ut=0:df=0:ds=0:uu=0:uR=0:un=0:gu=0:gR=0:gn=0:lc=0:lm=0:ga=0:gm=0:gd=0:gv=0:gt=0:gi=0:gc=0:Gm=0:Go=0:Gc=0:Gd=0:xx=0:da=0:in=0:bl=0:hd=0:lp=3:cc=0:bO=0:sp=0:mp=0:im=0:vi=0:mu=0:lo=0:cr=0:do=0:co=0:tm=0:cm=0:bu=0:sc=0:ic=0:Sn=0:Su=0:Sr=0:St=0:Sl=0:ff=0:di=1:ex=0:fi=0:pi=0:so=0:bd=0:cd=0:ln=3:or=3";
 
+  programs.zoxide = {
+    enable = true;
+    enableFishIntegration = true;
+    options = [ "--cmd=cd" ];
+  };
+  home.sessionVariables._ZO_FZF_OPTS="--reverse --height=10 --border=none --no-info --no-separator --no-scrollbar --no-color";
+
 }

From 6dd68098e0cfd4a3cfe030f44ca33cc94589cef0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 14:01:39 +0100
Subject: [PATCH 550/656] jj: use jj flake directly

---
 flake.lock                       |  159 +-
 flake.nix                        |    1 +
 home/common/vcs.nix              |    4 +-
 pkgs/default.nix                 |    1 -
 pkgs/jujutsu-openssh/Cargo.lock  | 3838 ------------------------------
 pkgs/jujutsu-openssh/default.nix |   89 -
 6 files changed, 125 insertions(+), 3967 deletions(-)
 delete mode 100644 pkgs/jujutsu-openssh/Cargo.lock
 delete mode 100644 pkgs/jujutsu-openssh/default.nix

diff --git a/flake.lock b/flake.lock
index bb16977..17a6d61 100644
--- a/flake.lock
+++ b/flake.lock
@@ -108,6 +108,24 @@
         "type": "github"
       }
     },
+    "flake-utils_2": {
+      "inputs": {
+        "systems": "systems_2"
+      },
+      "locked": {
+        "lastModified": 1731533236,
+        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "ghostty": {
       "inputs": {
         "flake-compat": "flake-compat",
@@ -116,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735765328,
-        "narHash": "sha256-f4LI34cXP8nOTi4Va6GPUFaJYf0qGbabk+OeUddsfuk=",
+        "lastModified": 1735875799,
+        "narHash": "sha256-EI6C+CRmfHqkjnp0aJxYb/pTImwb5FZOu1HWHnnZsOc=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "94599102e9fb8247af08cbbbcb7ee25e3d31e1bd",
+        "rev": "e2f9eb6a6f4dc2108f91293938374c0ed314dcb8",
         "type": "github"
       },
       "original": {
@@ -136,18 +154,14 @@
         "nixpkgs": [
           "neovim-nightly-overlay",
           "nixpkgs"
-        ],
-        "nixpkgs-stable": [
-          "neovim-nightly-overlay",
-          "nixpkgs"
         ]
       },
       "locked": {
-        "lastModified": 1734797603,
-        "narHash": "sha256-ulZN7ps8nBV31SE+dwkDvKIzvN6hroRY8sYOT0w+E28=",
+        "lastModified": 1735882644,
+        "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "f0f0dc4920a903c3e08f5bdb9246bb572fcae498",
+        "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
         "type": "github"
       },
       "original": {
@@ -207,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735774425,
-        "narHash": "sha256-C73gLFnEh8ZI0uDijUgCDWCd21T6I6tsaWgIBHcfAXg=",
+        "lastModified": 1735900408,
+        "narHash": "sha256-U+oZBQ3f5fF2hHsupKQH4ihgTKLHgcJh6jEmKDg+W10=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "5f6aa268e419d053c3d5025da740e390b12ac936",
+        "rev": "1c8d4c8d592e8fab4cff4397db5529ec6f078cf9",
         "type": "github"
       },
       "original": {
@@ -220,6 +234,27 @@
         "type": "github"
       }
     },
+    "jujutsu": {
+      "inputs": {
+        "flake-utils": "flake-utils_2",
+        "nixpkgs": "nixpkgs",
+        "rust-overlay": "rust-overlay"
+      },
+      "locked": {
+        "lastModified": 1733685432,
+        "narHash": "sha256-kUfwjdQGq0UcIlVnNf/z0iG+y7SHf/ZZLVKXDyvDkVg=",
+        "owner": "dln",
+        "repo": "jj",
+        "rev": "b6608a03881542d6a8c98f659b80b57a27906096",
+        "type": "github"
+      },
+      "original": {
+        "owner": "dln",
+        "ref": "openssh",
+        "repo": "jj",
+        "type": "github"
+      }
+    },
     "neovim-nightly-overlay": {
       "inputs": {
         "flake-compat": "flake-compat_2",
@@ -227,15 +262,15 @@
         "git-hooks": "git-hooks",
         "hercules-ci-effects": "hercules-ci-effects",
         "neovim-src": "neovim-src",
-        "nixpkgs": "nixpkgs",
+        "nixpkgs": "nixpkgs_2",
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1735801710,
-        "narHash": "sha256-Z6Pl8LWYbPnqSinpSxrylfCpa4XkEVhzpfnfqiD0Kv8=",
+        "lastModified": 1735908283,
+        "narHash": "sha256-00Cd/KACX7Mr4ixz8rXksT4wteIStuExZIS22sA21ls=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "57a05ea557689b9d85dd594a9a26778b6842a18a",
+        "rev": "54dd5a7c0384fdcd11830e52f9896e457f189cb6",
         "type": "github"
       },
       "original": {
@@ -247,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1735771362,
-        "narHash": "sha256-+HxTD7TxeIySWsE++VKDWBMQK5OqTv391wADaZ8UDuo=",
+        "lastModified": 1735903221,
+        "narHash": "sha256-VrmQyDyR8y7x8QHSnX+Szs2ywZa7butk6lUdiNX5U3s=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "6dc0eb9f41e6453fe003dd3a28c58b701fd003c9",
+        "rev": "c26951b1d6d4d7ff8fe431e8bfb16744ff56af1c",
         "type": "github"
       },
       "original": {
@@ -262,18 +297,15 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1735617354,
-        "narHash": "sha256-5zJyv66q68QZJZsXtmjDBazGnF0id593VSy+8eSckoo=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "69b9a8c860bdbb977adfa9c5e817ccb717884182",
-        "type": "github"
+        "lastModified": 1735471104,
+        "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
+        "path": "/nix/store/8vz84mqgnm1gz5yk7hgnnb5gir5hjxas-source",
+        "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4",
+        "type": "path"
       },
       "original": {
-        "owner": "NixOS",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
+        "id": "nixpkgs",
+        "type": "indirect"
       }
     },
     "nixpkgs-stable": {
@@ -326,11 +358,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1735617354,
-        "narHash": "sha256-5zJyv66q68QZJZsXtmjDBazGnF0id593VSy+8eSckoo=",
+        "lastModified": 1735821806,
+        "narHash": "sha256-cuNapx/uQeCgeuhUhdck3JKbgpsml259sjUQnWM7zW8=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "69b9a8c860bdbb977adfa9c5e817ccb717884182",
+        "rev": "d6973081434f88088e5321f83ebafe9a1167c367",
         "type": "github"
       },
       "original": {
@@ -341,6 +373,22 @@
       }
     },
     "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1735821806,
+        "narHash": "sha256-cuNapx/uQeCgeuhUhdck3JKbgpsml259sjUQnWM7zW8=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "d6973081434f88088e5321f83ebafe9a1167c367",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "nixpkgs_3": {
       "locked": {
         "lastModified": 1735471104,
         "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
@@ -360,12 +408,34 @@
       "inputs": {
         "ghostty": "ghostty",
         "home-manager": "home-manager",
+        "jujutsu": "jujutsu",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
-        "nixpkgs": "nixpkgs_2",
+        "nixpkgs": "nixpkgs_3",
         "nixpkgs-stable": "nixpkgs-stable_2",
         "nixpkgs-unstable": "nixpkgs-unstable_2"
       }
     },
+    "rust-overlay": {
+      "inputs": {
+        "nixpkgs": [
+          "jujutsu",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1735871325,
+        "narHash": "sha256-6Ta5E4mhSfCP6LdkzkG2+BciLOCPeLKuYTJ6lOHW+mI=",
+        "owner": "oxalica",
+        "repo": "rust-overlay",
+        "rev": "a599f011db521766cbaf7c2f5874182485554f00",
+        "type": "github"
+      },
+      "original": {
+        "owner": "oxalica",
+        "repo": "rust-overlay",
+        "type": "github"
+      }
+    },
     "systems": {
       "locked": {
         "lastModified": 1681028828,
@@ -381,6 +451,21 @@
         "type": "github"
       }
     },
+    "systems_2": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
     "treefmt-nix": {
       "inputs": {
         "nixpkgs": [
@@ -389,11 +474,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735653038,
-        "narHash": "sha256-Q6xAmciTXDtZfUxf6c15QqtRR8BvX4edYPstF/uoqMk=",
+        "lastModified": 1735905407,
+        "narHash": "sha256-1hKMRIT+QZNWX46e4gIovoQ7H8QRb7803ZH4qSKI45o=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "56c0ecd79f7ba01a0ec027da015df751d6ca3ae7",
+        "rev": "29806abab803e498df96d82dd6f34b32eb8dd2c8",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index fc589f7..25d23c1 100644
--- a/flake.nix
+++ b/flake.nix
@@ -15,6 +15,7 @@
 
   inputs = {
     ghostty.url = "github:ghostty-org/ghostty";
+    jujutsu.url = "github:dln/jj/openssh";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index 34ec497..17f1fb4 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, ... }:
+{ config, inputs, pkgs, ... }:
 {
 
   home.packages = with pkgs; [
@@ -169,6 +169,6 @@
 
   programs.jujutsu = {
     enable = true;
-    package = pkgs.jujutsu-openssh;
+    package = inputs.jujutsu.packages.${pkgs.system}.default;
   };
 }
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 068b02a..3d0d4d6 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -1,4 +1,3 @@
 pkgs: {
   gnome-ssh-askpass4 = pkgs.callPackage ./gnome-ssh-askpass4 { };
-  jujutsu-openssh = pkgs.callPackage ./jujutsu-openssh { };
 }
diff --git a/pkgs/jujutsu-openssh/Cargo.lock b/pkgs/jujutsu-openssh/Cargo.lock
deleted file mode 100644
index 5146150..0000000
--- a/pkgs/jujutsu-openssh/Cargo.lock
+++ /dev/null
@@ -1,3838 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "addr2line"
-version = "0.22.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "adler2"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
-
-[[package]]
-name = "ahash"
-version = "0.8.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
-dependencies = [
- "cfg-if",
- "getrandom",
- "once_cell",
- "version_check",
- "zerocopy",
-]
-
-[[package]]
-name = "aho-corasick"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "allocator-api2"
-version = "0.2.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
-
-[[package]]
-name = "android-tzdata"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
-
-[[package]]
-name = "android_system_properties"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "anes"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
-
-[[package]]
-name = "anstream"
-version = "0.6.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
-dependencies = [
- "anstyle",
- "anstyle-parse",
- "anstyle-query",
- "anstyle-wincon",
- "colorchoice",
- "is_terminal_polyfill",
- "utf8parse",
-]
-
-[[package]]
-name = "anstyle"
-version = "1.0.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
-
-[[package]]
-name = "anstyle-parse"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
-dependencies = [
- "utf8parse",
-]
-
-[[package]]
-name = "anstyle-query"
-version = "1.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
-dependencies = [
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "anstyle-wincon"
-version = "3.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
-dependencies = [
- "anstyle",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "anyhow"
-version = "1.0.94"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
-
-[[package]]
-name = "arc-swap"
-version = "1.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
-
-[[package]]
-name = "arrayvec"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
-
-[[package]]
-name = "assert_cmd"
-version = "2.0.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d"
-dependencies = [
- "anstyle",
- "bstr",
- "doc-comment",
- "libc",
- "predicates",
- "predicates-core",
- "predicates-tree",
- "wait-timeout",
-]
-
-[[package]]
-name = "assert_matches"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
-
-[[package]]
-name = "async-trait"
-version = "0.1.83"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "autocfg"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
-
-[[package]]
-name = "backtrace"
-version = "0.3.73"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a"
-dependencies = [
- "addr2line",
- "cc",
- "cfg-if",
- "libc",
- "miniz_oxide 0.7.4",
- "object",
- "rustc-demangle",
-]
-
-[[package]]
-name = "bitflags"
-version = "2.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "blake2"
-version = "0.10.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
-dependencies = [
- "digest",
-]
-
-[[package]]
-name = "block-buffer"
-version = "0.10.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "bstr"
-version = "1.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22"
-dependencies = [
- "memchr",
- "regex-automata 0.4.8",
- "serde",
-]
-
-[[package]]
-name = "bumpalo"
-version = "3.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
-
-[[package]]
-name = "byteorder"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-
-[[package]]
-name = "bytes"
-version = "1.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "cassowary"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
-
-[[package]]
-name = "cast"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
-
-[[package]]
-name = "castaway"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5"
-dependencies = [
- "rustversion",
-]
-
-[[package]]
-name = "cc"
-version = "1.1.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b"
-dependencies = [
- "jobserver",
- "libc",
- "shlex",
-]
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "chrono"
-version = "0.4.38"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
-dependencies = [
- "android-tzdata",
- "iana-time-zone",
- "js-sys",
- "num-traits",
- "wasm-bindgen",
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "chrono-english"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f73d909da7eb4a7d88c679c3f5a1bc09d965754e0adb2e7627426cef96a00d6f"
-dependencies = [
- "chrono",
- "scanlex",
-]
-
-[[package]]
-name = "ciborium"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
-dependencies = [
- "ciborium-io",
- "ciborium-ll",
- "serde",
-]
-
-[[package]]
-name = "ciborium-io"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
-
-[[package]]
-name = "ciborium-ll"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
-dependencies = [
- "ciborium-io",
- "half",
-]
-
-[[package]]
-name = "clap"
-version = "4.5.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b"
-dependencies = [
- "clap_builder",
- "clap_derive",
-]
-
-[[package]]
-name = "clap-markdown"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ebc67e6266e14f8b31541c2f204724fa2ac7ad5c17d6f5908fbb92a60f42cff"
-dependencies = [
- "clap",
-]
-
-[[package]]
-name = "clap_builder"
-version = "4.5.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1"
-dependencies = [
- "anstream",
- "anstyle",
- "clap_lex",
- "strsim",
- "terminal_size",
-]
-
-[[package]]
-name = "clap_complete"
-version = "4.5.38"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9647a559c112175f17cf724dc72d3645680a883c58481332779192b0d8e7a01"
-dependencies = [
- "clap",
- "clap_lex",
- "is_executable",
- "shlex",
-]
-
-[[package]]
-name = "clap_complete_nushell"
-version = "4.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "315902e790cc6e5ddd20cbd313c1d0d49db77f191e149f96397230fb82a17677"
-dependencies = [
- "clap",
- "clap_complete",
-]
-
-[[package]]
-name = "clap_derive"
-version = "4.5.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "clap_lex"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
-
-[[package]]
-name = "clap_mangen"
-version = "0.2.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f17415fd4dfbea46e3274fcd8d368284519b358654772afb700dc2e8d2b24eeb"
-dependencies = [
- "clap",
- "roff",
-]
-
-[[package]]
-name = "clru"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59"
-
-[[package]]
-name = "colorchoice"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
-
-[[package]]
-name = "compact_str"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f"
-dependencies = [
- "castaway",
- "cfg-if",
- "itoa",
- "ryu",
- "static_assertions",
-]
-
-[[package]]
-name = "config"
-version = "0.13.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca"
-dependencies = [
- "async-trait",
- "lazy_static",
- "nom",
- "pathdiff",
- "serde",
- "toml",
-]
-
-[[package]]
-name = "console"
-version = "0.15.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
-dependencies = [
- "encode_unicode",
- "lazy_static",
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
-
-[[package]]
-name = "cpufeatures"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "crc32fast"
-version = "1.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "criterion"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
-dependencies = [
- "anes",
- "cast",
- "ciborium",
- "clap",
- "criterion-plot",
- "is-terminal",
- "itertools 0.10.5",
- "num-traits",
- "once_cell",
- "oorandom",
- "plotters",
- "rayon",
- "regex",
- "serde",
- "serde_derive",
- "serde_json",
- "tinytemplate",
- "walkdir",
-]
-
-[[package]]
-name = "criterion-plot"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
-dependencies = [
- "cast",
- "itertools 0.10.5",
-]
-
-[[package]]
-name = "crossbeam-channel"
-version = "0.5.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
-dependencies = [
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
-dependencies = [
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
-dependencies = [
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.8.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
-
-[[package]]
-name = "crossterm"
-version = "0.27.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
-dependencies = [
- "bitflags",
- "crossterm_winapi",
- "libc",
- "mio 0.8.11",
- "parking_lot",
- "signal-hook",
- "signal-hook-mio",
- "winapi",
-]
-
-[[package]]
-name = "crossterm_winapi"
-version = "0.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
-dependencies = [
- "winapi",
-]
-
-[[package]]
-name = "crunchy"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
-
-[[package]]
-name = "crypto-common"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
-dependencies = [
- "generic-array",
- "typenum",
-]
-
-[[package]]
-name = "dashmap"
-version = "6.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
- "hashbrown 0.14.5",
- "lock_api",
- "once_cell",
- "parking_lot_core",
-]
-
-[[package]]
-name = "diff"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
-
-[[package]]
-name = "difflib"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
-
-[[package]]
-name = "digest"
-version = "0.10.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
-dependencies = [
- "block-buffer",
- "crypto-common",
- "subtle",
-]
-
-[[package]]
-name = "dirs"
-version = "5.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
-dependencies = [
- "dirs-sys",
-]
-
-[[package]]
-name = "dirs-sys"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
-dependencies = [
- "libc",
- "option-ext",
- "redox_users",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "doc-comment"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
-
-[[package]]
-name = "dunce"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
-
-[[package]]
-name = "either"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
-
-[[package]]
-name = "encode_unicode"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
-
-[[package]]
-name = "encoding_rs"
-version = "0.8.34"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "equivalent"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
-
-[[package]]
-name = "errno"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
-dependencies = [
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "faster-hex"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "fastrand"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
-
-[[package]]
-name = "filetime"
-version = "0.2.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
-dependencies = [
- "cfg-if",
- "libc",
- "libredox",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "fixedbitset"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
-
-[[package]]
-name = "flate2"
-version = "1.0.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
-dependencies = [
- "crc32fast",
- "miniz_oxide 0.8.0",
-]
-
-[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-[[package]]
-name = "form_urlencoded"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
-dependencies = [
- "percent-encoding",
-]
-
-[[package]]
-name = "futures"
-version = "0.1.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678"
-
-[[package]]
-name = "futures"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-executor",
- "futures-io",
- "futures-sink",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-channel"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
-dependencies = [
- "futures-core",
- "futures-sink",
-]
-
-[[package]]
-name = "futures-core"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
-
-[[package]]
-name = "futures-executor"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
-dependencies = [
- "futures-core",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-io"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
-
-[[package]]
-name = "futures-macro"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "futures-sink"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
-
-[[package]]
-name = "futures-task"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
-
-[[package]]
-name = "futures-util"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
-dependencies = [
- "futures 0.1.31",
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-macro",
- "futures-sink",
- "futures-task",
- "memchr",
- "pin-project-lite",
- "pin-utils",
- "slab",
-]
-
-[[package]]
-name = "gen-protos"
-version = "0.24.0"
-dependencies = [
- "prost-build",
-]
-
-[[package]]
-name = "generic-array"
-version = "0.14.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
-dependencies = [
- "typenum",
- "version_check",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi",
-]
-
-[[package]]
-name = "gimli"
-version = "0.29.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
-
-[[package]]
-name = "git2"
-version = "0.19.0"
-source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=60e29ff0d#60e29ff0d84cdffd9f366455d32606e582a4c378"
-dependencies = [
- "bitflags",
- "libc",
- "libgit2-sys",
- "log",
- "openssl-probe",
- "openssl-sys",
- "url",
-]
-
-[[package]]
-name = "gix"
-version = "0.68.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b04c66359b5e17f92395abc433861df0edf48f39f3f590818d1d7217327dd6a1"
-dependencies = [
- "gix-actor",
- "gix-attributes",
- "gix-command",
- "gix-commitgraph",
- "gix-config",
- "gix-date",
- "gix-diff",
- "gix-discover",
- "gix-features",
- "gix-filter",
- "gix-fs",
- "gix-glob",
- "gix-hash",
- "gix-hashtable",
- "gix-ignore",
- "gix-index",
- "gix-lock",
- "gix-object",
- "gix-odb",
- "gix-pack",
- "gix-path",
- "gix-pathspec",
- "gix-ref",
- "gix-refspec",
- "gix-revision",
- "gix-revwalk",
- "gix-sec",
- "gix-submodule",
- "gix-tempfile",
- "gix-trace",
- "gix-traverse",
- "gix-url",
- "gix-utils",
- "gix-validate",
- "gix-worktree",
- "once_cell",
- "smallvec",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-actor"
-version = "0.33.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32b24171f514cef7bb4dfb72a0b06dacf609b33ba8ad2489d4c4559a03b7afb3"
-dependencies = [
- "bstr",
- "gix-date",
- "gix-utils",
- "itoa",
- "thiserror 2.0.4",
- "winnow",
-]
-
-[[package]]
-name = "gix-attributes"
-version = "0.23.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddf9bf852194c0edfe699a2d36422d2c1f28f73b7c6d446c3f0ccd3ba232cadc"
-dependencies = [
- "bstr",
- "gix-glob",
- "gix-path",
- "gix-quote",
- "gix-trace",
- "kstring",
- "smallvec",
- "thiserror 2.0.4",
- "unicode-bom",
-]
-
-[[package]]
-name = "gix-bitmap"
-version = "0.2.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d48b897b4bbc881aea994b4a5bbb340a04979d7be9089791304e04a9fbc66b53"
-dependencies = [
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-chunk"
-version = "0.4.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6ffbeb3a5c0b8b84c3fe4133a6f8c82fa962f4caefe8d0762eced025d3eb4f7"
-dependencies = [
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-command"
-version = "0.3.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d7d6b8f3a64453fd7e8191eb80b351eb7ac0839b40a1237cd2c137d5079fe53"
-dependencies = [
- "bstr",
- "gix-path",
- "gix-trace",
- "shell-words",
-]
-
-[[package]]
-name = "gix-commitgraph"
-version = "0.25.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8da6591a7868fb2b6dabddea6b09988b0b05e0213f938dbaa11a03dd7a48d85"
-dependencies = [
- "bstr",
- "gix-chunk",
- "gix-features",
- "gix-hash",
- "memmap2",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-config"
-version = "0.42.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6649b406ca1f99cb148959cf00468b231f07950f8ec438cc0903cda563606f19"
-dependencies = [
- "bstr",
- "gix-config-value",
- "gix-features",
- "gix-glob",
- "gix-path",
- "gix-ref",
- "gix-sec",
- "memchr",
- "once_cell",
- "smallvec",
- "thiserror 2.0.4",
- "unicode-bom",
- "winnow",
-]
-
-[[package]]
-name = "gix-config-value"
-version = "0.14.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e"
-dependencies = [
- "bitflags",
- "bstr",
- "gix-path",
- "libc",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-date"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d"
-dependencies = [
- "bstr",
- "itoa",
- "jiff",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-diff"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a327be31a392144b60ab0b1c863362c32a1c8f7effdfa2141d5d5b6b916ef3bf"
-dependencies = [
- "bstr",
- "gix-command",
- "gix-filter",
- "gix-fs",
- "gix-hash",
- "gix-object",
- "gix-path",
- "gix-tempfile",
- "gix-trace",
- "gix-traverse",
- "gix-worktree",
- "imara-diff",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-discover"
-version = "0.37.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83bf6dfa4e266a4a9becb4d18fc801f92c3f7cc6c433dd86fdadbcf315ffb6ef"
-dependencies = [
- "bstr",
- "dunce",
- "gix-fs",
- "gix-hash",
- "gix-path",
- "gix-ref",
- "gix-sec",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-features"
-version = "0.39.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d85d673f2e022a340dba4713bed77ef2cf4cd737d2f3e0f159d45e0935fd81f"
-dependencies = [
- "crc32fast",
- "crossbeam-channel",
- "flate2",
- "gix-hash",
- "gix-trace",
- "gix-utils",
- "libc",
- "once_cell",
- "parking_lot",
- "prodash",
- "sha1_smol",
- "thiserror 2.0.4",
- "walkdir",
-]
-
-[[package]]
-name = "gix-filter"
-version = "0.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5108cc58d58b27df10ac4de7f31b2eb96d588a33e5eba23739b865f5d8db7995"
-dependencies = [
- "bstr",
- "encoding_rs",
- "gix-attributes",
- "gix-command",
- "gix-hash",
- "gix-object",
- "gix-packetline-blocking",
- "gix-path",
- "gix-quote",
- "gix-trace",
- "gix-utils",
- "smallvec",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-fs"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34740384d8d763975858fa2c176b68652a6fcc09f616e24e3ce967b0d370e4d8"
-dependencies = [
- "fastrand",
- "gix-features",
- "gix-utils",
-]
-
-[[package]]
-name = "gix-glob"
-version = "0.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aaf69a6bec0a3581567484bf99a4003afcaf6c469fd4214352517ea355cf3435"
-dependencies = [
- "bitflags",
- "bstr",
- "gix-features",
- "gix-path",
-]
-
-[[package]]
-name = "gix-hash"
-version = "0.15.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b5eccc17194ed0e67d49285e4853307e4147e95407f91c1c3e4a13ba9f4e4ce"
-dependencies = [
- "faster-hex",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-hashtable"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ef65b256631078ef733bc5530c4e6b1c2e7d5c2830b75d4e9034ab3997d18fe"
-dependencies = [
- "gix-hash",
- "hashbrown 0.14.5",
- "parking_lot",
-]
-
-[[package]]
-name = "gix-ignore"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6b1fb24d2a4af0aa7438e2771d60c14a80cf2c9bd55c29cf1712b841f05bb8a"
-dependencies = [
- "bstr",
- "gix-glob",
- "gix-path",
- "gix-trace",
- "unicode-bom",
-]
-
-[[package]]
-name = "gix-index"
-version = "0.37.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "270645fd20556b64c8ffa1540d921b281e6994413a0ca068596f97e9367a257a"
-dependencies = [
- "bitflags",
- "bstr",
- "filetime",
- "fnv",
- "gix-bitmap",
- "gix-features",
- "gix-fs",
- "gix-hash",
- "gix-lock",
- "gix-object",
- "gix-traverse",
- "gix-utils",
- "gix-validate",
- "hashbrown 0.14.5",
- "itoa",
- "libc",
- "memmap2",
- "rustix",
- "smallvec",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-lock"
-version = "15.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5102acdf4acae2644e38dbbd18cdfba9597a218f7d85f810fe5430207e03c2de"
-dependencies = [
- "gix-tempfile",
- "gix-utils",
- "thiserror 1.0.69",
-]
-
-[[package]]
-name = "gix-object"
-version = "0.46.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65d93e2bbfa83a307e47f45e45de7b6c04d7375a8bd5907b215f4bf45237d879"
-dependencies = [
- "bstr",
- "gix-actor",
- "gix-date",
- "gix-features",
- "gix-hash",
- "gix-hashtable",
- "gix-utils",
- "gix-validate",
- "itoa",
- "smallvec",
- "thiserror 2.0.4",
- "winnow",
-]
-
-[[package]]
-name = "gix-odb"
-version = "0.65.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93bed6e1b577c25a6bb8e6ecbf4df525f29a671ddf5f2221821a56a8dbeec4e3"
-dependencies = [
- "arc-swap",
- "gix-date",
- "gix-features",
- "gix-fs",
- "gix-hash",
- "gix-hashtable",
- "gix-object",
- "gix-pack",
- "gix-path",
- "gix-quote",
- "parking_lot",
- "tempfile",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-pack"
-version = "0.55.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b91fec04d359544fecbb8e85117ec746fbaa9046ebafcefb58cb74f20dc76d4"
-dependencies = [
- "clru",
- "gix-chunk",
- "gix-features",
- "gix-hash",
- "gix-hashtable",
- "gix-object",
- "gix-path",
- "memmap2",
- "smallvec",
- "thiserror 2.0.4",
- "uluru",
-]
-
-[[package]]
-name = "gix-packetline-blocking"
-version = "0.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce9004ce1bc00fd538b11c1ec8141a1558fb3af3d2b7ac1ac5c41881f9e42d2a"
-dependencies = [
- "bstr",
- "faster-hex",
- "gix-trace",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-path"
-version = "0.10.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7"
-dependencies = [
- "bstr",
- "gix-trace",
- "home",
- "once_cell",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-pathspec"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c472dfbe4a4e96fcf7efddcd4771c9037bb4fdea2faaabf2f4888210c75b81e"
-dependencies = [
- "bitflags",
- "bstr",
- "gix-attributes",
- "gix-config-value",
- "gix-glob",
- "gix-path",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-quote"
-version = "0.4.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64a1e282216ec2ab2816cd57e6ed88f8009e634aec47562883c05ac8a7009a63"
-dependencies = [
- "bstr",
- "gix-utils",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-ref"
-version = "0.49.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1eae462723686272a58f49501015ef7c0d67c3e042c20049d8dd9c7eff92efde"
-dependencies = [
- "gix-actor",
- "gix-features",
- "gix-fs",
- "gix-hash",
- "gix-lock",
- "gix-object",
- "gix-path",
- "gix-tempfile",
- "gix-utils",
- "gix-validate",
- "memmap2",
- "thiserror 2.0.4",
- "winnow",
-]
-
-[[package]]
-name = "gix-refspec"
-version = "0.27.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00c056bb747868c7eb0aeb352c9f9181ab8ca3d0a2550f16470803500c6c413d"
-dependencies = [
- "bstr",
- "gix-hash",
- "gix-revision",
- "gix-validate",
- "smallvec",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-revision"
-version = "0.31.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44488e0380847967bc3e3cacd8b22652e02ea1eb58afb60edd91847695cd2d8d"
-dependencies = [
- "bstr",
- "gix-commitgraph",
- "gix-date",
- "gix-hash",
- "gix-object",
- "gix-revwalk",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-revwalk"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "510026fc32f456f8f067d8f37c34088b97a36b2229d88a6a5023ef179fcb109d"
-dependencies = [
- "gix-commitgraph",
- "gix-date",
- "gix-hash",
- "gix-hashtable",
- "gix-object",
- "smallvec",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-sec"
-version = "0.10.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6"
-dependencies = [
- "bitflags",
- "gix-path",
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "gix-submodule"
-version = "0.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2455f8c0fcb6ebe2a6e83c8f522d30615d763eb2ef7a23c7d929f9476e89f5c"
-dependencies = [
- "bstr",
- "gix-config",
- "gix-path",
- "gix-pathspec",
- "gix-refspec",
- "gix-url",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-tempfile"
-version = "15.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2feb86ef094cc77a4a9a5afbfe5de626897351bbbd0de3cb9314baf3049adb82"
-dependencies = [
- "dashmap",
- "gix-fs",
- "libc",
- "once_cell",
- "parking_lot",
- "tempfile",
-]
-
-[[package]]
-name = "gix-trace"
-version = "0.1.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952"
-
-[[package]]
-name = "gix-traverse"
-version = "0.43.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ff2ec9f779680f795363db1c563168b32b8d6728ec58564c628e85c92d29faf"
-dependencies = [
- "bitflags",
- "gix-commitgraph",
- "gix-date",
- "gix-hash",
- "gix-hashtable",
- "gix-object",
- "gix-revwalk",
- "smallvec",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-url"
-version = "0.28.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e09f97db3618fb8e473d7d97e77296b50aaee0ddcd6a867f07443e3e87391099"
-dependencies = [
- "bstr",
- "gix-features",
- "gix-path",
- "thiserror 2.0.4",
- "url",
-]
-
-[[package]]
-name = "gix-utils"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f"
-dependencies = [
- "fastrand",
- "unicode-normalization",
-]
-
-[[package]]
-name = "gix-validate"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937"
-dependencies = [
- "bstr",
- "thiserror 2.0.4",
-]
-
-[[package]]
-name = "gix-worktree"
-version = "0.38.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "756dbbe15188fa22540d5eab941f8f9cf511a5364d5aec34c88083c09f4bea13"
-dependencies = [
- "bstr",
- "gix-attributes",
- "gix-features",
- "gix-fs",
- "gix-glob",
- "gix-hash",
- "gix-ignore",
- "gix-index",
- "gix-object",
- "gix-path",
- "gix-validate",
-]
-
-[[package]]
-name = "glob"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
-
-[[package]]
-name = "globset"
-version = "0.4.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19"
-dependencies = [
- "aho-corasick",
- "bstr",
- "log",
- "regex-automata 0.4.8",
- "regex-syntax 0.8.5",
-]
-
-[[package]]
-name = "half"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
-dependencies = [
- "cfg-if",
- "crunchy",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.14.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
-dependencies = [
- "ahash",
- "allocator-api2",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.15.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
-
-[[package]]
-name = "heck"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
-
-[[package]]
-name = "hermit-abi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
-
-[[package]]
-name = "hermit-abi"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
-
-[[package]]
-name = "hex"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-
-[[package]]
-name = "home"
-version = "0.5.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
-dependencies = [
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "iana-time-zone"
-version = "0.1.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
-dependencies = [
- "android_system_properties",
- "core-foundation-sys",
- "iana-time-zone-haiku",
- "js-sys",
- "wasm-bindgen",
- "windows-core",
-]
-
-[[package]]
-name = "iana-time-zone-haiku"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "idna"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
-dependencies = [
- "unicode-bidi",
- "unicode-normalization",
-]
-
-[[package]]
-name = "ignore"
-version = "0.4.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b"
-dependencies = [
- "crossbeam-deque",
- "globset",
- "log",
- "memchr",
- "regex-automata 0.4.8",
- "same-file",
- "walkdir",
- "winapi-util",
-]
-
-[[package]]
-name = "imara-diff"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc9da1a252bd44cd341657203722352efc9bc0c847d06ea6d2dc1cd1135e0a01"
-dependencies = [
- "ahash",
- "hashbrown 0.14.5",
-]
-
-[[package]]
-name = "indexmap"
-version = "2.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
-dependencies = [
- "equivalent",
- "hashbrown 0.15.2",
-]
-
-[[package]]
-name = "indoc"
-version = "2.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
-
-[[package]]
-name = "insta"
-version = "1.41.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e9ffc4d4892617c50a928c52b2961cb5174b6fc6ebf252b2fac9d21955c48b8"
-dependencies = [
- "console",
- "lazy_static",
- "linked-hash-map",
- "regex",
- "similar",
-]
-
-[[package]]
-name = "is-terminal"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
-dependencies = [
- "hermit-abi 0.4.0",
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "is_executable"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2"
-dependencies = [
- "winapi",
-]
-
-[[package]]
-name = "is_terminal_polyfill"
-version = "1.70.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
-
-[[package]]
-name = "itertools"
-version = "0.10.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itertools"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itertools"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itoa"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
-
-[[package]]
-name = "jiff"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "437651126da47900d4d70255ab15f5c69510ca4e0d88c9f01b5b8d41a45c3a9b"
-dependencies = [
- "jiff-tzdb-platform",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "jiff-tzdb"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05fac328b3df1c0f18a3c2ab6cb7e06e4e549f366017d796e3e66b6d6889abe6"
-
-[[package]]
-name = "jiff-tzdb-platform"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8da387d5feaf355954c2c122c194d6df9c57d865125a67984bb453db5336940"
-dependencies = [
- "jiff-tzdb",
-]
-
-[[package]]
-name = "jj-cli"
-version = "0.24.0"
-dependencies = [
- "anyhow",
- "assert_cmd",
- "assert_matches",
- "async-trait",
- "bstr",
- "chrono",
- "clap",
- "clap-markdown",
- "clap_complete",
- "clap_complete_nushell",
- "clap_mangen",
- "config",
- "criterion",
- "crossterm",
- "dirs",
- "dunce",
- "futures 0.3.31",
- "git2",
- "gix",
- "glob",
- "indexmap",
- "indoc",
- "insta",
- "itertools 0.13.0",
- "jj-cli",
- "jj-lib",
- "libc",
- "maplit",
- "minus",
- "once_cell",
- "pest",
- "pest_derive",
- "pollster",
- "rayon",
- "regex",
- "rpassword",
- "sapling-renderdag",
- "scm-record",
- "serde",
- "serde_json",
- "slab",
- "strsim",
- "tempfile",
- "test-case",
- "testutils",
- "textwrap",
- "thiserror 2.0.4",
- "timeago",
- "toml_edit",
- "tracing",
- "tracing-chrome",
- "tracing-subscriber",
- "unicode-width",
-]
-
-[[package]]
-name = "jj-lib"
-version = "0.24.0"
-dependencies = [
- "assert_matches",
- "async-trait",
- "blake2",
- "bstr",
- "chrono",
- "chrono-english",
- "clru",
- "config",
- "criterion",
- "digest",
- "either",
- "futures 0.3.31",
- "git2",
- "gix",
- "glob",
- "hashbrown 0.15.2",
- "hex",
- "ignore",
- "indexmap",
- "indoc",
- "insta",
- "itertools 0.13.0",
- "jj-lib-proc-macros",
- "maplit",
- "num_cpus",
- "once_cell",
- "pest",
- "pest_derive",
- "pollster",
- "pretty_assertions",
- "prost",
- "rand",
- "rand_chacha",
- "rayon",
- "ref-cast",
- "regex",
- "rustix",
- "same-file",
- "sapling-renderdag",
- "serde",
- "serde_json",
- "smallvec",
- "strsim",
- "tempfile",
- "test-case",
- "testutils",
- "thiserror 2.0.4",
- "tokio",
- "toml_edit",
- "tracing",
- "version_check",
- "watchman_client",
- "whoami",
- "winreg",
- "zstd",
-]
-
-[[package]]
-name = "jj-lib-proc-macros"
-version = "0.24.0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "jobserver"
-version = "0.1.32"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "js-sys"
-version = "0.3.70"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "kstring"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1"
-dependencies = [
- "static_assertions",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
-
-[[package]]
-name = "libc"
-version = "0.2.167"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc"
-
-[[package]]
-name = "libgit2-sys"
-version = "0.17.0+1.8.1"
-source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=60e29ff0d#60e29ff0d84cdffd9f366455d32606e582a4c378"
-dependencies = [
- "cc",
- "libc",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
-]
-
-[[package]]
-name = "libredox"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
-dependencies = [
- "bitflags",
- "libc",
- "redox_syscall",
-]
-
-[[package]]
-name = "libz-sys"
-version = "1.1.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "linked-hash-map"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
-
-[[package]]
-name = "lock_api"
-version = "0.4.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
-dependencies = [
- "autocfg",
- "scopeguard",
-]
-
-[[package]]
-name = "log"
-version = "0.4.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
-
-[[package]]
-name = "lru"
-version = "0.12.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
-dependencies = [
- "hashbrown 0.14.5",
-]
-
-[[package]]
-name = "maplit"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
-
-[[package]]
-name = "matchers"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
-dependencies = [
- "regex-automata 0.1.10",
-]
-
-[[package]]
-name = "memchr"
-version = "2.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
-
-[[package]]
-name = "memmap2"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "minimal-lexical"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-
-[[package]]
-name = "miniz_oxide"
-version = "0.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
-dependencies = [
- "adler",
-]
-
-[[package]]
-name = "miniz_oxide"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
-dependencies = [
- "adler2",
-]
-
-[[package]]
-name = "minus"
-version = "5.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "093bd0520d2a37943566a73750e6d44094dac75d66a978d1f0d97ffc78686832"
-dependencies = [
- "crossbeam-channel",
- "crossterm",
- "once_cell",
- "parking_lot",
- "regex",
- "textwrap",
- "thiserror 1.0.69",
-]
-
-[[package]]
-name = "mio"
-version = "0.8.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
-dependencies = [
- "libc",
- "log",
- "wasi",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "mio"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
-dependencies = [
- "hermit-abi 0.3.9",
- "libc",
- "wasi",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "multimap"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
-
-[[package]]
-name = "nom"
-version = "7.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
-dependencies = [
- "memchr",
- "minimal-lexical",
-]
-
-[[package]]
-name = "nu-ansi-term"
-version = "0.46.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
-dependencies = [
- "overload",
- "winapi",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
-dependencies = [
- "hermit-abi 0.3.9",
- "libc",
-]
-
-[[package]]
-name = "object"
-version = "0.36.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.20.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
-dependencies = [
- "parking_lot_core",
-]
-
-[[package]]
-name = "oorandom"
-version = "11.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-
-[[package]]
-name = "openssl-src"
-version = "300.3.2+3.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.103"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
-dependencies = [
- "cc",
- "libc",
- "openssl-src",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "option-ext"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
-
-[[package]]
-name = "overload"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
-
-[[package]]
-name = "parking_lot"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
-dependencies = [
- "lock_api",
- "parking_lot_core",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.9.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
-dependencies = [
- "cfg-if",
- "libc",
- "redox_syscall",
- "smallvec",
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "paste"
-version = "1.0.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
-
-[[package]]
-name = "pathdiff"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
-
-[[package]]
-name = "percent-encoding"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
-
-[[package]]
-name = "pest"
-version = "2.7.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
-dependencies = [
- "memchr",
- "thiserror 1.0.69",
- "ucd-trie",
-]
-
-[[package]]
-name = "pest_derive"
-version = "2.7.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd"
-dependencies = [
- "pest",
- "pest_generator",
-]
-
-[[package]]
-name = "pest_generator"
-version = "2.7.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e"
-dependencies = [
- "pest",
- "pest_meta",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "pest_meta"
-version = "2.7.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d"
-dependencies = [
- "once_cell",
- "pest",
- "sha2",
-]
-
-[[package]]
-name = "petgraph"
-version = "0.6.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
-dependencies = [
- "fixedbitset",
- "indexmap",
-]
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
-
-[[package]]
-name = "pin-utils"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-[[package]]
-name = "pkg-config"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
-
-[[package]]
-name = "plotters"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3"
-dependencies = [
- "num-traits",
- "plotters-backend",
- "plotters-svg",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "plotters-backend"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7"
-
-[[package]]
-name = "plotters-svg"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705"
-dependencies = [
- "plotters-backend",
-]
-
-[[package]]
-name = "pollster"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2"
-
-[[package]]
-name = "ppv-lite86"
-version = "0.2.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
-dependencies = [
- "zerocopy",
-]
-
-[[package]]
-name = "predicates"
-version = "3.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97"
-dependencies = [
- "anstyle",
- "difflib",
- "predicates-core",
-]
-
-[[package]]
-name = "predicates-core"
-version = "1.0.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931"
-
-[[package]]
-name = "predicates-tree"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13"
-dependencies = [
- "predicates-core",
- "termtree",
-]
-
-[[package]]
-name = "pretty_assertions"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
-dependencies = [
- "diff",
- "yansi",
-]
-
-[[package]]
-name = "prettyplease"
-version = "0.2.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
-dependencies = [
- "proc-macro2",
- "syn",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "prodash"
-version = "29.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a266d8d6020c61a437be704c5e618037588e1985c7dbb7bf8d265db84cffe325"
-dependencies = [
- "log",
- "parking_lot",
-]
-
-[[package]]
-name = "prost"
-version = "0.12.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
-dependencies = [
- "bytes",
- "prost-derive",
-]
-
-[[package]]
-name = "prost-build"
-version = "0.12.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
-dependencies = [
- "bytes",
- "heck",
- "itertools 0.12.1",
- "log",
- "multimap",
- "once_cell",
- "petgraph",
- "prettyplease",
- "prost",
- "prost-types",
- "regex",
- "syn",
- "tempfile",
-]
-
-[[package]]
-name = "prost-derive"
-version = "0.12.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
-dependencies = [
- "anyhow",
- "itertools 0.12.1",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "prost-types"
-version = "0.12.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
-dependencies = [
- "prost",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "rand"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-dependencies = [
- "libc",
- "rand_chacha",
- "rand_core",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-dependencies = [
- "ppv-lite86",
- "rand_core",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-dependencies = [
- "getrandom",
-]
-
-[[package]]
-name = "ratatui"
-version = "0.27.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d16546c5b5962abf8ce6e2881e722b4e0ae3b6f1a08a26ae3573c55853ca68d3"
-dependencies = [
- "bitflags",
- "cassowary",
- "compact_str",
- "crossterm",
- "itertools 0.13.0",
- "lru",
- "paste",
- "stability",
- "strum",
- "strum_macros",
- "unicode-segmentation",
- "unicode-truncate",
- "unicode-width",
-]
-
-[[package]]
-name = "rayon"
-version = "1.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
-dependencies = [
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
-dependencies = [
- "crossbeam-deque",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
-dependencies = [
- "bitflags",
-]
-
-[[package]]
-name = "redox_users"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
-dependencies = [
- "getrandom",
- "libredox",
- "thiserror 1.0.69",
-]
-
-[[package]]
-name = "ref-cast"
-version = "1.0.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931"
-dependencies = [
- "ref-cast-impl",
-]
-
-[[package]]
-name = "ref-cast-impl"
-version = "1.0.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "regex"
-version = "1.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata 0.4.8",
- "regex-syntax 0.8.5",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-dependencies = [
- "regex-syntax 0.6.29",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax 0.8.5",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.6.29"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
-
-[[package]]
-name = "roff"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3"
-
-[[package]]
-name = "rpassword"
-version = "7.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f"
-dependencies = [
- "libc",
- "rtoolbox",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "rtoolbox"
-version = "0.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e"
-dependencies = [
- "libc",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "rustc-demangle"
-version = "0.1.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
-
-[[package]]
-name = "rustix"
-version = "0.38.41"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6"
-dependencies = [
- "bitflags",
- "errno",
- "libc",
- "linux-raw-sys",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "rustversion"
-version = "1.0.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
-
-[[package]]
-name = "ryu"
-version = "1.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
-
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
-name = "sapling-renderdag"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edffb89cab87bd0901c5749d576f5d37a1f34e05160e936f463f4e94cc447b61"
-dependencies = [
- "bitflags",
-]
-
-[[package]]
-name = "scanlex"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db"
-
-[[package]]
-name = "scm-record"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d344fd2a7dd1580458c344f977c64ce7b1b1ad1d4f959ab6d2ca2cbab44de69"
-dependencies = [
- "cassowary",
- "crossterm",
- "num-traits",
- "ratatui",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
- "tracing",
- "unicode-width",
-]
-
-[[package]]
-name = "scopeguard"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-
-[[package]]
-name = "serde"
-version = "1.0.215"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_bser"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56b4bcc15e42e5b5ae16c6f75582bef80d36c6ffe2c03b1b5317754b38f8717"
-dependencies = [
- "anyhow",
- "byteorder",
- "bytes",
- "serde",
- "serde_bytes",
- "thiserror 1.0.69",
-]
-
-[[package]]
-name = "serde_bytes"
-version = "0.11.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.215"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.133"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
-dependencies = [
- "itoa",
- "memchr",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "serde_spanned"
-version = "0.6.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "sha1_smol"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d"
-
-[[package]]
-name = "sha2"
-version = "0.10.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
-dependencies = [
- "cfg-if",
- "cpufeatures",
- "digest",
-]
-
-[[package]]
-name = "sharded-slab"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
-dependencies = [
- "lazy_static",
-]
-
-[[package]]
-name = "shell-words"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
-
-[[package]]
-name = "shlex"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
-
-[[package]]
-name = "signal-hook"
-version = "0.3.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
-dependencies = [
- "libc",
- "signal-hook-registry",
-]
-
-[[package]]
-name = "signal-hook-mio"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd"
-dependencies = [
- "libc",
- "mio 0.8.11",
- "signal-hook",
-]
-
-[[package]]
-name = "signal-hook-registry"
-version = "1.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "similar"
-version = "2.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e"
-
-[[package]]
-name = "slab"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "smallvec"
-version = "1.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
-
-[[package]]
-name = "smawk"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
-
-[[package]]
-name = "socket2"
-version = "0.5.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
-dependencies = [
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "stability"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac"
-dependencies = [
- "quote",
- "syn",
-]
-
-[[package]]
-name = "static_assertions"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-
-[[package]]
-name = "strsim"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
-
-[[package]]
-name = "strum"
-version = "0.26.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
-dependencies = [
- "strum_macros",
-]
-
-[[package]]
-name = "strum_macros"
-version = "0.26.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "rustversion",
- "syn",
-]
-
-[[package]]
-name = "subtle"
-version = "2.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
-
-[[package]]
-name = "syn"
-version = "2.0.90"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "tempfile"
-version = "3.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c"
-dependencies = [
- "cfg-if",
- "fastrand",
- "once_cell",
- "rustix",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "terminal_size"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef"
-dependencies = [
- "rustix",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "termtree"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76"
-
-[[package]]
-name = "test-case"
-version = "3.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8"
-dependencies = [
- "test-case-macros",
-]
-
-[[package]]
-name = "test-case-core"
-version = "3.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f"
-dependencies = [
- "cfg-if",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "test-case-macros"
-version = "3.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "test-case-core",
-]
-
-[[package]]
-name = "testutils"
-version = "0.24.0"
-dependencies = [
- "async-trait",
- "config",
- "futures 0.3.31",
- "git2",
- "hex",
- "itertools 0.13.0",
- "jj-lib",
- "pollster",
- "rand",
- "tempfile",
-]
-
-[[package]]
-name = "textwrap"
-version = "0.16.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
-dependencies = [
- "smawk",
- "unicode-linebreak",
- "unicode-width",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
-dependencies = [
- "thiserror-impl 1.0.69",
-]
-
-[[package]]
-name = "thiserror"
-version = "2.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490"
-dependencies = [
- "thiserror-impl 2.0.4",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "2.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "thread_local"
-version = "1.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
-dependencies = [
- "cfg-if",
- "once_cell",
-]
-
-[[package]]
-name = "timeago"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1710e589de0a76aaf295cd47a6699f6405737dbfd3cf2b75c92d000b548d0e6"
-
-[[package]]
-name = "tinytemplate"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
-dependencies = [
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "tinyvec"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
-dependencies = [
- "tinyvec_macros",
-]
-
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-[[package]]
-name = "tokio"
-version = "1.42.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551"
-dependencies = [
- "backtrace",
- "bytes",
- "libc",
- "mio 1.0.2",
- "parking_lot",
- "pin-project-lite",
- "signal-hook-registry",
- "socket2",
- "tokio-macros",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "tokio-macros"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "tokio-util"
-version = "0.6.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507"
-dependencies = [
- "bytes",
- "futures-core",
- "futures-io",
- "futures-sink",
- "log",
- "pin-project-lite",
- "slab",
- "tokio",
-]
-
-[[package]]
-name = "toml"
-version = "0.5.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "toml_datetime"
-version = "0.6.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.22.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
-dependencies = [
- "indexmap",
- "serde",
- "serde_spanned",
- "toml_datetime",
- "winnow",
-]
-
-[[package]]
-name = "tracing"
-version = "0.1.41"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
-dependencies = [
- "pin-project-lite",
- "tracing-attributes",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-attributes"
-version = "0.1.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "tracing-chrome"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724"
-dependencies = [
- "serde_json",
- "tracing-core",
- "tracing-subscriber",
-]
-
-[[package]]
-name = "tracing-core"
-version = "0.1.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
-dependencies = [
- "once_cell",
- "valuable",
-]
-
-[[package]]
-name = "tracing-log"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
-dependencies = [
- "log",
- "once_cell",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-subscriber"
-version = "0.3.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
-dependencies = [
- "matchers",
- "nu-ansi-term",
- "once_cell",
- "regex",
- "sharded-slab",
- "smallvec",
- "thread_local",
- "tracing",
- "tracing-core",
- "tracing-log",
-]
-
-[[package]]
-name = "typenum"
-version = "1.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
-
-[[package]]
-name = "ucd-trie"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
-
-[[package]]
-name = "uluru"
-version = "3.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da"
-dependencies = [
- "arrayvec",
-]
-
-[[package]]
-name = "unicode-bidi"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
-
-[[package]]
-name = "unicode-bom"
-version = "2.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217"
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "unicode-linebreak"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
-
-[[package]]
-name = "unicode-normalization"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
-dependencies = [
- "tinyvec",
-]
-
-[[package]]
-name = "unicode-segmentation"
-version = "1.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
-
-[[package]]
-name = "unicode-truncate"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf"
-dependencies = [
- "itertools 0.13.0",
- "unicode-segmentation",
- "unicode-width",
-]
-
-[[package]]
-name = "unicode-width"
-version = "0.1.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
-
-[[package]]
-name = "url"
-version = "2.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
-dependencies = [
- "form_urlencoded",
- "idna",
- "percent-encoding",
-]
-
-[[package]]
-name = "utf8parse"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
-
-[[package]]
-name = "valuable"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
-
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
-[[package]]
-name = "version_check"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-
-[[package]]
-name = "wait-timeout"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "walkdir"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
-dependencies = [
- "same-file",
- "winapi-util",
-]
-
-[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-
-[[package]]
-name = "wasite"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.93"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
-dependencies = [
- "cfg-if",
- "once_cell",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.93"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
-dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.93"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.93"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.93"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
-
-[[package]]
-name = "watchman_client"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88bc4c9bb443a7aae10d4fa7807bffc397805315e2305288c90c80e2f66cfb52"
-dependencies = [
- "anyhow",
- "bytes",
- "futures 0.3.31",
- "maplit",
- "serde",
- "serde_bser",
- "thiserror 1.0.69",
- "tokio",
- "tokio-util",
- "winapi",
-]
-
-[[package]]
-name = "web-sys"
-version = "0.3.70"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "whoami"
-version = "1.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d"
-dependencies = [
- "redox_syscall",
- "wasite",
- "web-sys",
-]
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-util"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
-dependencies = [
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-
-[[package]]
-name = "windows-core"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.59.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
-dependencies = [
- "windows_aarch64_gnullvm 0.52.6",
- "windows_aarch64_msvc 0.52.6",
- "windows_i686_gnu 0.52.6",
- "windows_i686_gnullvm",
- "windows_i686_msvc 0.52.6",
- "windows_x86_64_gnu 0.52.6",
- "windows_x86_64_gnullvm 0.52.6",
- "windows_x86_64_msvc 0.52.6",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
-
-[[package]]
-name = "winnow"
-version = "0.6.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "winreg"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
-dependencies = [
- "cfg-if",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "yansi"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
-
-[[package]]
-name = "zerocopy"
-version = "0.7.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
-dependencies = [
- "byteorder",
- "zerocopy-derive",
-]
-
-[[package]]
-name = "zerocopy-derive"
-version = "0.7.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "zstd"
-version = "0.12.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c"
-dependencies = [
- "zstd-safe",
-]
-
-[[package]]
-name = "zstd-safe"
-version = "6.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581"
-dependencies = [
- "libc",
- "zstd-sys",
-]
-
-[[package]]
-name = "zstd-sys"
-version = "2.0.13+zstd.1.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
-dependencies = [
- "cc",
- "pkg-config",
-]
diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix
deleted file mode 100644
index 1d3ec6a..0000000
--- a/pkgs/jujutsu-openssh/default.nix
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  lib,
-  fetchFromGitHub,
-  rustPlatform,
-  pkg-config,
-  openssl,
-  gzip,
-  libgit2,
-  openssh,
-  zstd,
-  installShellFiles,
-  nix-update-script,
-  testers,
-  jujutsu-openssh,
-}:
-
-rustPlatform.buildRustPackage rec {
-  pname = "jujutsu-openssh";
-  version = "0.24.0+pr3191.openssh";
-
-  src = fetchFromGitHub {
-    owner = "dln";
-    repo = "jj";
-    rev = "b6608a03881542d6a8c98f659b80b57a27906096"; # https://github.com/dln/jj/tree/openssh
-    hash = "sha256-kUfwjdQGq0UcIlVnNf/z0iG+y7SHf/ZZLVKXDyvDkVg=";
-  };
-
-  cargoLock.lockFile = ./Cargo.lock;
-  cargoLock.outputHashes = {
-    "git2-0.19.0" = "sha256-fV8dFChGeDhb20bMyqefpAD5/+raQQ2sMdkEtlA1jaE=";
-  };
-
-  cargoBuildFlags = [
-    "--bin"
-    "jj"
-  ]; # don't install the fake editors
-  useNextest = false; # nextest is the upstream integration framework, but is problematic for test skipping
-  ZSTD_SYS_USE_PKG_CONFIG = "1"; # disable vendored zlib
-
-  nativeBuildInputs = [
-    gzip
-    installShellFiles
-    pkg-config
-  ];
-
-  buildInputs = [
-    openssl
-    zstd
-    libgit2
-    openssh
-  ];
-
-  postInstall = ''
-    $out/bin/jj util mangen > ./jj.1
-    installManPage ./jj.1
-
-    installShellCompletion --cmd jj \
-      --bash <($out/bin/jj util completion bash) \
-      --fish <($out/bin/jj util completion fish) \
-      --zsh <($out/bin/jj util completion zsh)
-  '';
-
-  checkFlags = [
-    # signing tests spin up an ssh-agent and do git checkouts
-    "--skip=test_ssh_signing"
-  ];
-
-  passthru = {
-    updateScript = nix-update-script { };
-    tests = {
-      version = testers.testVersion {
-        package = jujutsu-openssh;
-        command = "jj --version";
-      };
-    };
-  };
-
-  meta = with lib; {
-    description = "Git-compatible DVCS that is both simple and powerful";
-    homepage = "https://github.com/martinvonz/jj";
-    changelog = "https://github.com/martinvonz/jj/blob/v${version}/CHANGELOG.md";
-    license = licenses.asl20;
-    maintainers = with maintainers; [
-      _0x4A6F
-      thoughtpolice
-    ];
-    mainProgram = "jj";
-  };
-}

From 4766311654b4130ab6874d8e3d76c3b7cbfec7cf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 16:11:27 +0100
Subject: [PATCH 551/656] ghostty: add desktop entries for secondary
 (condensed) terminals

---
 home/common/ghostty.nix | 40 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 39 insertions(+), 1 deletion(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 3904d69..cf72219 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -104,13 +104,32 @@
     '';
 
     xdg.desktopEntries = {
+      ghostty-secondary = {
+        categories = [
+          "System"
+          "TerminalEmulator"
+        ];
+        exec = ''
+          ghostty --class=com.mitchellh.ghostty-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique"
+        '';
+        genericName = "Ghostty Secondary";
+        icon = "com.mitchellh.ghostty";
+        name = "Ghostty (nemo)";
+        settings = {
+          StartupWMClass = "com.mitchellh.ghostty-secondary";
+          TryExec = "ghostty";
+        };
+        terminal = false;
+        type = "Application";
+      };
+
       ghostty-nemo = {
         categories = [
           "System"
           "TerminalEmulator"
         ];
         exec = ''
-        ghostty --class=com.mitchellh.ghostty-nemo --command="ssh -t nemo" --initial-command="ssh -t nemo nvim-remote"
+          ghostty --class=com.mitchellh.ghostty-nemo --command="ssh -t nemo" --initial-command="ssh -t nemo nvim-remote"
         '';
         genericName = "Ghostty (nemo)";
         icon = "com.mitchellh.ghostty";
@@ -122,6 +141,25 @@
         terminal = false;
         type = "Application";
       };
+
+      ghostty-nemo-secondary = {
+        categories = [
+          "System"
+          "TerminalEmulator"
+        ];
+        exec = ''
+          ghostty --class=com.mitchellh.ghostty-nemo-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t nemo" --initial-command="ssh -t nemo nvim-remote"
+        '';
+        genericName = "Ghostty Secondary (nemo)";
+        icon = "com.mitchellh.ghostty";
+        name = "Ghostty (nemo)";
+        settings = {
+          StartupWMClass = "com.mitchellh.ghostty-nemo-secondary";
+          TryExec = "ghostty";
+        };
+        terminal = false;
+        type = "Application";
+      };
     };
 
   };

From 90b5b48d2a5fa286078d89905eee9a742cf1b651 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 19:22:16 +0100
Subject: [PATCH 552/656] vcs: remove unused lazyjj, gitui

---
 files/config/fish/vcs.fish | 10 ----------
 home/common/vcs.nix        | 38 --------------------------------------
 2 files changed, 48 deletions(-)

diff --git a/files/config/fish/vcs.fish b/files/config/fish/vcs.fish
index 4859d3b..f3c179e 100644
--- a/files/config/fish/vcs.fish
+++ b/files/config/fish/vcs.fish
@@ -53,15 +53,6 @@ function vcs_log
     commandline -f repaint
 end
 
-function vcs_ui
-    if __jj_in_repo
-        lazyjj
-    else
-        gitui
-    end
-    commandline -f repaint
-end
-
 # Abbreviations
 
 abbr -a d vcs_diff
@@ -71,6 +62,5 @@ abbr -a s vcs_status
 bind \c_ vcs_jump
 bind \ea vcs_log
 bind \ee vcs_broot
-bind \eg vcs_ui
 bind \eS vcs_diff
 bind \es vcs_status
diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index 17f1fb4..956612a 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -7,7 +7,6 @@
     difftastic
     git-get
     git-graph
-    lazyjj
     tea
   ];
 
@@ -130,43 +129,6 @@
     };
   };
 
-  programs.gitui = {
-    enable = true;
-    keyConfig = ''
-      (
-       open_help: Some(( code: F(1), modifiers: "")),
-       move_left: Some(( code: Char('h'), modifiers: "")),
-       move_right: Some(( code: Char('l'), modifiers: "")),
-       move_up: Some(( code: Char('k'), modifiers: "")),
-       move_down: Some(( code: Char('j'), modifiers: "")),
-       popup_up: Some(( code: Char('p'), modifiers: "CONTROL")),
-       popup_down: Some(( code: Char('n'), modifiers: "CONTROL")),
-       page_up: Some(( code: Char('b'), modifiers: "CONTROL")),
-       page_down: Some(( code: Char('f'), modifiers: "CONTROL")),
-       home: Some(( code: Char('g'), modifiers: "")),
-       end: Some(( code: Char('G'), modifiers: "SHIFT")),
-       shift_up: Some(( code: Char('K'), modifiers: "SHIFT")),
-       shift_down: Some(( code: Char('J'), modifiers: "SHIFT")),
-       edit_file: Some(( code: Char('I'), modifiers: "SHIFT")),
-       status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")),
-       diff_reset_lines: Some(( code: Char('u'), modifiers: "")),
-       diff_stage_lines: Some(( code: Char('s'), modifiers: "")),
-       stashing_save: Some(( code: Char('w'), modifiers: "")),
-       stashing_toggle_index: Some(( code: Char('m'), modifiers: "")),
-       stash_open: Some(( code: Char('l'), modifiers: "")),
-       abort_merge: Some(( code: Char('M'), modifiers: "SHIFT")),
-       )
-      	 '';
-    theme = ''
-      (
-       selection_bg: Some(Black),
-       selection_fg: Some(Reset),
-       cmdbar_bg: Some(Reset),
-       cmdbar_extra_lines_bg: Some(Reset),
-      )
-    '';
-  };
-
   programs.jujutsu = {
     enable = true;
     package = inputs.jujutsu.packages.${pkgs.system}.default;

From 09694db3377d872b0c811022210bdd9ad66459ad Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 19:22:16 +0100
Subject: [PATCH 553/656] nix update

---
 flake.lock | 47 +++++++++++++++++++++++++----------------------
 1 file changed, 25 insertions(+), 22 deletions(-)

diff --git a/flake.lock b/flake.lock
index 17a6d61..41ea256 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735875799,
-        "narHash": "sha256-EI6C+CRmfHqkjnp0aJxYb/pTImwb5FZOu1HWHnnZsOc=",
+        "lastModified": 1735924432,
+        "narHash": "sha256-OxI6QxoMsKBBTaH+RNFPIE7kiqYyv8DnO1y8zLWK36g=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "e2f9eb6a6f4dc2108f91293938374c0ed314dcb8",
+        "rev": "7eb35d72758a984c6c028272e6f53b7694e42b60",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735900408,
-        "narHash": "sha256-U+oZBQ3f5fF2hHsupKQH4ihgTKLHgcJh6jEmKDg+W10=",
+        "lastModified": 1735925111,
+        "narHash": "sha256-/NptDI4njO5hH0ZVQ2yzbvTXmBOabZaGYkjhnMJ37TY=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "1c8d4c8d592e8fab4cff4397db5529ec6f078cf9",
+        "rev": "ef64efdbaca99f9960f75efab991e4c49e79a5f1",
         "type": "github"
       },
       "original": {
@@ -241,11 +241,11 @@
         "rust-overlay": "rust-overlay"
       },
       "locked": {
-        "lastModified": 1733685432,
-        "narHash": "sha256-kUfwjdQGq0UcIlVnNf/z0iG+y7SHf/ZZLVKXDyvDkVg=",
+        "lastModified": 1735928141,
+        "narHash": "sha256-KN5rfdDj3vB/GNVw4YZU4tJv2BnUQiQdOz1kEQyketI=",
         "owner": "dln",
         "repo": "jj",
-        "rev": "b6608a03881542d6a8c98f659b80b57a27906096",
+        "rev": "cb103fb4692c4e2b90c4663804b81a5ff1e49c06",
         "type": "github"
       },
       "original": {
@@ -297,15 +297,18 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1735471104,
-        "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
-        "path": "/nix/store/8vz84mqgnm1gz5yk7hgnnb5gir5hjxas-source",
-        "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4",
-        "type": "path"
+        "lastModified": 1731890469,
+        "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "5083ec887760adfe12af64830a66807423a859a7",
+        "type": "github"
       },
       "original": {
-        "id": "nixpkgs",
-        "type": "indirect"
+        "owner": "NixOS",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
       }
     },
     "nixpkgs-stable": {
@@ -390,11 +393,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1735471104,
-        "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
+        "lastModified": 1735834308,
+        "narHash": "sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4",
+        "rev": "6df24922a1400241dae323af55f30e4318a6ca65",
         "type": "github"
       },
       "original": {
@@ -423,11 +426,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735871325,
-        "narHash": "sha256-6Ta5E4mhSfCP6LdkzkG2+BciLOCPeLKuYTJ6lOHW+mI=",
+        "lastModified": 1732242723,
+        "narHash": "sha256-NWI8csIK0ujFlFuEXKnoc+7hWoCiEtINK9r48LUUMeU=",
         "owner": "oxalica",
         "repo": "rust-overlay",
-        "rev": "a599f011db521766cbaf7c2f5874182485554f00",
+        "rev": "a229311fcb45b88a95fdfa5cecd8349c809a272a",
         "type": "github"
       },
       "original": {

From 9ca1072e0035236056475afff4baab66f63f1882 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 3 Jan 2025 19:40:03 +0100
Subject: [PATCH 554/656] rename nemo -> devel for ghostty+ssh

---
 home/common/ghostty.nix | 22 +++++++++++-----------
 home/dln/home.nix       |  4 ++--
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index cf72219..11a8608 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -114,7 +114,7 @@
         '';
         genericName = "Ghostty Secondary";
         icon = "com.mitchellh.ghostty";
-        name = "Ghostty (nemo)";
+        name = "Ghostty (devel)";
         settings = {
           StartupWMClass = "com.mitchellh.ghostty-secondary";
           TryExec = "ghostty";
@@ -123,38 +123,38 @@
         type = "Application";
       };
 
-      ghostty-nemo = {
+      ghostty-devel = {
         categories = [
           "System"
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-nemo --command="ssh -t nemo" --initial-command="ssh -t nemo nvim-remote"
+          ghostty --class=com.mitchellh.ghostty-devel --command="ssh -t devel" --initial-command="ssh -t devel nvim-remote"
         '';
-        genericName = "Ghostty (nemo)";
+        genericName = "Ghostty (devel)";
         icon = "com.mitchellh.ghostty";
-        name = "Ghostty (nemo)";
+        name = "Ghostty (devel)";
         settings = {
-          StartupWMClass = "com.mitchellh.ghostty-nemo";
+          StartupWMClass = "com.mitchellh.ghostty-devel";
           TryExec = "ghostty";
         };
         terminal = false;
         type = "Application";
       };
 
-      ghostty-nemo-secondary = {
+      ghostty-devel-secondary = {
         categories = [
           "System"
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-nemo-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t nemo" --initial-command="ssh -t nemo nvim-remote"
+          ghostty --class=com.mitchellh.ghostty-devel-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel nvim-remote"
         '';
-        genericName = "Ghostty Secondary (nemo)";
+        genericName = "Ghostty Secondary (devel)";
         icon = "com.mitchellh.ghostty";
-        name = "Ghostty (nemo)";
+        name = "Ghostty (devel)";
         settings = {
-          StartupWMClass = "com.mitchellh.ghostty-nemo-secondary";
+          StartupWMClass = "com.mitchellh.ghostty-devel-secondary";
           TryExec = "ghostty";
         };
         terminal = false;
diff --git a/home/dln/home.nix b/home/dln/home.nix
index 4ec8164..5e9a82d 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -164,12 +164,12 @@ in
   '';
 
   programs.ssh.matchBlocks = {
-    dev = {
+    dev-old = {
       hostname = "10.1.100.16";
       forwardAgent = true;
     };
 
-    nemo = {
+    devel = {
       hostname = "10.1.100.20";
       forwardAgent = true;
       localForwards = [

From 7152b0bf09f56410ad4f39e22ef5f717322b370c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 4 Jan 2025 13:00:29 +0100
Subject: [PATCH 555/656] nix: add nix-index

---
 flake.lock | 45 +++++++++++++++++++++++++++++++++------------
 flake.nix  |  5 +++++
 2 files changed, 38 insertions(+), 12 deletions(-)

diff --git a/flake.lock b/flake.lock
index 41ea256..137b9cb 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735924432,
-        "narHash": "sha256-OxI6QxoMsKBBTaH+RNFPIE7kiqYyv8DnO1y8zLWK36g=",
+        "lastModified": 1735943291,
+        "narHash": "sha256-igXLrO0AtN7+k7VaR5zaHaPhDcS3go5NZr4liVqW9g4=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "7eb35d72758a984c6c028272e6f53b7694e42b60",
+        "rev": "1baf8928a0bd6ccc2f49e1e9478baab71d49a018",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735925111,
-        "narHash": "sha256-/NptDI4njO5hH0ZVQ2yzbvTXmBOabZaGYkjhnMJ37TY=",
+        "lastModified": 1735979091,
+        "narHash": "sha256-WpFjt6+8UD81EP386c269ZTqpEmlGJgcPw+OB4b7EBs=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "ef64efdbaca99f9960f75efab991e4c49e79a5f1",
+        "rev": "11ab08541e61ac3bbf2ab27229f68622629401df",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1735908283,
-        "narHash": "sha256-00Cd/KACX7Mr4ixz8rXksT4wteIStuExZIS22sA21ls=",
+        "lastModified": 1735972534,
+        "narHash": "sha256-FUp+Pke5Cj/rSldEnbGBIQ2VCHolBIqHKTD0CnzJp44=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "54dd5a7c0384fdcd11830e52f9896e457f189cb6",
+        "rev": "71933af08d74fad918521fb72af61bad20bb8f70",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1735903221,
-        "narHash": "sha256-VrmQyDyR8y7x8QHSnX+Szs2ywZa7butk6lUdiNX5U3s=",
+        "lastModified": 1735929980,
+        "narHash": "sha256-vtnUEiVt9QtwUJTi/Vr8fCy+yAhYjY9BdLlsaDVrObc=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "c26951b1d6d4d7ff8fe431e8bfb16744ff56af1c",
+        "rev": "a09c7a5d57ba2aca58fbc00e0b04a1437555a3c0",
         "type": "github"
       },
       "original": {
@@ -295,6 +295,26 @@
         "type": "github"
       }
     },
+    "nix-index-database": {
+      "inputs": {
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1735443188,
+        "narHash": "sha256-AydPpRBh8+NOkrLylG7vTsHrGO2b5L7XkMEL5HlzcA8=",
+        "owner": "nix-community",
+        "repo": "nix-index-database",
+        "rev": "55ab1e1df5daf2476e6b826b69a82862dcbd7544",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-community",
+        "repo": "nix-index-database",
+        "type": "github"
+      }
+    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1731890469,
@@ -413,6 +433,7 @@
         "home-manager": "home-manager",
         "jujutsu": "jujutsu",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
+        "nix-index-database": "nix-index-database",
         "nixpkgs": "nixpkgs_3",
         "nixpkgs-stable": "nixpkgs-stable_2",
         "nixpkgs-unstable": "nixpkgs-unstable_2"
diff --git a/flake.nix b/flake.nix
index 25d23c1..7e3b30d 100644
--- a/flake.nix
+++ b/flake.nix
@@ -21,6 +21,9 @@
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 
+    nix-index-database.url = "github:nix-community/nix-index-database";
+    nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
+
     home-manager.url = "github:nix-community/home-manager";
     home-manager.inputs.nixpkgs.follows = "nixpkgs";
   };
@@ -28,6 +31,7 @@
   outputs =
     inputs@{
       self,
+      nix-index-database,
       nixpkgs,
       home-manager,
       ...
@@ -55,6 +59,7 @@
           };
           modules = [
             ./home/common
+            nix-index-database.hmModules.nix-index
           ] ++ modules;
         };
     in

From 4bb1fa1f40d3f46429b167e492fd482b46e56173 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 4 Jan 2025 19:00:32 +0100
Subject: [PATCH 556/656] ghostty: fix .desktop entries

---
 home/common/ghostty.nix | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 11a8608..3a2f55e 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -110,11 +110,11 @@
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique"
+          ghostty --class=com.mitchellh.ghostty-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" -e bash
         '';
         genericName = "Ghostty Secondary";
         icon = "com.mitchellh.ghostty";
-        name = "Ghostty (devel)";
+        name = "Ghostty Secondary";
         settings = {
           StartupWMClass = "com.mitchellh.ghostty-secondary";
           TryExec = "ghostty";
@@ -148,11 +148,11 @@
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-devel-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel nvim-remote"
+          ghostty --class=com.mitchellh.ghostty-devel-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel"
         '';
         genericName = "Ghostty Secondary (devel)";
         icon = "com.mitchellh.ghostty";
-        name = "Ghostty (devel)";
+        name = "Ghostty Secondary (devel)";
         settings = {
           StartupWMClass = "com.mitchellh.ghostty-devel-secondary";
           TryExec = "ghostty";

From b23bc6b9af2e64223438b7d0d3e0bad4a012fc68 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 5 Jan 2025 00:10:20 +0100
Subject: [PATCH 557/656] nix: add nixfmt

---
 flake.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/flake.nix b/flake.nix
index 7e3b30d..1bc8a36 100644
--- a/flake.nix
+++ b/flake.nix
@@ -71,6 +71,7 @@
           just
           nh
           nixd
+          nixfmt-rfc-style
         ];
       };
 

From 476542b69728368873e1d7904d60ff807e22c16a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 5 Jan 2025 00:10:20 +0100
Subject: [PATCH 558/656] jj: colorific

---
 home/dln/home.nix | 151 ++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 132 insertions(+), 19 deletions(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index 5e9a82d..e59ba81 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -1,4 +1,9 @@
-{ config, pkgs, ... }:
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
 let
   realName = "Daniel Lundin";
   email = "dln@arity.se";
@@ -136,26 +141,134 @@ in
         "ready" = "open() ~ (wip::)";
       };
 
-      colors = {
-        "commit_id prefix" = {
-          bold = true;
-        };
+      colors =
+        let
+          bold = {
+            bold = true;
+          };
+          dim = {
+            fg = "bright black";
+          };
+          underline = {
+            fg = "default";
+            underline = true;
+          };
+        in
+        {
+          "error" = bold;
+          "warning" = bold;
+          "error heading" = bold;
+          "error_source heading" = bold;
+          "warning heading" = bold;
+          "hint heading" = bold;
+          "prefix" = bold;
+          "rest" = "bright black";
+          "divergent prefix" = underline;
+          "bookmark" = "magenta";
+          "bookmarks" = "magenta";
+          "change_id" = "magenta";
+          "local_bookmarks" = "magenta";
 
-        "rest" = {
-          fg = "bright black";
-          bold = false;
-        };
+          "diff file_header" = bold;
+          "diff hunk_header" = "cyan";
+          "diff removed" = "red";
+          "diff removed token" = "red";
+          "diff added" = "green";
+          "diff added token" = "green";
+          "diff modified" = "cyan";
+          "diff untracked" = "magenta";
+          "diff renamed" = "cyan";
+          "diff copied" = "green";
+          "diff access-denied" = {
+            bg = "red";
+          };
+
+          "elided" = "blue";
+          "node elided" = dim;
+          "node working_copy" = {
+            fg = "green";
+            bold = true;
+          };
+          "node current_operation" = bold;
+          "node immutable" = bold;
+          "node conflict" = {
+            fg = "red";
+            bold = true;
+          };
+          "operation id" = "blue";
+          "operation current_operation" = bold;
+          "remote_bookmarks" = "magenta";
+          "working_copy" = {
+            fg = "green";
+            bold = true;
+          };
+          "working_copy change_id" = "magenta";
+          "working_copy description placeholder" = "green";
+          "working_copy empty description placeholder" = "green";
+          "working_copy bookmark" = "bright magenta";
+          "working_copy bookmarks" = "bright magenta";
+          "working_copy local_bookmarks" = "bright magenta";
+          "working_copy remote_bookmarks" = "bright magenta";
+        }
+        // lib.genAttrs [
+          "author"
+          "branch"
+          "branches"
+          "commit_id"
+          "committer"
+          "config_list name"
+          "config_list overridden"
+          "config_list overridden name"
+          "config_list overridden value"
+          "config_list value"
+          "conflict"
+          "conflict_description"
+          "conflict_description difficult"
+          "description placeholder"
+          "diff token"
+          "divergent"
+          "divergent change_id"
+          "divergent rest"
+          "empty"
+          "empty description placeholder"
+          "error_source"
+          "git_head"
+          "git_refs"
+          "hidden prefix"
+          "hint"
+          "local_branches"
+          "operation current_operation id"
+          "operation current_operation time"
+          "operation current_operation user"
+          "operation time"
+          "operation user"
+          "placeholder"
+          "remote_branches"
+          "root"
+          "separator"
+          "tag"
+          "tags"
+          "timestamp"
+          "working_copies"
+          "working_copy author"
+          "working_copy branch"
+          "working_copy branches"
+          "working_copy commit_id"
+          "working_copy committer"
+          "working_copy conflict"
+          "working_copy divergent"
+          "working_copy divergent change_id"
+          "working_copy empty"
+          "working_copy git_refs"
+          "working_copy local_branches"
+          "working_copy placeholder"
+          "working_copy remote_branches"
+          "working_copy tag"
+          "working_copy tags"
+          "working_copy timestamp"
+          "working_copy working_copies"
+        ] (_: "default");
 
-        "diff added token" = {
-          bg = "#002200";
-          fg = "#66ffcc";
-          underline = false;
-        };
-        "diff removed token" = {
-          bg = "#220011";
-          underline = true;
-        };
-      };
     };
   };
 

From 6d3575087355bae62d0eb454049e494fb7f2cb0b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 5 Jan 2025 23:08:02 +0100
Subject: [PATCH 559/656] hardware.pulseaudio -> services.pulseaudio

---
 common/desktop.nix      | 2 +-
 hosts/pearl/default.nix | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/desktop.nix b/common/desktop.nix
index ebf6c6d..263ab6e 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -93,7 +93,7 @@ in
       xkb.variant = "us";
     };
 
-    hardware.pulseaudio.enable = false;
+    services.pulseaudio.enable = false;
     security.rtkit.enable = true;
     services.pipewire = {
       enable = true;
diff --git a/hosts/pearl/default.nix b/hosts/pearl/default.nix
index 1120826..4696113 100644
--- a/hosts/pearl/default.nix
+++ b/hosts/pearl/default.nix
@@ -99,7 +99,7 @@
   console.keyMap = "sv-latin1";
 
   # Enable sound with pipewire.
-  hardware.pulseaudio.enable = false;
+  services.pulseaudio.enable = false;
   security.rtkit.enable = true;
   services.pipewire = {
     enable = true;

From fac15cd4c5c56883bb1d8e2a9ca434bf18e9e532 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 5 Jan 2025 23:08:02 +0100
Subject: [PATCH 560/656] nix: update

---
 flake.lock | 48 ++++++++++++++++++++++++------------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/flake.lock b/flake.lock
index 137b9cb..87aea3c 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1735943291,
-        "narHash": "sha256-igXLrO0AtN7+k7VaR5zaHaPhDcS3go5NZr4liVqW9g4=",
+        "lastModified": 1736113571,
+        "narHash": "sha256-5viqX++mUONRNCHf393l26iZIvi2DlFLJR87Xrsod3s=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "1baf8928a0bd6ccc2f49e1e9478baab71d49a018",
+        "rev": "c9c5ad43a54e815e664569f5e5809a71369b99a2",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735979091,
-        "narHash": "sha256-WpFjt6+8UD81EP386c269ZTqpEmlGJgcPw+OB4b7EBs=",
+        "lastModified": 1736066484,
+        "narHash": "sha256-uTstP36WaFrw+TEHb8nLF14hFPzQBOhmIxzioHCDaL8=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "11ab08541e61ac3bbf2ab27229f68622629401df",
+        "rev": "5ad12b6ea06b84e48f6b677957c74f32d47bdee0",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1735972534,
-        "narHash": "sha256-FUp+Pke5Cj/rSldEnbGBIQ2VCHolBIqHKTD0CnzJp44=",
+        "lastModified": 1736035694,
+        "narHash": "sha256-hsJH+qsn3hdE2Axo+MGQv2oVPzAXoBTdVJEhmUIprzo=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "71933af08d74fad918521fb72af61bad20bb8f70",
+        "rev": "75151f049969a87404442dbcf16e885875e29e72",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1735929980,
-        "narHash": "sha256-vtnUEiVt9QtwUJTi/Vr8fCy+yAhYjY9BdLlsaDVrObc=",
+        "lastModified": 1736023725,
+        "narHash": "sha256-ARpgwbA6wEHBFv4x6Cpv/sXHFkeBiZoYN0iBiI3fKQw=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "a09c7a5d57ba2aca58fbc00e0b04a1437555a3c0",
+        "rev": "a8ace2c58a318552869462a36859aabf1cdfaa68",
         "type": "github"
       },
       "original": {
@@ -302,11 +302,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735443188,
-        "narHash": "sha256-AydPpRBh8+NOkrLylG7vTsHrGO2b5L7XkMEL5HlzcA8=",
+        "lastModified": 1736047960,
+        "narHash": "sha256-hutd85FA1jUJhhqBRRJ+u7UHO9oFGD/RVm2x5w8WjVQ=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "55ab1e1df5daf2476e6b826b69a82862dcbd7544",
+        "rev": "816a6ae88774ba7e74314830546c29e134e0dffb",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1735669367,
-        "narHash": "sha256-tfYRbFhMOnYaM4ippqqid3BaLOXoFNdImrfBfCp4zn0=",
+        "lastModified": 1736061677,
+        "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "edf04b75c13c2ac0e54df5ec5c543e300f76f1c9",
+        "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1735821806,
-        "narHash": "sha256-cuNapx/uQeCgeuhUhdck3JKbgpsml259sjUQnWM7zW8=",
+        "lastModified": 1735915915,
+        "narHash": "sha256-Q4HuFAvoKAIiTRZTUxJ0ZXeTC7lLfC9/dggGHNXNlCw=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "d6973081434f88088e5321f83ebafe9a1167c367",
+        "rev": "a27871180d30ebee8aa6b11bf7fef8a52f024733",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1735821806,
-        "narHash": "sha256-cuNapx/uQeCgeuhUhdck3JKbgpsml259sjUQnWM7zW8=",
+        "lastModified": 1735915915,
+        "narHash": "sha256-Q4HuFAvoKAIiTRZTUxJ0ZXeTC7lLfC9/dggGHNXNlCw=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "d6973081434f88088e5321f83ebafe9a1167c367",
+        "rev": "a27871180d30ebee8aa6b11bf7fef8a52f024733",
         "type": "github"
       },
       "original": {

From 78d818056b1395ebc8062bba90942d08651809b3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 5 Jan 2025 23:44:22 +0100
Subject: [PATCH 561/656] jj: use bright magenta for bookmarks

---
 home/dln/home.nix | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index e59ba81..0770df0 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -164,10 +164,10 @@ in
           "prefix" = bold;
           "rest" = "bright black";
           "divergent prefix" = underline;
-          "bookmark" = "magenta";
-          "bookmarks" = "magenta";
-          "change_id" = "magenta";
-          "local_bookmarks" = "magenta";
+          "bookmark" = "bright magenta";
+          "bookmarks" = "bright magenta";
+          "change_id" = "bright magenta";
+          "local_bookmarks" = "bright magenta";
 
           "diff file_header" = bold;
           "diff hunk_header" = "cyan";
@@ -176,13 +176,14 @@ in
           "diff added" = "green";
           "diff added token" = "green";
           "diff modified" = "cyan";
-          "diff untracked" = "magenta";
+          "diff untracked" = "blue";
           "diff renamed" = "cyan";
           "diff copied" = "green";
           "diff access-denied" = {
             bg = "red";
           };
 
+          "empty" = "green";
           "elided" = "blue";
           "node elided" = dim;
           "node working_copy" = {
@@ -197,12 +198,16 @@ in
           };
           "operation id" = "blue";
           "operation current_operation" = bold;
-          "remote_bookmarks" = "magenta";
+          "remote_bookmarks" = "bright magenta";
           "working_copy" = {
             fg = "green";
             bold = true;
           };
-          "working_copy change_id" = "magenta";
+          "working_copy empty" = {
+            fg = "green";
+            bold = true;
+          };
+          "working_copy change_id" = "bright magenta";
           "working_copy description placeholder" = "green";
           "working_copy empty description placeholder" = "green";
           "working_copy bookmark" = "bright magenta";
@@ -229,7 +234,6 @@ in
           "divergent"
           "divergent change_id"
           "divergent rest"
-          "empty"
           "empty description placeholder"
           "error_source"
           "git_head"
@@ -258,7 +262,6 @@ in
           "working_copy conflict"
           "working_copy divergent"
           "working_copy divergent change_id"
-          "working_copy empty"
           "working_copy git_refs"
           "working_copy local_branches"
           "working_copy placeholder"

From 7a2d1a7e4e531368a1846cf0224fef22ab422236 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 5 Jan 2025 23:44:22 +0100
Subject: [PATCH 562/656] nemo: re-enable pam_rssh

---
 flake.lock             | 54 +++++++++++++++++++++---------------------
 hosts/nemo/default.nix | 39 +++++++++++++++++-------------
 2 files changed, 50 insertions(+), 43 deletions(-)

diff --git a/flake.lock b/flake.lock
index 87aea3c..4fa76dc 100644
--- a/flake.lock
+++ b/flake.lock
@@ -56,11 +56,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735774679,
-        "narHash": "sha256-soePLBazJk0qQdDVhdbM98vYdssfs3WFedcq+raipRI=",
+        "lastModified": 1736143030,
+        "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "f2f7418ce0ab4a5309a4596161d154cfc877af66",
+        "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
         "type": "github"
       },
       "original": {
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1736113571,
-        "narHash": "sha256-5viqX++mUONRNCHf393l26iZIvi2DlFLJR87Xrsod3s=",
+        "lastModified": 1736210320,
+        "narHash": "sha256-QnDkQ/s1OWmPj1f+7MFNxQiAPJdHbI1Aft7yM5I+8gQ=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "c9c5ad43a54e815e664569f5e5809a71369b99a2",
+        "rev": "a3837a1e4ee06a183f32d4a622c2cdcd51f73fb8",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736066484,
-        "narHash": "sha256-uTstP36WaFrw+TEHb8nLF14hFPzQBOhmIxzioHCDaL8=",
+        "lastModified": 1736204492,
+        "narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "5ad12b6ea06b84e48f6b677957c74f32d47bdee0",
+        "rev": "20665c6efa83d71020c8730f26706258ba5c6b2a",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1736035694,
-        "narHash": "sha256-hsJH+qsn3hdE2Axo+MGQv2oVPzAXoBTdVJEhmUIprzo=",
+        "lastModified": 1736233375,
+        "narHash": "sha256-I6fqKdaoKOVU33SyPv+MuxWRiOs+PXQTO94aCLA3rAc=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "75151f049969a87404442dbcf16e885875e29e72",
+        "rev": "721f5f602b876a3ee21be04f68ab3cedf162e7f6",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1736023725,
-        "narHash": "sha256-ARpgwbA6wEHBFv4x6Cpv/sXHFkeBiZoYN0iBiI3fKQw=",
+        "lastModified": 1736193797,
+        "narHash": "sha256-5S4RnwKfa5nn/r+8OsMtfgD6TEA5P6cWKti76A0zIMc=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "a8ace2c58a318552869462a36859aabf1cdfaa68",
+        "rev": "b6ab294838421afb6932c52dd6e6d35d571e621d",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1735915915,
-        "narHash": "sha256-Q4HuFAvoKAIiTRZTUxJ0ZXeTC7lLfC9/dggGHNXNlCw=",
+        "lastModified": 1736134818,
+        "narHash": "sha256-30sOEZ8CFK2nTTMdkhaNrfVlIi3rWTNV0Z5z+NmpFNI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "a27871180d30ebee8aa6b11bf7fef8a52f024733",
+        "rev": "3df3c47c19dc90fec35359e89ffb52b34d2b0e94",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1735915915,
-        "narHash": "sha256-Q4HuFAvoKAIiTRZTUxJ0ZXeTC7lLfC9/dggGHNXNlCw=",
+        "lastModified": 1736042175,
+        "narHash": "sha256-jdd5UWtLVrNEW8K6u5sy5upNAFmF3S4Y+OIeToqJ1X8=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "a27871180d30ebee8aa6b11bf7fef8a52f024733",
+        "rev": "bf689c40d035239a489de5997a4da5352434632e",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1735834308,
-        "narHash": "sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk=",
+        "lastModified": 1736012469,
+        "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "6df24922a1400241dae323af55f30e4318a6ca65",
+        "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
         "type": "github"
       },
       "original": {
@@ -498,11 +498,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735905407,
-        "narHash": "sha256-1hKMRIT+QZNWX46e4gIovoQ7H8QRb7803ZH4qSKI45o=",
+        "lastModified": 1736154270,
+        "narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "29806abab803e498df96d82dd6f34b32eb8dd2c8",
+        "rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
         "type": "github"
       },
       "original": {
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index c36cc1c..d1df1d0 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -124,21 +124,20 @@
   };
 
   # FIXME: pam_rssh is broken from rust 1.80 upgrade
-  # environment.systemPackages = [ pkgs.pam_rssh ];
-  # security = {
-  #   pam.services.doas =
-  #     { config, ... }:
-  #     {
-  #       rules.auth.rssh = {
-  #         order = config.rules.auth.ssh_agent_auth.order - 1;
-  #         control = "sufficient";
-  #         modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
-  #         settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
-  #           cat "/etc/ssh/authorized_keys.d/$1"
-  #         '';
-  #       };
-  #     };
-  # };
+  security = {
+    pam.services.doas =
+      { config, ... }:
+      {
+        rules.auth.rssh = {
+          order = config.rules.auth.ssh_agent_auth.order - 1;
+          control = "sufficient";
+          modulePath = "${pkgs.pam_rssh}/lib/libpam_rssh.so";
+          settings.authorized_keys_command = pkgs.writeShellScript "get-authorized-keys" ''
+            cat "/etc/ssh/authorized_keys.d/$1"
+          '';
+        };
+      };
+  };
 
   services.resolved = {
     enable = true;
@@ -175,7 +174,7 @@
     ffado
     libcamera
     lm_sensors
-    # pkgs.pam_rssh
+    pam_rssh
     openconnect
     v4l-utils
   ];
@@ -213,6 +212,14 @@
   };
   users.groups.nixremote = { };
 
+  nix.sshServe.enable = true;
+  nix.sshServe.keys = [
+    "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIIHMAEZx02kbHrEygyPQYStiXlrIe6EIqBCv7anIkL0pAAAABHNzaDo= dln@dinky"
+    "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJNOBFoU7Cdsgi4KpYRcv7EhR/8kD4DYjEZnwk6urRx7AAAABHNzaDo= dln@nemo"
+    "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBJ10mLOpInoqDaySyrxbzvcOrJfLw48Y6eWHa9501lw+hEEBXya3ib7nlvpCqEQJ8aPU5fVRqpkOW5zSimCiRbwAAAAEc3NoOg=="
+    "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBLpoKvsZDIQQLfgzJhe1jAQubBNxjydkj8UfdUPaSXqgfB02OypMOC1m5ZuJYcQIxox0I+4Z8xstFhYP6s8zKZwAAAAEc3NoOg=="
+  ];
+
   nix.settings.trusted-users = [
     "dln"
     "lsjostro"

From 223bff63157618d7c7254514e3ff5e0086c4f64b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 7 Jan 2025 21:57:21 +0100
Subject: [PATCH 563/656] fish: remove grc

---
 home/common/fish.nix  | 10 ----------
 home/common/utils.nix |  1 -
 2 files changed, 11 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 9fd7a43..03cf86f 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -5,10 +5,6 @@
 
 
     plugins = [
-      {
-        name = "grc";
-        src = pkgs.fishPlugins.grc.src;
-      }
       {
         name = "transient";
         src = pkgs.fishPlugins.transient-fish.src;
@@ -43,12 +39,6 @@
         body = ''confirm "⚠ Really shutdown $(hostname)?" && command shutdown $argv'';
       };
 
-      kubectl = {
-        description = "Wraps kubectl in grc";
-        wraps = "kubectl";
-        body = "grc.wrap kubectl $argv";
-      };
-
       e = {
         description = "Open a file in already running nvim";
         argumentNames = [ "file" ];
diff --git a/home/common/utils.nix b/home/common/utils.nix
index a8284c1..d2d07a4 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -1,7 +1,6 @@
 { pkgs, ... }:
 {
   home.packages = with pkgs; [
-    grc
     dust
     jless
     procs

From b82010faf8fb757783fdea1786fe3fdfbfd53850 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 8 Jan 2025 15:37:19 +0100
Subject: [PATCH 564/656] nvim: add sqls

---
 home/common/nvim/lsp.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index 164c0cb..1cd6e50 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -3,6 +3,7 @@ local servers = {
   cssls = {},
   html = {},
   jsonls = {},
+  sqls = {},
   superhtml = {},
   ts_ls = {},
 

From 3ef41dd40078ba25a60d84a7e74f0b5c465f4fea Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 8 Jan 2025 18:58:16 +0100
Subject: [PATCH 565/656] nemo: set OTEL endpoint globally

---
 hosts/nemo/default.nix | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index d1df1d0..be2b346 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -179,6 +179,10 @@
     v4l-utils
   ];
 
+  environment.variables = {
+    OTEL_EXPORTER_OTLP_ENDPOINT = "https://otel.aarn.patagia.net";
+  };
+
   programs.coolercontrol.enable = true;
 
   users.users.dln = {

From 03e20d83e1be92fca6618a1d41313b3580d39ca1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 9 Jan 2025 14:35:34 +0100
Subject: [PATCH 566/656] nemo: disable sunshine

---
 hosts/nemo/default.nix | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index be2b346..49cdaf0 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -158,12 +158,6 @@
     };
   };
 
-  services.sunshine = {
-    enable = true;
-    openFirewall = true;
-    settings = { };
-  };
-
   patagia = {
     desktop.enable = true;
     plymouth.enable = true;

From 3ec86e59ba79852a0e7ce99f78e8178269af7022 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 9 Jan 2025 14:35:34 +0100
Subject: [PATCH 567/656] nemo: disable coolercontrol + gnome vitals

---
 home/common/gnome.nix  | 6 ------
 hosts/nemo/default.nix | 2 --
 2 files changed, 8 deletions(-)

diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index de67eb7..75343f5 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -13,7 +13,6 @@ with lib.hm.gvariant;
       gnomeExtensions.desktop-clock
       gnomeExtensions.emoji-copy
       gnomeExtensions.just-perfection
-      gnomeExtensions.vitals
     ];
 
     dconf.settings = {
@@ -168,7 +167,6 @@ with lib.hm.gvariant;
         enabled-extensions = [
           "emoji-copy@felipeftn"
           "just-perfection-desktop@just-perfection"
-          "Vitals@CoreCoding.com"
         ];
       };
 
@@ -187,10 +185,6 @@ with lib.hm.gvariant;
         top-panel-position = 0;
       };
 
-      "org/gnome/shell/extensions/vitals" = {
-        update-time = 15;
-      };
-
       "org/gnome/tweaks" = {
         show-extensions-notice = false;
       };
diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 49cdaf0..cc1db74 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -177,8 +177,6 @@
     OTEL_EXPORTER_OTLP_ENDPOINT = "https://otel.aarn.patagia.net";
   };
 
-  programs.coolercontrol.enable = true;
-
   users.users.dln = {
     isNormalUser = true;
     description = "Daniel Lundin";

From c68bdd38183701f7a81851587711785b8a89ca87 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 9 Jan 2025 14:52:31 +0100
Subject: [PATCH 568/656] nvim: blink-cmp changes

---
 home/common/nvim/blink-cmp.lua | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua
index b34b6fc..b59fe58 100644
--- a/home/common/nvim/blink-cmp.lua
+++ b/home/common/nvim/blink-cmp.lua
@@ -1,6 +1,7 @@
 require 'blink-cmp'.setup({
   keymap = {
     preset = 'enter',
+    -- preset = 'super-tab',
     ["<PageDown>"] = { "scroll_documentation_down" },
     ["<PageUp>"] = { "scroll_documentation_up" },
   },
@@ -18,11 +19,11 @@ require 'blink-cmp'.setup({
     ghost_text = { enabled = true },
 
     list = {
-      selection = "manual",
+      selection = { preselect = false, auto_insert = false },
     },
 
     menu = {
-      auto_show = true,
+      auto_show = false,
     },
   },
 
@@ -32,10 +33,6 @@ require 'blink-cmp'.setup({
     },
   },
 
-  keymap = {
-    preset = 'super-tab',
-  },
-
   signature = {
     enabled = true,
     window = { border = 'rounded', },

From f263c95f039cd2425c2938db351c31ad64022243 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 9 Jan 2025 14:52:31 +0100
Subject: [PATCH 569/656] ghostty: don't start nvim automatically

---
 home/common/ghostty.nix | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 3a2f55e..a05ca7f 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -29,7 +29,6 @@
         unfocused-split-opacity = 1.0;
 
         shell-integration = "fish";
-        initial-command = "nvim-remote";
 
         window-decoration = true;
         gtk-single-instance = true;
@@ -129,7 +128,7 @@
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-devel --command="ssh -t devel" --initial-command="ssh -t devel nvim-remote"
+          ghostty --class=com.mitchellh.ghostty-devel --command="ssh -t devel" --initial-command="ssh -t devel"
         '';
         genericName = "Ghostty (devel)";
         icon = "com.mitchellh.ghostty";

From ccf59fbaee3ef7beb48f8869a8273c9d35b17034 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 9 Jan 2025 14:52:31 +0100
Subject: [PATCH 570/656] zoxide: add fzf border and avoid sorting (which ruins
 zoxide weighting)

---
 home/common/utils.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/utils.nix b/home/common/utils.nix
index d2d07a4..1ae7cf9 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -70,6 +70,6 @@
     enableFishIntegration = true;
     options = [ "--cmd=cd" ];
   };
-  home.sessionVariables._ZO_FZF_OPTS="--reverse --height=10 --border=none --no-info --no-separator --no-scrollbar --no-color";
+  home.sessionVariables._ZO_FZF_OPTS="--reverse --height=10 --border=rounded --no-info --no-separator --no-scrollbar --no-color --no-sort";
 
 }

From fec53f5ca0a36d3014b2ccb243a93ce909d3647f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 9 Jan 2025 14:52:31 +0100
Subject: [PATCH 571/656] nvim: re-enable neocodium. bink-cmp config

---
 flake.lock                     | 54 +++++++++++++++++-----------------
 flake.nix                      |  1 +
 home/common/nvim/blink-cmp.lua | 37 ++++++++++++++++++-----
 home/common/nvim/default.nix   | 21 +++++++++++++
 home/common/nvim/init.lua      |  2 +-
 5 files changed, 79 insertions(+), 36 deletions(-)

diff --git a/flake.lock b/flake.lock
index 4fa76dc..b4a05c0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1736210320,
-        "narHash": "sha256-QnDkQ/s1OWmPj1f+7MFNxQiAPJdHbI1Aft7yM5I+8gQ=",
+        "lastModified": 1736566108,
+        "narHash": "sha256-r+FXWU/hfgO3lAHYs9Q03iCShnC42mZd1pnmIIp8Z9k=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "a3837a1e4ee06a183f32d4a622c2cdcd51f73fb8",
+        "rev": "918ccdba5cc65ccd1fb48a54c71306d869299441",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736204492,
-        "narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=",
+        "lastModified": 1736508663,
+        "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "20665c6efa83d71020c8730f26706258ba5c6b2a",
+        "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1736233375,
-        "narHash": "sha256-I6fqKdaoKOVU33SyPv+MuxWRiOs+PXQTO94aCLA3rAc=",
+        "lastModified": 1736553940,
+        "narHash": "sha256-xicqHwvq2S/Y36DwcY+xGy6+4jdFT78bclBhwjs4KJY=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "721f5f602b876a3ee21be04f68ab3cedf162e7f6",
+        "rev": "b2237869f288c278b6fd429445d460cb44a0e788",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1736193797,
-        "narHash": "sha256-5S4RnwKfa5nn/r+8OsMtfgD6TEA5P6cWKti76A0zIMc=",
+        "lastModified": 1736553525,
+        "narHash": "sha256-Kfx1r0yVTTa83EdP7Ta5ValnXy4ak3F10hHCymDAU7o=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "b6ab294838421afb6932c52dd6e6d35d571e621d",
+        "rev": "fbe546e25d21f3184814d696c329d23d146bd615",
         "type": "github"
       },
       "original": {
@@ -302,11 +302,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736047960,
-        "narHash": "sha256-hutd85FA1jUJhhqBRRJ+u7UHO9oFGD/RVm2x5w8WjVQ=",
+        "lastModified": 1736440205,
+        "narHash": "sha256-QJgTI//KEGuEJC6FDxuI9Dq8PewIpnxD2NVx2/OHbfc=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "816a6ae88774ba7e74314830546c29e134e0dffb",
+        "rev": "a2200b499efa01ca8646173e94cdfcc93188f2b8",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1736061677,
-        "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
+        "lastModified": 1736200483,
+        "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
+        "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1736134818,
-        "narHash": "sha256-30sOEZ8CFK2nTTMdkhaNrfVlIi3rWTNV0Z5z+NmpFNI=",
+        "lastModified": 1736420959,
+        "narHash": "sha256-dMGNa5UwdtowEqQac+Dr0d2tFO/60ckVgdhZU9q2E2o=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "3df3c47c19dc90fec35359e89ffb52b34d2b0e94",
+        "rev": "32af3611f6f05655ca166a0b1f47b57c762b5192",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1736042175,
-        "narHash": "sha256-jdd5UWtLVrNEW8K6u5sy5upNAFmF3S4Y+OIeToqJ1X8=",
+        "lastModified": 1736320768,
+        "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "bf689c40d035239a489de5997a4da5352434632e",
+        "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1736012469,
-        "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
+        "lastModified": 1736344531,
+        "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
+        "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index 1bc8a36..35ccf56 100644
--- a/flake.nix
+++ b/flake.nix
@@ -70,6 +70,7 @@
         packages = with pkgs; [
           just
           nh
+          nil
           nixd
           nixfmt-rfc-style
         ];
diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua
index b59fe58..26531e4 100644
--- a/home/common/nvim/blink-cmp.lua
+++ b/home/common/nvim/blink-cmp.lua
@@ -1,9 +1,10 @@
 require 'blink-cmp'.setup({
   keymap = {
     preset = 'enter',
-    -- preset = 'super-tab',
-    ["<PageDown>"] = { "scroll_documentation_down" },
-    ["<PageUp>"] = { "scroll_documentation_up" },
+    ['<Tab>'] = { 'select_next', 'fallback' },
+    ['<S-Tab>'] = { 'select_prev', 'fallback' },
+    ['<PageDown>'] = { 'scroll_documentation_down', 'fallback' },
+    ['<PageUp>'] = { 'scroll_documentation_up', 'fallback' },
   },
   completion = {
     accept = {
@@ -16,15 +17,35 @@ require 'blink-cmp'.setup({
       window = { border = 'rounded', },
     },
 
-    ghost_text = { enabled = true },
+    ghost_text = { enabled = false },
 
     list = {
-      selection = { preselect = false, auto_insert = false },
+      selection = {
+        preselect = false,
+        auto_insert = false
+      },
     },
 
     menu = {
-      auto_show = false,
-    },
+      auto_show = true,
+      direction_priority = { 'n' },
+      draw = {
+        components = {
+          kind_icon = {
+            ellipsis = false,
+            text = function(ctx)
+              local kind_icon, _, _ = require('mini.icons').get('lsp', ctx.kind)
+              return kind_icon
+            end,
+            -- Optionally, you may also use the highlights from mini.icons
+            highlight = function(ctx)
+              local _, hl, _ = require('mini.icons').get('lsp', ctx.kind)
+              return hl
+            end,
+          }
+        }
+      }
+    }
   },
 
   fuzzy = {
@@ -39,7 +60,7 @@ require 'blink-cmp'.setup({
   },
 
   sources = {
-    default = { 'lsp', 'codeium', 'buffer' },
+    default = { 'lsp', 'codeium' },
     cmdline = {},
     providers = {
       codeium = {
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 4312729..7056678 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -124,6 +124,27 @@ in
         '';
       }
 
+      {
+        plugin = pkgs.vimUtils.buildVimPlugin {
+          name = "neocodeium";
+          src = pkgs.fetchFromGitHub {
+            owner = "monkoose";
+            repo = "neocodeium";
+            rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0
+            hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU=";
+          };
+          doCheck = false;
+        };
+        type = "lua";
+        config = ''
+          local neocodeium =require('neocodeium')
+          neocodeium.setup()
+          vim.keymap.set("i", "<C-j>", neocodeium.accept, { remap = true })
+          vim.keymap.set("i", "<A-f>", neocodeium.accept, { remap = true })
+          vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete, { remap = true })
+        '';
+      }
+
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
           name = "diagflow";
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 8682273..4487604 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -65,7 +65,7 @@ vim.o.showcmd = false
 vim.o.showmode = false
 vim.o.smoothscroll = true
 vim.o.splitkeep = "screen"
-vim.o.timeoutlen = 10
+vim.o.timeoutlen = 1
 vim.o.timeout = true
 vim.o.updatetime = 50
 

From cea9b407c86945c2112f55621433f91dadcc47a1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 11 Jan 2025 23:08:35 +0100
Subject: [PATCH 572/656] nvim: ruler format tweaks

---
 home/common/nvim/init.lua | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 4487604..03ae7d7 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -19,12 +19,31 @@ function GetIndicators()
   local counts = vim.diagnostic.count(bufnr)
   local errors = counts[vim.diagnostic.severity.ERROR] or 0
   local warnings = counts[vim.diagnostic.severity.WARN] or 0
-  local warn_string = warnings > 0 and "%#DiagnosticWarn# " .. warnings .. " " or "  "
-  local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or "  "
+  local warn_string = warnings > 0 and "%#DiagnosticWarn# " .. warnings .. " " or ""
+  local error_string = errors > 0 and "%#DiagnosticError# " .. errors .. " " or ""
   return warn_string .. error_string
 end
 
-vim.opt.rulerformat = "%40(%=%{%v:lua.GetIndicators()%}%#Label#│ %t %)"
+function CondensedPath()
+  local path = vim.fn.expand("%:p")
+  -- path = vim.fn.fnamemodify(path, ':p')
+  local home = os.getenv("HOME")
+  if home then
+    path = vim.fn.substitute(path, '^' .. home, '~', '')
+  end
+
+  local segments = vim.fn.split(path, '/')
+  if #segments <= 3 then
+    return path
+  end
+
+  local early_path = table.concat(vim.list_slice(segments, 1, #segments - 2), '/')
+  local late_path = table.concat(vim.list_slice(segments, #segments - 1), '/')
+
+  return vim.fn.pathshorten(early_path) .. '/' .. late_path
+end
+
+vim.opt.rulerformat = "%50(%=%{%v:lua.GetIndicators()%}%#Label#%#MsgArea#| %{%v:lua.CondensedPath()%}%)"
 
 -- Search
 vim.opt.ignorecase = true

From 2cd4b5c52a5538f8a966e8d2b5d6e3770cefeb73 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 11 Jan 2025 23:08:35 +0100
Subject: [PATCH 573/656] nvim: picker + cmp tweaks

---
 home/common/nvim/blink-cmp.lua              |  1 +
 home/common/nvim/dieter/lua/dieter/init.lua | 10 ++++++----
 home/common/nvim/init.lua                   |  5 ++---
 home/common/nvim/mini.lua                   |  5 +++--
 4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua
index 26531e4..f635cba 100644
--- a/home/common/nvim/blink-cmp.lua
+++ b/home/common/nvim/blink-cmp.lua
@@ -28,6 +28,7 @@ require 'blink-cmp'.setup({
 
     menu = {
       auto_show = true,
+      border = 'rounded',
       direction_priority = { 'n' },
       draw = {
         components = {
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 7a7d3a2..24a3677 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -34,7 +34,6 @@ local colors = {
     selection = hsl(270, 75, 92),
     highlight_subtle = hsl(0, 0, 94),
     highlight_intense = hsl(42, 100, 30),
-
   },
 
   dark = {
@@ -46,7 +45,7 @@ local colors = {
 
     dimmed = hsl(212, 19, 25),
     -- dimmed_subtle = hsl(212, 19, 70),
-    dimmed_subtle = hsl(212, 5, 65),
+    dimmed_subtle = hsl(212, 19, 50),
 
     highlight_subtle = hsl(212, 27, 11),
     highlight_intense = hsl(58, 100, 60),
@@ -112,6 +111,8 @@ local setupGroups = function(c)
     Special = { link = "NormalNC" },
     Type = { link = "NormalNC" },
 
+    MsgArea = { fg = c.dimmed_subtle },
+
     String = { fg = c.string },
 
     Visual = { bg = c.selection },
@@ -176,8 +177,8 @@ local setupGroups = function(c)
     InclineNormalNC = { bg = c.background },
 
     WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
-    NormalFloat = { bg = c.doc_bg, fg = c.doc_fg },
-    FloatBorder = { fg = c.doc_fg },
+    NormalFloat = { bg = c.background, fg = c.foreground },
+    FloatBorder = { fg = c.foreground },
     FloatTitle = { fg = c.doc_fg, bold = true },
 
     Title = { fg = c.foreground, bold = true },
@@ -193,6 +194,7 @@ local setupGroups = function(c)
     MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
     MiniClueDescSingle = { bg = c.background, fg = c.foreground },
     MiniClueSeparator = { link = "MiniClueBorder" },
+    MiniClueSeparator = { link = "MiniClueBorder" },
 
     MiniCursorWord = { underdotted = true, bold = true, sp = c.diagnostic_hint },
 
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 03ae7d7..9534e5a 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -84,9 +84,8 @@ vim.o.showcmd = false
 vim.o.showmode = false
 vim.o.smoothscroll = true
 vim.o.splitkeep = "screen"
-vim.o.timeoutlen = 1
-vim.o.timeout = true
-vim.o.updatetime = 50
+vim.o.timeout = false
+vim.o.updatetime = 250
 
 -- Use rg
 vim.o.grepprg = [[rg --glob "!.jj" --glob "!.git" --no-heading --vimgrep --follow $*]]
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 297c1c6..f769f93 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -49,15 +49,16 @@ local picker_win_config = function()
     height = height,
     width = width,
     row = 2,
-    col = math.floor((vim.o.columns - width) / 2),
+    col = 5,
   }
 end
 
 require('mini.pick').setup({
   mappings = {
     move_down      = '<tab>',
+    move_up      = '<S-tab>',
     toggle_info    = '<C-k>',
-    toggle_preview = '<C-p>',
+    toggle_preview = 'p',
   },
   options = { use_cache = true },
   window = {

From b5a3d0ec9e06cfa49ae5592c1680b0f737d6dc2b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 11 Jan 2025 23:29:02 +0100
Subject: [PATCH 574/656] nvim: colors

---
 home/common/nvim/dieter/lua/dieter/init.lua | 19 ++++++++-----------
 home/common/nvim/init.lua                   |  6 +++---
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 24a3677..9bf0a9d 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -44,18 +44,17 @@ local colors = {
     accent2 = hsl(40, 57, 57),  -- Yellow
 
     dimmed = hsl(212, 19, 25),
-    -- dimmed_subtle = hsl(212, 19, 70),
     dimmed_subtle = hsl(212, 19, 50),
 
     highlight_subtle = hsl(212, 27, 11),
+    highlight = hsl(212, 27, 18),
     highlight_intense = hsl(58, 100, 60),
 
     dialog_fg = hsl(191, 15, 75),
 
-    -- string = hsl(96, 35, 60),
-    -- string = hsl(80, 79, 83),
-    string = hsl(90, 45, 70),
-    comment = hsl(2, 69, 68),
+    string = hsl(90, 30, 60),
+    -- comment = hsl(2, 69, 68),
+    comment = hsl(216, 30, 55),
     comment_error = hsl(2, 85, 50),
     func = hsl(40, 57, 87),
     member = hsl(213, 45, 75),
@@ -78,7 +77,7 @@ local colors = {
     delete = hsl(350, 100, 40),
     delete_quarter = hsl(350, 100, 15),
 
-    selection = hsl(218, 30, 20),
+    selection = hsl(218, 90, 20),
 
     search_bg = hsl(43, 100, 8),
     search_fg = hsl(43, 100, 85),
@@ -138,13 +137,11 @@ local setupGroups = function(c)
     GitSignsDeleteNr = { link = "DiffDelete" },
 
     -- Treesitter
-    -- ["@function"] = { link = "NormalNC" },
     ["@punctuation.special"] = { fg = c.punc },
     ["@special"] = { link = "NormalNC" },
     ["@variable"] = { link = "NormalNC" },
     ["@variable.member"] = { fg = c.member },
     ["@variable.parameter"] = { fg = c.accent2 },
-    -- ["@lsp.type.variable"] = { fg = c.dimmed_subtle, italic = true },
 
     -- UI Elements
     CursorLine = { bg = c.highlight_subtle },
@@ -166,8 +163,8 @@ local setupGroups = function(c)
     LineNr = { fg = c.dimmed },
     CursorLineNr = { fg = c.dimmed_subtle, bg = c.highlight_subtle },
 
-    IndentLine = { fg = c.dimmed },
-    IndentLineCurrent = { fg = c.dimmed_subtle },
+    IndentLine = { fg = c.highlight },
+    IndentLineCurrent = { fg = c.highlight },
     MiniIndentscopeSymbol = { link = "IndentLine" },
     MiniIndentscopeSymbolOff = { link = "IndentLine" },
 
@@ -239,7 +236,7 @@ local setupGroupsNoColor = function(c)
   g["@variable"] = cl
   g["@variable.member"] = cl
   g["@variable.parameter"] = cl
-  g.Comment = { fg = c.dimmed_subtle, italic = true, bold = true }
+  -- g.Comment = { fg = c.dimmed_subtle, italic = true, bold = true }
   g.CommentError = { link = "Comment" }
   return g
 end
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 9534e5a..0885481 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -7,7 +7,7 @@ vim.g.maplocalleader = ","
 
 vim.opt.cursorline = true
 vim.opt.laststatus = 0
-vim.opt.number = true
+vim.opt.number = false
 vim.opt.relativenumber = false
 vim.opt.ruler = true
 vim.opt.syntax = "on"
@@ -26,7 +26,6 @@ end
 
 function CondensedPath()
   local path = vim.fn.expand("%:p")
-  -- path = vim.fn.fnamemodify(path, ':p')
   local home = os.getenv("HOME")
   if home then
     path = vim.fn.substitute(path, '^' .. home, '~', '')
@@ -43,7 +42,7 @@ function CondensedPath()
   return vim.fn.pathshorten(early_path) .. '/' .. late_path
 end
 
-vim.opt.rulerformat = "%50(%=%{%v:lua.GetIndicators()%}%#Label#%#MsgArea#| %{%v:lua.CondensedPath()%}%)"
+vim.opt.rulerformat = "%50(%=%{%v:lua.GetIndicators()%}%#MsgArea#%{%v:lua.CondensedPath()%}%)%7(%l:%c%)"
 
 -- Search
 vim.opt.ignorecase = true
@@ -179,4 +178,5 @@ vim.keymap.set("n", "<Leader>uc", function()
   end
 end, opts("Toggle Dieter colors"))
 vim.keymap.set("n", "<Leader>uh", "<cmd>InlayHintsToggle<cr>", opts("Toggle inlay hints"))
+vim.keymap.set("n", "<Leader>un", "<cmd>set invnumber<cr>", opts("Toggle line numbers"))
 vim.keymap.set("n", "<Leader>uw", "<cmd>set invwrap<cr>", opts("Toggle line wrapping"))

From a93861071d31515ba8fd970e412c9ed995f1ab54 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 12 Jan 2025 10:01:15 +0100
Subject: [PATCH 575/656] nvim: cleanup

---
 home/common/nvim/dieter/lua/dieter/init.lua | 1 -
 1 file changed, 1 deletion(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 9bf0a9d..08d75af 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -191,7 +191,6 @@ local setupGroups = function(c)
     MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
     MiniClueDescSingle = { bg = c.background, fg = c.foreground },
     MiniClueSeparator = { link = "MiniClueBorder" },
-    MiniClueSeparator = { link = "MiniClueBorder" },
 
     MiniCursorWord = { underdotted = true, bold = true, sp = c.diagnostic_hint },
 

From f8c7a5ecfe98082c97950043652f616548ec6c9c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 12 Jan 2025 10:01:15 +0100
Subject: [PATCH 576/656] nvim: revert minipick preview key

---
 home/common/nvim/mini.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index f769f93..0499268 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -58,7 +58,7 @@ require('mini.pick').setup({
     move_down      = '<tab>',
     move_up      = '<S-tab>',
     toggle_info    = '<C-k>',
-    toggle_preview = 'p',
+    toggle_preview = '<C-p>',
   },
   options = { use_cache = true },
   window = {

From 81f036c147226fab3efe1915149ca03ac1e4ee3f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 12 Jan 2025 10:01:15 +0100
Subject: [PATCH 577/656] nvim: use mini.visits for history w/frecency

---
 home/common/nvim/init.lua | 1 +
 home/common/nvim/mini.lua | 1 +
 2 files changed, 2 insertions(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 0885481..258d834 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -133,6 +133,7 @@ vim.keymap.set({ "n", "v" }, "<Leader>a", vim.lsp.buf.code_action, { remap = tru
 vim.keymap.set("n", "<Leader>af", function()
   vim.lsp.buf.format({ async = true })
 end, opts("Format Buffer"))
+vim.keymap.set('n', '<Leader><Leader>', "<cmd>Pick visit_paths cwd=''<cr>", opts("Visits"))
 vim.keymap.set('n', '<Leader>b', "<cmd>Pick buffers<cr>", opts("Open buffer picker"))
 vim.keymap.set('n', '<Leader>/', "<cmd>Pick grep_live_root<cr>", opts("Search workspace files"))
 vim.keymap.set('n', '<Leader>d', "<cmd>Pick diagnostic<cr>", opts("Open diagnostics picker"))
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 0499268..215b734 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -10,6 +10,7 @@ require('mini.jump').setup()
 require('mini.surround').setup()
 require('mini.splitjoin').setup()
 require('mini.trailspace').setup()
+require('mini.visits').setup()
 
 require('mini.cursorword').setup({
   delay = 800

From 0b6313671c72aa81bb901764a15b38b4b9010897 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 6 Jan 2025 19:03:55 +0100
Subject: [PATCH 578/656] ghostty: reduce font size a bit

---
 home/common/ghostty.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index a05ca7f..99b7338 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -12,7 +12,7 @@
       enableFishIntegration = true;
       package = inputs.ghostty.packages.${pkgs.system}.default;
       settings = {
-        font-size = 14;
+        font-size = 12.5;
         font-family = "TX-02";
         font-family-bold-italic = "Monaspace Xenon";
         font-style-bold = "Bold";
@@ -34,7 +34,7 @@
         gtk-single-instance = true;
         gtk-tabs-location = "hidden";
         gtk-titlebar = false;
-        window-padding-x = 12;
+        window-padding-x = 0;
         window-padding-y = 0;
         window-padding-balance = true;
         window-padding-color = "extend";

From 8e2d04365015032ca3db5d8eb0cc3c46990bab4e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 12 Jan 2025 10:01:15 +0100
Subject: [PATCH 579/656] nvim: add mini.files

---
 home/common/nvim/init.lua | 1 +
 home/common/nvim/mini.lua | 1 +
 2 files changed, 2 insertions(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 258d834..8ef82a3 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -150,6 +150,7 @@ vim.keymap.set('n', '<Leader>s', "<cmd>Pick lsp scope='document_symbol'<cr>", op
 vim.keymap.set('n', '<Leader>S', "<cmd>Pick lsp scope='workspace_symbol'<cr>", opts("Open workspace symbol picker"))
 vim.keymap.set("n", "<Leader>ws", "<C-w>s", opts("Horizontal split"))
 vim.keymap.set("n", "<Leader>wv", "<C-w>v", opts("Vertical split"))
+vim.keymap.set("n", "<m-f>", require('mini.files').open, opts("Open file manager"))
 vim.keymap.set('n', '<tab>', "<cmd>Pick buffers include_current=false<cr>", opts("Buffers"))
 vim.keymap.set("n", "zz", "zt", { remap = true })
 vim.keymap.set({ "n", "v" }, "<Leader>y", '"+y', opts("Yank to clipboard"))
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 215b734..a12b7cf 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -5,6 +5,7 @@ require('mini.bufremove').setup()
 require('mini.comment').setup()
 require('mini.diff').setup()
 require('mini.extra').setup()
+require('mini.files').setup()
 require('mini.icons').setup()
 require('mini.jump').setup()
 require('mini.surround').setup()

From 3b577407f7d7a73bc1e4d0390d1755b33f14110a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 12 Jan 2025 17:18:51 +0100
Subject: [PATCH 580/656] nvim: remove codeium cmp source

---
 home/common/nvim/blink-cmp.lua | 10 ++--------
 home/common/nvim/default.nix   | 10 ----------
 2 files changed, 2 insertions(+), 18 deletions(-)

diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua
index f635cba..8ae4f6c 100644
--- a/home/common/nvim/blink-cmp.lua
+++ b/home/common/nvim/blink-cmp.lua
@@ -61,15 +61,9 @@ require 'blink-cmp'.setup({
   },
 
   sources = {
-    default = { 'lsp', 'codeium' },
+    default = { 'lsp' },
     cmdline = {},
-    providers = {
-      codeium = {
-        name = "codeium",
-        module = 'blink.compat.source',
-        score_offset = -100,
-      },
-    },
+    providers = {},
   },
 
 })
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 7056678..57e68e6 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -114,16 +114,6 @@ in
         '';
       }
 
-      {
-        plugin = codeium-nvim;
-        type = "lua";
-        config = ''
-          require'codeium'.setup {
-            enable_chat = false,
-          }
-        '';
-      }
-
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
           name = "neocodeium";

From ad82eb1cbf1f3708c292253e60ccd2624781f084 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 12 Jan 2025 22:54:28 +0100
Subject: [PATCH 581/656] nvim: Add autoformat on save w/toggle ui

---
 home/common/nvim/init.lua | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 8ef82a3..ed4052d 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -118,6 +118,29 @@ vim.keymap.set({ "i", "s" }, "<Tab>", function()
 end, { expr = true })
 
 
+-- Autoformat
+
+vim.g.autoformat_enabled = true -- set to true by default
+
+vim.api.nvim_create_user_command('ToggleAutoFormat', function()
+  vim.g.autoformat_enabled = not vim.g.autoformat_enabled
+  print('Autoformatting ' .. (vim.g.autoformat_enabled and 'enabled' or 'disabled'))
+end, {})
+
+vim.api.nvim_create_augroup("AutoFormat", {})
+
+vim.api.nvim_create_autocmd("BufWritePre", {
+  group = "AutoFormat",
+  callback = function()
+    if vim.g.autoformat_enabled then
+      vim.lsp.buf.format({
+        async = false,
+        timeout_ms = 2000 -- Adjust timeout as needed
+      })
+    end
+  end,
+})
+
 -- Keymap
 local opts = function(label)
   return { noremap = true, silent = true, desc = label }
@@ -179,6 +202,7 @@ vim.keymap.set("n", "<Leader>uc", function()
     vim.cmd [[colorscheme dieter-nocolor]]
   end
 end, opts("Toggle Dieter colors"))
+vim.keymap.set("n", "<Leader>uf", "<cmd>ToggleAutoFormat<cr>", opts("Toggle autoformat on save"))
 vim.keymap.set("n", "<Leader>uh", "<cmd>InlayHintsToggle<cr>", opts("Toggle inlay hints"))
 vim.keymap.set("n", "<Leader>un", "<cmd>set invnumber<cr>", opts("Toggle line numbers"))
 vim.keymap.set("n", "<Leader>uw", "<cmd>set invwrap<cr>", opts("Toggle line wrapping"))

From a6013523fa68fdfd9ae8c20379acb9f55a36cd88 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 12 Jan 2025 22:54:28 +0100
Subject: [PATCH 582/656] nvim: cleanup

---
 home/common/nvim/mini.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index a12b7cf..947528f 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -68,6 +68,7 @@ require('mini.pick').setup({
   },
 })
 
+local MiniPick = require('mini.pick')
 MiniPick.registry.projects = function(local_opts)
   local root = vim.fn.expand("~/src")
 

From de6547851a5bfc6835a86cde694352e851beee1d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 13 Jan 2025 18:40:36 +0100
Subject: [PATCH 583/656] fish: remove unused config

---
 files/config/fish/go-task.fish |  37 ----
 files/config/fish/jj.fish      | 338 ---------------------------------
 home/common/fish.nix           |  67 ++++---
 3 files changed, 32 insertions(+), 410 deletions(-)
 delete mode 100644 files/config/fish/go-task.fish
 delete mode 100644 files/config/fish/jj.fish

diff --git a/files/config/fish/go-task.fish b/files/config/fish/go-task.fish
deleted file mode 100644
index 6c7e2cf..0000000
--- a/files/config/fish/go-task.fish
+++ /dev/null
@@ -1,37 +0,0 @@
-set GO_TASK_PROGNAME task
-
-function __task_get_tasks --description "Prints all available tasks with their description"
-    # Read the list of tasks (and potential errors)
-    $GO_TASK_PROGNAME --list-all 2>&1 | read -lz rawOutput
-
-    # Return on non-zero exit code (for cases when there is no Taskfile found or etc.)
-    if test $status -ne 0
-        return
-    end
-
-    # Grab names and descriptions (if any) of the tasks
-    set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s*\(.*\)\s*(aliases.*/\1\t\2/' -e 's/\* \(.*\):\s*\(.*\)/\1\t\2/'| string split0)
-    if test $output
-        echo $output
-    end
-end
-
-complete -c $GO_TASK_PROGNAME -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was
-    specified.' -xa "(__task_get_tasks)"
-
-complete -c $GO_TASK_PROGNAME -s c -l color -d 'colored output (default true)'
-complete -c $GO_TASK_PROGNAME -s d -l dir -d 'sets directory of execution'
-complete -c $GO_TASK_PROGNAME -l dry -d 'compiles and prints tasks in the order that they would be run, without executing them'
-complete -c $GO_TASK_PROGNAME -s f -l force -d 'forces execution even when the task is up-to-date'
-complete -c $GO_TASK_PROGNAME -s h -l help -d 'shows Task usage'
-complete -c $GO_TASK_PROGNAME -s i -l init -d 'creates a new Taskfile.yml in the current folder'
-complete -c $GO_TASK_PROGNAME -s l -l list -d 'lists tasks with description of current Taskfile'
-complete -c $GO_TASK_PROGNAME -s o -l output -d 'sets output style: [interleaved|group|prefixed]' -xa "interleaved group prefixed"
-complete -c $GO_TASK_PROGNAME -s p -l parallel -d 'executes tasks provided on command line in parallel'
-complete -c $GO_TASK_PROGNAME -s s -l silent -d 'disables echoing'
-complete -c $GO_TASK_PROGNAME -l status -d 'exits with non-zero exit code if any of the given tasks is not up-to-date'
-complete -c $GO_TASK_PROGNAME -l summary -d 'show summary about a task'
-complete -c $GO_TASK_PROGNAME -s t -l taskfile -d 'choose which Taskfile to run. Defaults to "Taskfile.yml"'
-complete -c $GO_TASK_PROGNAME -s v -l verbose -d 'enables verbose mode'
-complete -c $GO_TASK_PROGNAME -l version -d 'show Task version'
-complete -c $GO_TASK_PROGNAME -s w -l watch -d 'enables watch of the given task'
diff --git a/files/config/fish/jj.fish b/files/config/fish/jj.fish
deleted file mode 100644
index 9a6257e..0000000
--- a/files/config/fish/jj.fish
+++ /dev/null
@@ -1,338 +0,0 @@
-# TODO: passthru other args? E.g.. --at-operation, --repository
-function __jj
-    command jj --ignore-working-copy --color=never --quiet $argv 2>/dev/null
-end
-
-# Aliases
-# Based on https://github.com/fish-shell/fish-shell/blob/cd71359c42f633d9d71a63591ae16d150407a2b2/share/completions/git.fish#L625.
-#
-# Aliases are stored in global variables.
-# `__jj_aliases` is a list of all aliases and `__jj_alias_$alias` is the command line for the alias.
-function __jj_add_alias
-    set -l alias $argv[1]
-    set -l alias_escaped (string escape --style=var -- $alias)
-    set -g __jj_alias_$alias_escaped $argv
-    set --append -g __jj_aliases $alias
-end
-
-__jj config list aliases -T 'concat(name, "\t", value, "\n")' --include-defaults | while read -l config_alias
-    set -l parsed (string match --regex '^aliases\.(.+)\t(.*)$' --groups-only -- $config_alias)
-    set -l alias $parsed[1]
-    set -l command $parsed[2]
-    set -l args $alias
-    # Replace wrapping `[]` if any
-    set -l command (string replace -r --all '^\[|]$' ""  -- $command)
-    while test (string length -- $command) -gt 0
-        set -l parsed (string match -r '^"((?:\\\"|[^"])*?)"(?:,\s)?(.*)$' --groups-only  -- $command)
-        set --append args $parsed[1]
-        set command $parsed[2]
-    end
-    __jj_add_alias $args
-end
-
-__jj_add_alias ci commit
-__jj_add_alias desc describe
-__jj_add_alias op operation
-__jj_add_alias st status
-
-# Resolve aliases that call another alias.
-for alias in $__jj_aliases
-    set -l handled $alias
-
-    while true
-        set -l alias_escaped (string escape --style=var -- $alias)
-        set -l alias_varname __jj_alias_$alias_escaped
-        set -l aliased_command $$alias_varname[1][2]
-        set -l aliased_escaped (string escape --style=var -- $aliased_command)
-        set -l aliased_varname __jj_alias_$aliased_escaped
-        set -q $aliased_varname
-        or break
-
-        # Prevent infinite recursion
-        contains $aliased_escaped $handled
-        and break
-
-        # Expand alias in cmdline
-        set -l aliased_cmdline $$aliased_varname[1][2..-1]
-        set --append aliased_cmdline $$alias_varname[1][3..-1]
-        set -g $alias_varname $$alias_varname[1][1] $aliased_cmdline
-        set --append handled $aliased_escaped
-    end
-end
-
-function __jj_aliases_with_descriptions
-    for alias in $__jj_aliases
-        set -l alias_escaped (string escape --style=var -- $alias)
-        set -l alias_varname __jj_alias_$alias_escaped
-        set -l aliased_cmdline (string join " " -- $$alias_varname[1][2..-1] | string replace -r --all '\\\"' '"')
-        printf "%s\talias: %s\n" $alias $aliased_cmdline
-    end
-end
-
-# Based on https://github.com/fish-shell/fish-shell/blob/2d4e42ee93327b9cfd554a0d809f85e3d371e70e/share/functions/__fish_seen_subcommand_from.fish.
-# Test to see if we've seen a subcommand from a list.
-# This logic may seem backwards, but the commandline will often be much shorter than the list.
-function __jj_seen_subcommand_from
-    set -l cmd (commandline -opc)
-    set -e cmd[1]
-
-    # Check command line arguments first.
-    for i in $cmd
-        if contains -- $i $argv
-            return 0
-        end
-    end
-
-    # Check aliases.
-    set -l alias $cmd[1]
-    set -l alias_escaped (string escape --style=var -- $alias)
-    set -l varname __jj_alias_$alias_escaped
-    set -q $varname
-    or return 1
-
-    for i in $$varname[1][2..-1]
-        if contains -- $i $argv
-            return 0
-        end
-    end
-
-    return 1
-end
-
-function __jj_changes
-    __jj log --no-graph --limit 1000 -r $argv[1] \
-        -T 'separate("\t", change_id.shortest(), if(description, description.first_line(), "(no description set)")) ++ "\n"'
-end
-
-function __jj_bookmarks
-    set -f filter $argv[1]
-    if string length --quiet -- $argv[2]
-        __jj bookmark list --all-remotes -r "$argv[2]" \
-            -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted bookmark)\") ++ \"\n\")"
-    else
-        __jj bookmark list --all-remotes \
-            -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted bookmark)\") ++ \"\n\")"
-    end
-end
-
-function __jj_all_bookmarks
-    __jj_bookmarks '!remote || !remote.starts_with("git")' $argv[1]
-end
-
-function __jj_local_bookmarks
-    __jj_bookmarks '!remote' ''
-end
-
-function __jj_remote_bookmarks
-    __jj_bookmarks 'remote && !remote.starts_with("git")' ''
-end
-
-function __jj_all_changes
-    if string length --quiet -- $argv[1]
-        set -f REV $argv[1]
-    else
-        set -f REV "all()"
-    end
-    __jj_changes $REV
-    __jj_all_bookmarks $REV
-end
-
-function __jj_mutable_changes
-    set -f REV "mutable()"
-    __jj_changes $REV
-    __jj_all_bookmarks $REV
-end
-
-function __jj_revision_modified_files
-    if test $argv[1] = "@"
-        set -f suffix ""
-    else
-        set -l change_id (__jj log --no-graph --limit 1 -T 'change_id.shortest()')
-        set -f suffix " in $change_id"
-    end
-
-    __jj diff -r $argv[1] --summary | while read -l line
-        set -l file (string split " " -m 1 -- $line)
-        switch $file[1]
-            case M
-                set -f change Modified
-            case D
-                set -f change Deleted
-            case A
-                set -f change Added
-        end
-        printf "%s\t%s%s\n" $file[2] $change $suffix
-    end
-end
-
-function __jj_remotes
-    __jj git remote list | while read -l remote
-        printf "%s\t%s\n" (string split " " -m 1 -- $remote)
-    end
-end
-
-function __jj_operations
-    __jj operation log --no-graph --limit 1000 -T 'separate("\t", id.short(), description) ++ "\n"'
-end
-
-function __jj_parse_revision
-    set -l cmd (commandline -opc)
-    set -e cmd[1]
-    set -l return_next false
-    set -l return_value 1
-
-    # Check aliases.
-    set -l alias $cmd[1]
-    set -l alias_escaped (string escape --style=var -- $alias)
-    set -l varname __jj_alias_$alias_escaped
-
-    if set -q $varname
-        set cmd $$varname[1][2..-1] $cmd[2..-1]
-    end
-
-    # Check command line arguments first.
-    for i in $cmd
-        if $return_next
-            echo $i
-            set return_value 0
-        else if contains -- $i -r --revision --from
-            set return_next true
-        else
-            set -l match (string match --regex '^(?:-r=?|--revision=|--from=)(.+)\s*$' --groups-only -- $i)
-            if set -q match[1]
-                echo $match[1]
-                set return_value 0
-            end
-        end
-    end
-
-    return $return_value
-end
-
-function __jj_revision_files
-    set -l description (__jj log --no-graph --limit 1 -r $argv[1] -T 'change_id.shortest() ++ ": " ++ coalesce(description.first_line().substr(0, 30), "(no description set)")')
-    __jj file list -r $argv[1] | while read -l file
-        printf "%s\t%s\n" $file $description
-    end
-end
-
-function __jj_revision_conflicted_files
-    __jj resolve --list -r $argv[1] | while read -l line
-        set -l file (string split " " -m 1 -- $line)
-        printf "%s\t%s\n" $file[1] $file[2]
-    end
-end
-
-function __jj_parse_revision_files
-    set -l rev (__jj_parse_revision)
-    if test $status -eq 1
-        set rev "@"
-    end
-    __jj_revision_files $rev
-end
-
-function __jj_parse_revision_conflicted_files
-    set -l rev (__jj_parse_revision)
-    if test $status -eq 1
-        set rev "@"
-    end
-    __jj_revision_conflicted_files $rev
-end
-
-function __jj_parse_revision_files_or_wc_modified_files
-    set -l revs (__jj_parse_revision)
-    if test $status -eq 1
-        __jj_revision_modified_files "@"
-    else
-        for rev in $revs
-            __jj_revision_files $rev
-        end
-    end
-end
-
-function __jj_parse_revision_modified_files_or_wc_modified_files
-    set -l revs (__jj_parse_revision)
-    if test $status -eq 1
-        __jj_revision_modified_files "@"
-    else
-        for rev in $revs
-            __jj_revision_modified_files $rev
-        end
-    end
-end
-
-# Aliases.
-complete -f -c jj -n __fish_use_subcommand -a '(__jj_aliases_with_descriptions)'
-
-# Files.
-complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from show' -ka '(__jj_parse_revision_files)'
-complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from chmod' -ka '(__jj_parse_revision_files)'
-complete -f -c jj -n '__jj_seen_subcommand_from commit' -ka '(__jj_revision_modified_files "@")'
-complete -c jj -n '__jj_seen_subcommand_from diff' -ka '(__jj_parse_revision_files_or_wc_modified_files)'
-complete -c jj -n '__jj_seen_subcommand_from interdiff' -ka '(__jj_parse_revision_files)'
-complete -f -c jj -n '__jj_seen_subcommand_from resolve' -ka '(__jj_parse_revision_conflicted_files)'
-complete -f -c jj -n '__jj_seen_subcommand_from restore' -ka '(__jj_parse_revision_files_or_wc_modified_files)'
-complete -f -c jj -n '__jj_seen_subcommand_from split' -ka '(__jj_parse_revision_modified_files_or_wc_modified_files)'
-complete -f -c jj -n '__jj_seen_subcommand_from squash' -ka '(__jj_parse_revision_modified_files_or_wc_modified_files)'
-complete -f -c jj -n '__jj_seen_subcommand_from untrack' -ka '(__jj_parse_revision_files_or_wc_modified_files)'
-
-# Revisions.
-complete -f -c jj -n '__jj_seen_subcommand_from abandon' -ka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from backout' -s r -l revision -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from backout' -s d -l destination -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from show' -s r -l revision -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from chmod' -s r -l revision -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from describe' -ka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from diff' -s r -l revision -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from diff' -l from -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from diff' -l to -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -s r -l revision -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -l from -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -l to -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from duplicate' -ka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from edit' -ka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from list' -s r -l revision -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from interdiff' -l from -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from interdiff' -l to -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from log' -s r -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from new' -ka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from new' -s A -l after -l insert-after -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from new' -s B -l before -l insert-before -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from obslog' -s r -l revision -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from parallelize' -ka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s r -l revisions -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s s -l source -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s b -l bookmark -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s d -l destination -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s A -l after -l insert-after -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s B -l before -l insert-before -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from resolve' -s r -l revision -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from restore' -l from -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from restore' -l to -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from restore' -s c -l changes-in -rka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from show' -ka '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from split' -s r -l revision -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from squash' -s r -l revision -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from squash' -l from -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from squash' -l to -l into -rka '(__jj_mutable_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from unsquash' -s r -l revision -rka '(__jj_mutable_changes)'
-
-# Bookmarks
-complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from delete forget rename set d f r s' -ka '(__jj_local_bookmarks)'
-complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from track t' -ka '(__jj_bookmarks "remote && !tracked" "")'
-complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from untrack' -ka '(__jj_bookmarks "remote && tracked && !remote.starts_with(\"git\")" "")'
-complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from create move set c m s' -s r -l revision -kra '(__jj_all_changes)'
-complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from move' -l from -rka '(__jj_changes "all()")'
-complete -f -c jj -n '__jj_seen_subcommand_from bookmark; and __jj_seen_subcommand_from move' -l to -rka '(__jj_changes "all()")'
-
-# Git.
-complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from push' -s c -l change -kra '(__jj_changes "all()")'
-complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from push' -s r -l revisions -kra '(__jj_changes "all()")'
-complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -s b -l bookmark -rka '(__jj_local_bookmarks)'
-complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -l remote -rka '(__jj_remotes)'
-complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from remote; and __jj_seen_subcommand_from remove rename set-url' -ka '(__jj_remotes)'
-
-# Operations.
-complete -f -c jj -l at-op -l at-operation -rka '(__jj_operations)'
-complete -f -c jj -n '__jj_seen_subcommand_from undo' -ka '(__jj_operations)'
-complete -f -c jj -n '__jj_seen_subcommand_from operation; and __jj_seen_subcommand_from abandon undo restore' -ka '(__jj_operations)'
diff --git a/home/common/fish.nix b/home/common/fish.nix
index 03cf86f..e5d1c45 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -3,7 +3,6 @@
   programs.fish = {
     enable = true;
 
-
     plugins = [
       {
         name = "transient";
@@ -57,42 +56,42 @@
       '';
 
       fish_jj_prompt.body = ''
-        if not command -sq jj || not jj root --quiet &>/dev/null
-          return 1
-        end
+          if not command -sq jj || not jj root --quiet &>/dev/null
+            return 1
+          end
 
-      jj log --ignore-working-copy --no-graph --color never -r @ -T '
-        surround(
-          " \e[2;3m",
-          "\e[0m",
-          separate(
-            " ",
-            surround(
-              "\e[0;2;3m",
-              "\e[0m",
-              coalesce(
-                surround(
-                  "\e[1;2;3m❝",
-                  "❞\e[0m",
-                  if(
-                    description.first_line().substr(0, 80).starts_with(description.first_line()),
-                    description.first_line().substr(0, 80),
-                    description.first_line().substr(0, 79) ++ "…"
-                  )
+        jj log --ignore-working-copy --no-graph --color never -r @ -T '
+          surround(
+            " \e[2;3m",
+            "\e[0m",
+            separate(
+              " ",
+              surround(
+                "\e[0;2;3m",
+                "\e[0m",
+                coalesce(
+                  surround(
+                    "\e[1;2;3m❝",
+                    "❞\e[0m",
+                    if(
+                      description.first_line().substr(0, 80).starts_with(description.first_line()),
+                      description.first_line().substr(0, 80),
+                      description.first_line().substr(0, 79) ++ "…"
+                    )
+                  ),
+                  "…"
                 ),
-                "…"
               ),
-            ),
-            surround("\e[0;1;95m ", "\e[0;2;3m", change_id.shortest()),
-            surround("\e[0;35m󰸕 ", "\e[0m", bookmarks.join("╱")),
-            surround("\e[0;34m ",   "\e[0;2;3m", commit_id.shortest()),
-            if(conflict,  "󰂭"),
-            if(empty,     ""),
-            if(divergent, ""),
-            if(hidden,    "󰘓"),
+              surround("\e[0;1;95m ", "\e[0;2;3m", change_id.shortest()),
+              surround("\e[0;35m󰸕 ", "\e[0m", bookmarks.join("╱")),
+              surround("\e[0;34m ",   "\e[0;2;3m", commit_id.shortest()),
+              if(conflict,  "󰂭"),
+              if(empty,     ""),
+              if(divergent, ""),
+              if(hidden,    "󰘓"),
+            )
           )
-        )
-      '
+        '
       '';
 
       fish_prompt.body = ''
@@ -117,8 +116,6 @@
     interactiveShellInit = lib.concatStringsSep "\n" [
       (builtins.readFile ../../files/config/fish/config.fish)
       (builtins.readFile ../../files/config/fish/semantic-prompt.fish)
-      (builtins.readFile ../../files/config/fish/go-task.fish)
-      (builtins.readFile ../../files/config/fish/jj.fish)
       (builtins.readFile ../../files/config/fish/vcs.fish)
     ];
 

From fac0a155e23b7e92c99b4678976d71a837aad4e9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 13 Jan 2025 18:40:36 +0100
Subject: [PATCH 584/656] fish: jj dynamic completion

---
 files/config/fish/vcs.fish | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/files/config/fish/vcs.fish b/files/config/fish/vcs.fish
index f3c179e..0fa3e43 100644
--- a/files/config/fish/vcs.fish
+++ b/files/config/fish/vcs.fish
@@ -64,3 +64,7 @@ bind \ea vcs_log
 bind \ee vcs_broot
 bind \eS vcs_diff
 bind \es vcs_status
+
+# jj completions
+
+COMPLETE=fish jj | source

From eb06ace77da001eb7b5e102e0ebdfedf1a7cc29c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 13 Jan 2025 18:40:36 +0100
Subject: [PATCH 585/656] nix: update

---
 flake.lock | 54 +++++++++++++++++++++++++++---------------------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/flake.lock b/flake.lock
index b4a05c0..b723216 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1736566108,
-        "narHash": "sha256-r+FXWU/hfgO3lAHYs9Q03iCShnC42mZd1pnmIIp8Z9k=",
+        "lastModified": 1736911212,
+        "narHash": "sha256-OLly4X2kN1tDb2gMYcWeim6uJECPoc52ltJsz1iD5Ug=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "918ccdba5cc65ccd1fb48a54c71306d869299441",
+        "rev": "ff9414d9ea7b16a375d41cde8f6f193de7e5db72",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736508663,
-        "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=",
+        "lastModified": 1736785676,
+        "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc",
+        "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1736553940,
-        "narHash": "sha256-xicqHwvq2S/Y36DwcY+xGy6+4jdFT78bclBhwjs4KJY=",
+        "lastModified": 1736924666,
+        "narHash": "sha256-1Mnw9hNMmsnfZuNbeTgmRev99vLZ9FsgrfCChjwnzSk=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "b2237869f288c278b6fd429445d460cb44a0e788",
+        "rev": "7e61ee6d94536d30888c2fbeb1e9d53f4aa3f8b8",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1736553525,
-        "narHash": "sha256-Kfx1r0yVTTa83EdP7Ta5ValnXy4ak3F10hHCymDAU7o=",
+        "lastModified": 1736864394,
+        "narHash": "sha256-QEbgudJG4M9kVmuhGDEG2EP397zAbPmnZ5DX2GFwZCI=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "fbe546e25d21f3184814d696c329d23d146bd615",
+        "rev": "e8a6c1b02122852da83dc52184e78369598d8240",
         "type": "github"
       },
       "original": {
@@ -302,11 +302,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736440205,
-        "narHash": "sha256-QJgTI//KEGuEJC6FDxuI9Dq8PewIpnxD2NVx2/OHbfc=",
+        "lastModified": 1736652904,
+        "narHash": "sha256-8uolHABgroXqzs03QdulHp8H9e5kWQZnnhcda1MKbBM=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "a2200b499efa01ca8646173e94cdfcc93188f2b8",
+        "rev": "271e5bd7c57e1f001693799518b10a02d1123b12",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1736200483,
-        "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=",
+        "lastModified": 1736867362,
+        "narHash": "sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751",
+        "rev": "9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1736420959,
-        "narHash": "sha256-dMGNa5UwdtowEqQac+Dr0d2tFO/60ckVgdhZU9q2E2o=",
+        "lastModified": 1736848588,
+        "narHash": "sha256-9B6fQqphF3j9lpcxQnKyIUgp3NyGi7ikb9CjCYqixcY=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "32af3611f6f05655ca166a0b1f47b57c762b5192",
+        "rev": "357cd3dfdb8993af11268d755d53357720675e66",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1736320768,
-        "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=",
+        "lastModified": 1736848588,
+        "narHash": "sha256-9B6fQqphF3j9lpcxQnKyIUgp3NyGi7ikb9CjCYqixcY=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8",
+        "rev": "357cd3dfdb8993af11268d755d53357720675e66",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1736344531,
-        "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=",
+        "lastModified": 1736798957,
+        "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912",
+        "rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3",
         "type": "github"
       },
       "original": {

From 62246715bbfd985c3541b27657475aa5b74c27a0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 13 Jan 2025 18:40:36 +0100
Subject: [PATCH 586/656] jj: fancy 's' command as default
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

new `util exec` is very nice 😀
---
 home/dln/home.nix | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index 0770df0..7c306b7 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -65,12 +65,7 @@ in
       };
 
       ui = {
-        "default-command" = [
-          "log"
-          "--limit=10"
-          "-T"
-          "builtin_log_comfortable"
-        ];
+        "default-command" = [ "s" ];
         pager = "delta";
       };
 
@@ -112,23 +107,28 @@ in
         ];
         d = [
           "diff"
-          "--tool=difftu"
+          "--tool=difft"
         ];
         dd = [
           "diff"
           "--git"
         ];
-        ds = [
+        du = [
           "diff"
-          "--tool=difft"
-        ];
-        s = [
-          "show"
           "--tool=difftu"
         ];
-        ss = [
-          "show"
-          "--tool=difft"
+        s = [
+          "util"
+          "exec"
+          "--"
+          "bash"
+          "-c"
+          ''
+            printf '\e[38;5;240m\u2504%.0s\e[0m' $(seq 1 $(tput cols)) '\n'
+            jj show --stat
+            printf '\e[38;5;240m\u2504%.0s\e[0m' $(seq 1 $(tput cols)) '\n'
+            jj log --limit=15 -T builtin_log_comfortable
+          ''
         ];
       };
 

From 6b1a4b5d043a126996001f1a4b41cefded4b184e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 15 Jan 2025 14:40:47 +0100
Subject: [PATCH 587/656] jj: pass args to 's' alias

---
 home/dln/home.nix | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index 7c306b7..f64681d 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -124,11 +124,17 @@ in
           "bash"
           "-c"
           ''
+            #!/usr/bin/env bash
+            set -eo pipefail
+            if [ -n "$1" ]; then
+              exec jj show --stat --tool=difft "$@"
+            fi
             printf '\e[38;5;240m\u2504%.0s\e[0m' $(seq 1 $(tput cols)) '\n'
             jj show --stat
             printf '\e[38;5;240m\u2504%.0s\e[0m' $(seq 1 $(tput cols)) '\n'
             jj log --limit=15 -T builtin_log_comfortable
           ''
+          ""
         ];
       };
 

From dcc102f9bf7a04b5cabc039c6629265888faad37 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 15 Jan 2025 14:54:28 +0100
Subject: [PATCH 588/656] ghostty: keymap c-m + friends

---
 home/common/ghostty.nix | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 99b7338..971ade9 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -44,7 +44,10 @@
         keybind = [
           "alt+shift+c=copy_to_clipboard"
           "alt+shift+v=paste_from_clipboard"
+          "ctrl+i=text:\\x09"
+          "ctrl+m=text:\\x0D"
           "ctrl+tab=goto_split:previous"
+          "ctrl+[=text:\\x1B"
           "super+enter=toggle_fullscreen"
         ];
       };

From cc9fc76545fb8f00a9e824634693fc6bc98fe2cf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 15 Jan 2025 14:54:28 +0100
Subject: [PATCH 589/656] jj: fancier status

---
 home/common/ghostty.nix | 44 ++++++++++++++++++++---------------------
 home/dln/home.nix       |  9 +++++----
 2 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 971ade9..6f9b5ea 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -58,28 +58,28 @@
         background = if config.patagia.oled.enable then "#000000" else "#14151a";
       in
       ''
-      background = "${background}"
-      foreground = #b7bec7
-      cursor-color = #e7e7b7
-      selection-background = #84979f
-      selection-foreground = #000000
-      palette = 0=#000000
-      palette = 1=#ff0035
-      palette = 2=#85ff00
-      palette = 3=#ffc900
-      palette = 4=#00a7ff
-      palette = 5=#cb01ff
-      palette = 6=#00e0ff
-      palette = 7=#b7bec7
-      palette = 8=#444444
-      palette = 9=#ff8c88
-      palette = 10=#baff94
-      palette = 11=#ffe090
-      palette = 12=#88ccff
-      palette = 13=#e38dff
-      palette = 14=#97eeff
-      palette = 15=#ffffff
-    '';
+        background = "${background}"
+        foreground = #b7bec7
+        cursor-color = #e7e7b7
+        selection-background = #84979f
+        selection-foreground = #000000
+        palette = 0=#000000
+        palette = 1=#ff0035
+        palette = 2=#85ff00
+        palette = 3=#ffc900
+        palette = 4=#00a7ff
+        palette = 5=#cb01ff
+        palette = 6=#00e0ff
+        palette = 7=#b7bec7
+        palette = 8=#444444
+        palette = 9=#ff8c88
+        palette = 10=#baff94
+        palette = 11=#ffe090
+        palette = 12=#88ccff
+        palette = 13=#e38dff
+        palette = 14=#97eeff
+        palette = 15=#ffffff
+      '';
 
     xdg.configFile."ghostty/themes/PatagiaLight".text = ''
       background = #fefeff
diff --git a/home/dln/home.nix b/home/dln/home.nix
index f64681d..8288f2c 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -126,13 +126,14 @@ in
           ''
             #!/usr/bin/env bash
             set -eo pipefail
-            if [ -n "$1" ]; then
-              exec jj show --stat --tool=difft "$@"
-            fi
             printf '\e[38;5;240m\u2504%.0s\e[0m' $(seq 1 $(tput cols)) '\n'
             jj show --stat
             printf '\e[38;5;240m\u2504%.0s\e[0m' $(seq 1 $(tput cols)) '\n'
-            jj log --limit=15 -T builtin_log_comfortable
+            if [ -n "$1" ]; then
+              jj diff --tool=difft -r "$@"
+            else
+              jj log --limit=15 -T builtin_log_comfortable
+            fi
           ''
           ""
         ];

From 1b367e232261a0b5c2fcc952992a4923583c3133 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 15 Jan 2025 14:54:28 +0100
Subject: [PATCH 590/656] nemo: add tpm2 tooling + perms

---
 hosts/nemo/default.nix | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index cc1db74..3f0fa01 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -170,6 +170,7 @@
     lm_sensors
     pam_rssh
     openconnect
+    tpm2-tools
     v4l-utils
   ];
 
@@ -177,10 +178,19 @@
     OTEL_EXPORTER_OTLP_ENDPOINT = "https://otel.aarn.patagia.net";
   };
 
+  security.tpm2 = {
+    enable = true;
+    pkcs11.enable = true;
+    tctiEnvironment.enable = true;
+  };
+
   users.users.dln = {
     isNormalUser = true;
     description = "Daniel Lundin";
-    extraGroups = [ "wheel" ];
+    extraGroups = [
+      "tss"
+      "wheel"
+    ];
     openssh.authorizedKeys.keys = [
       "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIIHMAEZx02kbHrEygyPQYStiXlrIe6EIqBCv7anIkL0pAAAABHNzaDo= dln@dinky"
       "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJNOBFoU7Cdsgi4KpYRcv7EhR/8kD4DYjEZnwk6urRx7AAAABHNzaDo= dln@nemo"
@@ -190,7 +200,10 @@
   users.users.lsjostro = {
     isNormalUser = true;
     description = "Lars Sjöström";
-    extraGroups = [ "wheel" ];
+    extraGroups = [
+      "tss"
+      "wheel"
+    ];
     openssh.authorizedKeys.keys = [
       "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBJ10mLOpInoqDaySyrxbzvcOrJfLw48Y6eWHa9501lw+hEEBXya3ib7nlvpCqEQJ8aPU5fVRqpkOW5zSimCiRbwAAAAEc3NoOg=="
       "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBLpoKvsZDIQQLfgzJhe1jAQubBNxjydkj8UfdUPaSXqgfB02OypMOC1m5ZuJYcQIxox0I+4Z8xstFhYP6s8zKZwAAAAEc3NoOg=="

From 48af3d54499494be6c3f2024b94e261abc4d547b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 15 Jan 2025 14:54:28 +0100
Subject: [PATCH 591/656] ghostty: use window decorations

---
 home/common/ghostty.nix | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 6f9b5ea..a25f6e8 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -25,17 +25,13 @@
         adjust-underline-thickness = -2;
 
         mouse-hide-while-typing = true;
-        cursor-style = "block";
         unfocused-split-opacity = 1.0;
 
         shell-integration = "fish";
 
-        window-decoration = true;
-        gtk-single-instance = true;
         gtk-tabs-location = "hidden";
-        gtk-titlebar = false;
-        window-padding-x = 0;
-        window-padding-y = 0;
+        gtk-titlebar = true;
+        gtk-titlebar-hide-when-maximized = true;
         window-padding-balance = true;
         window-padding-color = "extend";
         window-theme = "system";

From a07cdcc95974006b32078ee86f77f99ab4d13d70 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 15 Jan 2025 14:54:28 +0100
Subject: [PATCH 592/656] desktop: add supersonic music player

---
 flake.lock           | 78 ++++++++++++++++++++++----------------------
 home/dln/desktop.nix |  1 +
 2 files changed, 40 insertions(+), 39 deletions(-)

diff --git a/flake.lock b/flake.lock
index b723216..a6a4aa0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -78,11 +78,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733312601,
-        "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
+        "lastModified": 1736143030,
+        "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
+        "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
         "type": "github"
       },
       "original": {
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1736911212,
-        "narHash": "sha256-OLly4X2kN1tDb2gMYcWeim6uJECPoc52ltJsz1iD5Ug=",
+        "lastModified": 1737085478,
+        "narHash": "sha256-EzdUQf1ljtGIWMmscVzoW3rUxxN3UKyNXOXbzUvz3BQ=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "ff9414d9ea7b16a375d41cde8f6f193de7e5db72",
+        "rev": "72d085525b22d66468c5969a4d507a0fa68d4a04",
         "type": "github"
       },
       "original": {
@@ -157,11 +157,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735882644,
-        "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
+        "lastModified": 1737301351,
+        "narHash": "sha256-2UNmLCKORvdBRhPGI8Vx0b6l7M8/QBey/nHLIxOl4jE=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
+        "rev": "15a87cedeb67e3dbc8d2f7b9831990dffcf4e69f",
         "type": "github"
       },
       "original": {
@@ -201,11 +201,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1735695978,
-        "narHash": "sha256-cwk53OX1S1bCFY09zydubZNmmwcx9l5XEba8mVYuNE4=",
+        "lastModified": 1736917206,
+        "narHash": "sha256-JTBWmyGf8K1Rwb+gviHIUzRJk/sITtT+72HXFkTZUjo=",
         "owner": "hercules-ci",
         "repo": "hercules-ci-effects",
-        "rev": "f6233b5cfbada692d93a73d6ed35bdbfd0fdb9c4",
+        "rev": "afd0a42e8c61ebb56899315ee4084a8b2e4ff425",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736785676,
-        "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=",
+        "lastModified": 1737394973,
+        "narHash": "sha256-EW4oXMfnfA5sNM9Jqm+y98horWVvN66Gu7YIcEpFYZc=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d",
+        "rev": "9786661d57c476021c8a0c3e53bf9fa2b4f3328b",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1736924666,
-        "narHash": "sha256-1Mnw9hNMmsnfZuNbeTgmRev99vLZ9FsgrfCChjwnzSk=",
+        "lastModified": 1737357364,
+        "narHash": "sha256-JhW46GBB1Nz2Dm1dn6ZX/fKYy8JDQUOUDLqabbQB06M=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "7e61ee6d94536d30888c2fbeb1e9d53f4aa3f8b8",
+        "rev": "010ed547044c6926f746898d8876137515dd934e",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1736864394,
-        "narHash": "sha256-QEbgudJG4M9kVmuhGDEG2EP397zAbPmnZ5DX2GFwZCI=",
+        "lastModified": 1737321080,
+        "narHash": "sha256-0L6YAx41Yn0dzEJ/rWk1Th1EF8MSLEdNDMyEi0SMVCg=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "e8a6c1b02122852da83dc52184e78369598d8240",
+        "rev": "5f527f24f0ea89e9071e065530cbed449507df5c",
         "type": "github"
       },
       "original": {
@@ -302,11 +302,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736652904,
-        "narHash": "sha256-8uolHABgroXqzs03QdulHp8H9e5kWQZnnhcda1MKbBM=",
+        "lastModified": 1737257306,
+        "narHash": "sha256-lEGgpA4kGafc76+Amnz+gh1L/cwUS2pePFlf22WEyh8=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "271e5bd7c57e1f001693799518b10a02d1123b12",
+        "rev": "744d330659e207a1883d2da0141d35e520eb87bd",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1736867362,
-        "narHash": "sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8=",
+        "lastModified": 1737299813,
+        "narHash": "sha256-Qw2PwmkXDK8sPQ5YQ/y/icbQ+TYgbxfjhgnkNJyT1X8=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc",
+        "rev": "107d5ef05c0b1119749e381451389eded30fb0d5",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1736848588,
-        "narHash": "sha256-9B6fQqphF3j9lpcxQnKyIUgp3NyGi7ikb9CjCYqixcY=",
+        "lastModified": 1737264083,
+        "narHash": "sha256-6QqSrHPN+ZD+7HuadVLuFNUaM8XnmZF3EO7QViM1b80=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "357cd3dfdb8993af11268d755d53357720675e66",
+        "rev": "aa6ae0afa6adeb5c202a168e51eda1d3da571117",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1736848588,
-        "narHash": "sha256-9B6fQqphF3j9lpcxQnKyIUgp3NyGi7ikb9CjCYqixcY=",
+        "lastModified": 1737110817,
+        "narHash": "sha256-DSenga8XjPaUV5KUFW/i3rNkN7jm9XmguW+qQ1ZJTR4=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "357cd3dfdb8993af11268d755d53357720675e66",
+        "rev": "041c867bad68dfe34b78b2813028a2e2ea70a23c",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1736798957,
-        "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=",
+        "lastModified": 1737062831,
+        "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3",
+        "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c",
         "type": "github"
       },
       "original": {
@@ -498,11 +498,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736154270,
-        "narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
+        "lastModified": 1737103437,
+        "narHash": "sha256-uPNWcYbhY2fjY3HOfRCR5jsfzdzemhfxLSxwjXYXqNc=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
+        "rev": "d1ed3b385f8130e392870cfb1dbfaff8a63a1899",
         "type": "github"
       },
       "original": {
diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index 783f875..bb23ece 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -14,6 +14,7 @@
     pavucontrol
     plexamp
     signal-desktop
+    supersonic-wayland
   ];
 
   xdg.desktopEntries = {

From 04fea5639d917b8c788c657012f07e2710d4b15a Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 21 Jan 2025 10:29:47 +0100
Subject: [PATCH 593/656] ghostty: themes are supported in home-manager now

---
 home/common/ghostty.nix | 104 ++++++++++++++++++++--------------------
 1 file changed, 52 insertions(+), 52 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index a25f6e8..ba36fa3 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -47,60 +47,60 @@
           "super+enter=toggle_fullscreen"
         ];
       };
+      themes = {
+        PatagiaDark = {
+          background = if config.patagia.oled.enable then "#000000" else "#14151a";
+          foreground = "#b7bec7";
+          cursor-color = "#e7e7b7";
+          selection-background = "#84979f";
+          selection-foreground = "#000000";
+          palette = [
+            "#000000"
+            "#ff0035"
+            "#85ff00"
+            "#ffc900"
+            "#00a7ff"
+            "#cb01ff"
+            "#00e0ff"
+            "#b7bec7"
+            "#444444"
+            "#ff8c88"
+            "#baff94"
+            "#ffe090"
+            "#88ccff"
+            "#e38dff"
+            "#97eeff"
+            "#ffffff"
+          ];
+        };
+        PatagiaLight = {
+          background = "#fefeff";
+          foreground = "#222222";
+          cursor-color = "#aa0000";
+          selection-background = "#ffe6a4";
+          selection-foreground = "#483600";
+          palette = [
+            "#000000"
+            "#9e001d"
+            "#306300"
+            "#deae00"
+            "#00669e"
+            "#7d009e"
+            "#008a9e"
+            "#f7f7f7"
+            "#b0b0b0"
+            "#ff0035"
+            "#509e00"
+            "#ffc900"
+            "#00a7ff"
+            "#cb01ff"
+            "#00e0ff"
+            "#ffffff"
+          ];
+        };
+      };
     };
 
-    xdg.configFile."ghostty/themes/PatagiaDark".text =
-      let
-        background = if config.patagia.oled.enable then "#000000" else "#14151a";
-      in
-      ''
-        background = "${background}"
-        foreground = #b7bec7
-        cursor-color = #e7e7b7
-        selection-background = #84979f
-        selection-foreground = #000000
-        palette = 0=#000000
-        palette = 1=#ff0035
-        palette = 2=#85ff00
-        palette = 3=#ffc900
-        palette = 4=#00a7ff
-        palette = 5=#cb01ff
-        palette = 6=#00e0ff
-        palette = 7=#b7bec7
-        palette = 8=#444444
-        palette = 9=#ff8c88
-        palette = 10=#baff94
-        palette = 11=#ffe090
-        palette = 12=#88ccff
-        palette = 13=#e38dff
-        palette = 14=#97eeff
-        palette = 15=#ffffff
-      '';
-
-    xdg.configFile."ghostty/themes/PatagiaLight".text = ''
-      background = #fefeff
-      foreground = #222222
-      cursor-color = #aa0000
-      selection-background = #ffe6a4
-      selection-foreground = #483600
-      palette = 0=#000000
-      palette = 1=#9e001d
-      palette = 2=#306300
-      palette = 3=#deae00
-      palette = 4=#00669e
-      palette = 5=#7d009e
-      palette = 6=#008a9e
-      palette = 7=#f7f7f7
-      palette = 8=#b0b0b0
-      palette = 9=#ff0035
-      palette = 10=#509e00
-      palette = 11=#ffc900
-      palette = 12=#00a7ff
-      palette = 13=#cb01ff
-      palette = 14=#00e0ff
-      palette = 15=#ffffff
-    '';
-
     xdg.desktopEntries = {
       ghostty-secondary = {
         categories = [

From c56bb1882742dcd47f4544927c2d1e1006d71393 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 21 Jan 2025 10:29:47 +0100
Subject: [PATCH 594/656] nix update

---
 flake.lock | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/flake.lock b/flake.lock
index a6a4aa0..f1d99dd 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1737085478,
-        "narHash": "sha256-EzdUQf1ljtGIWMmscVzoW3rUxxN3UKyNXOXbzUvz3BQ=",
+        "lastModified": 1737430029,
+        "narHash": "sha256-z55IQogW9z4HhVeT55LlCUFKbYD5O5aLMnU5cX1WTto=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "72d085525b22d66468c5969a4d507a0fa68d4a04",
+        "rev": "5cb2fa6f7594202b12a2603bf32094aa75b1bf0e",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1737357364,
-        "narHash": "sha256-JhW46GBB1Nz2Dm1dn6ZX/fKYy8JDQUOUDLqabbQB06M=",
+        "lastModified": 1737444129,
+        "narHash": "sha256-RDwsCYHgjFf6iTi5JSfpOAnuQenDh8VFKU01XluVWM8=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "010ed547044c6926f746898d8876137515dd934e",
+        "rev": "ac8238031094d5242da26947bfc7174369c12e33",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1737321080,
-        "narHash": "sha256-0L6YAx41Yn0dzEJ/rWk1Th1EF8MSLEdNDMyEi0SMVCg=",
+        "lastModified": 1737414984,
+        "narHash": "sha256-A1ITJgtOOwhSC5wB/jfBV9ZuAftroeYRYFqA+aFKgac=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "5f527f24f0ea89e9071e065530cbed449507df5c",
+        "rev": "855a2a75e6f7d08376c221a46e0179e5c76176ec",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1737264083,
-        "narHash": "sha256-6QqSrHPN+ZD+7HuadVLuFNUaM8XnmZF3EO7QViM1b80=",
+        "lastModified": 1737370608,
+        "narHash": "sha256-hFA6SmioeqvGW/XvZa9bxniAeulksCOcj3kokdNT/YE=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "aa6ae0afa6adeb5c202a168e51eda1d3da571117",
+        "rev": "300081d0cc72df578b02d914df941b8ec62240e6",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1737110817,
-        "narHash": "sha256-DSenga8XjPaUV5KUFW/i3rNkN7jm9XmguW+qQ1ZJTR4=",
+        "lastModified": 1737370608,
+        "narHash": "sha256-hFA6SmioeqvGW/XvZa9bxniAeulksCOcj3kokdNT/YE=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "041c867bad68dfe34b78b2813028a2e2ea70a23c",
+        "rev": "300081d0cc72df578b02d914df941b8ec62240e6",
         "type": "github"
       },
       "original": {

From d8f97650e5c9af4607ed9ed72a7489b0220998c3 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 6 Jan 2025 19:03:55 +0100
Subject: [PATCH 595/656] ghostty: use ultracondensed berkeley mono for
 secondary term

---
 home/common/ghostty.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index ba36fa3..9d44a86 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -108,7 +108,7 @@
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" -e bash
+          ghostty --class=com.mitchellh.ghostty-secondary --font-style="UltraCondensed" --font-style-bold="Bold UltraCondensed" --font-style-italic="UltraCondensed Oblique" -e bash
         '';
         genericName = "Ghostty Secondary";
         icon = "com.mitchellh.ghostty";

From d58bac33430c982d46f750edd7fd2952f1f066fd Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 6 Jan 2025 19:03:55 +0100
Subject: [PATCH 596/656] nix: cleanup

---
 flake.nix | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/flake.nix b/flake.nix
index 35ccf56..6388658 100644
--- a/flake.nix
+++ b/flake.nix
@@ -17,33 +17,32 @@
     ghostty.url = "github:ghostty-org/ghostty";
     jujutsu.url = "github:dln/jj/openssh";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
-    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 
     nix-index-database.url = "github:nix-community/nix-index-database";
-    nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
+    nix-index-database.inputs.nixpkgs.follows = "nixpkgs-unstable";
 
     home-manager.url = "github:nix-community/home-manager";
-    home-manager.inputs.nixpkgs.follows = "nixpkgs";
+    home-manager.inputs.nixpkgs.follows = "nixpkgs-unstable";
   };
 
   outputs =
     inputs@{
       self,
       nix-index-database,
-      nixpkgs,
+      nixpkgs-unstable,
       home-manager,
       ...
     }:
     let
       inherit (self) outputs;
       system = "x86_64-linux";
-      pkgs = nixpkgs.legacyPackages.${system};
+      pkgs = nixpkgs-unstable.legacyPackages.${system};
 
       mkHost =
         modules:
-        nixpkgs.lib.nixosSystem {
+        nixpkgs-unstable.lib.nixosSystem {
           specialArgs = {
             inherit inputs outputs;
           };

From 8d7b072aaf4f777ebea3718565f9d3b14ffb2908 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 6 Jan 2025 19:03:55 +0100
Subject: [PATCH 597/656] nix: update

---
 flake.lock | 27 +++++----------------------
 1 file changed, 5 insertions(+), 22 deletions(-)

diff --git a/flake.lock b/flake.lock
index f1d99dd..d7a70d0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -217,15 +217,15 @@
     "home-manager": {
       "inputs": {
         "nixpkgs": [
-          "nixpkgs"
+          "nixpkgs-unstable"
         ]
       },
       "locked": {
-        "lastModified": 1737394973,
-        "narHash": "sha256-EW4oXMfnfA5sNM9Jqm+y98horWVvN66Gu7YIcEpFYZc=",
+        "lastModified": 1737478403,
+        "narHash": "sha256-e6PJI4Bd+QdpukHyd5F/fQY8fRUiNfCwvCRU8WXMSk8=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "9786661d57c476021c8a0c3e53bf9fa2b4f3328b",
+        "rev": "96dee79b178d295b716052feca3ee46abc085abe",
         "type": "github"
       },
       "original": {
@@ -298,7 +298,7 @@
     "nix-index-database": {
       "inputs": {
         "nixpkgs": [
-          "nixpkgs"
+          "nixpkgs-unstable"
         ]
       },
       "locked": {
@@ -411,22 +411,6 @@
         "type": "github"
       }
     },
-    "nixpkgs_3": {
-      "locked": {
-        "lastModified": 1737062831,
-        "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
     "root": {
       "inputs": {
         "ghostty": "ghostty",
@@ -434,7 +418,6 @@
         "jujutsu": "jujutsu",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
         "nix-index-database": "nix-index-database",
-        "nixpkgs": "nixpkgs_3",
         "nixpkgs-stable": "nixpkgs-stable_2",
         "nixpkgs-unstable": "nixpkgs-unstable_2"
       }

From c747fa6757a04e64804a3d971cbe47ebff01e35d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 21 Jan 2025 20:08:31 +0100
Subject: [PATCH 598/656] ghostty: fix palette

---
 home/common/ghostty.nix | 36 ------------------------------------
 1 file changed, 36 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 9d44a86..1be3b9c 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -54,24 +54,6 @@
           cursor-color = "#e7e7b7";
           selection-background = "#84979f";
           selection-foreground = "#000000";
-          palette = [
-            "#000000"
-            "#ff0035"
-            "#85ff00"
-            "#ffc900"
-            "#00a7ff"
-            "#cb01ff"
-            "#00e0ff"
-            "#b7bec7"
-            "#444444"
-            "#ff8c88"
-            "#baff94"
-            "#ffe090"
-            "#88ccff"
-            "#e38dff"
-            "#97eeff"
-            "#ffffff"
-          ];
         };
         PatagiaLight = {
           background = "#fefeff";
@@ -79,24 +61,6 @@
           cursor-color = "#aa0000";
           selection-background = "#ffe6a4";
           selection-foreground = "#483600";
-          palette = [
-            "#000000"
-            "#9e001d"
-            "#306300"
-            "#deae00"
-            "#00669e"
-            "#7d009e"
-            "#008a9e"
-            "#f7f7f7"
-            "#b0b0b0"
-            "#ff0035"
-            "#509e00"
-            "#ffc900"
-            "#00a7ff"
-            "#cb01ff"
-            "#00e0ff"
-            "#ffffff"
-          ];
         };
       };
     };

From 8ccaf3b9d71ce70066e3d1ee25b0db89f6c11784 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 21 Jan 2025 20:51:57 +0100
Subject: [PATCH 599/656] nix: nixpkgs-unstable -> nixpkgs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

that was a bad idea 😆
---
 flake.lock | 40 ++++++++++++++++++++--------------------
 flake.nix  | 12 ++++++------
 2 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/flake.lock b/flake.lock
index d7a70d0..04ea1e1 100644
--- a/flake.lock
+++ b/flake.lock
@@ -217,7 +217,7 @@
     "home-manager": {
       "inputs": {
         "nixpkgs": [
-          "nixpkgs-unstable"
+          "nixpkgs"
         ]
       },
       "locked": {
@@ -298,7 +298,7 @@
     "nix-index-database": {
       "inputs": {
         "nixpkgs": [
-          "nixpkgs-unstable"
+          "nixpkgs"
         ]
       },
       "locked": {
@@ -379,22 +379,6 @@
         "type": "github"
       }
     },
-    "nixpkgs-unstable_2": {
-      "locked": {
-        "lastModified": 1737370608,
-        "narHash": "sha256-hFA6SmioeqvGW/XvZa9bxniAeulksCOcj3kokdNT/YE=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "300081d0cc72df578b02d914df941b8ec62240e6",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
     "nixpkgs_2": {
       "locked": {
         "lastModified": 1737370608,
@@ -411,6 +395,22 @@
         "type": "github"
       }
     },
+    "nixpkgs_3": {
+      "locked": {
+        "lastModified": 1737370608,
+        "narHash": "sha256-hFA6SmioeqvGW/XvZa9bxniAeulksCOcj3kokdNT/YE=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "300081d0cc72df578b02d914df941b8ec62240e6",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "root": {
       "inputs": {
         "ghostty": "ghostty",
@@ -418,8 +418,8 @@
         "jujutsu": "jujutsu",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
         "nix-index-database": "nix-index-database",
-        "nixpkgs-stable": "nixpkgs-stable_2",
-        "nixpkgs-unstable": "nixpkgs-unstable_2"
+        "nixpkgs": "nixpkgs_3",
+        "nixpkgs-stable": "nixpkgs-stable_2"
       }
     },
     "rust-overlay": {
diff --git a/flake.nix b/flake.nix
index 6388658..99e7a36 100644
--- a/flake.nix
+++ b/flake.nix
@@ -18,31 +18,31 @@
     jujutsu.url = "github:dln/jj/openssh";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
-    nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 
     nix-index-database.url = "github:nix-community/nix-index-database";
-    nix-index-database.inputs.nixpkgs.follows = "nixpkgs-unstable";
+    nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
 
     home-manager.url = "github:nix-community/home-manager";
-    home-manager.inputs.nixpkgs.follows = "nixpkgs-unstable";
+    home-manager.inputs.nixpkgs.follows = "nixpkgs";
   };
 
   outputs =
     inputs@{
       self,
       nix-index-database,
-      nixpkgs-unstable,
+      nixpkgs,
       home-manager,
       ...
     }:
     let
       inherit (self) outputs;
       system = "x86_64-linux";
-      pkgs = nixpkgs-unstable.legacyPackages.${system};
+      pkgs = nixpkgs.legacyPackages.${system};
 
       mkHost =
         modules:
-        nixpkgs-unstable.lib.nixosSystem {
+        nixpkgs.lib.nixosSystem {
           specialArgs = {
             inherit inputs outputs;
           };

From dfde600c7a7f875a4e470aa8ea3fa72c972869d0 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 21 Jan 2025 22:30:38 +0100
Subject: [PATCH 600/656] nvim: blink-compat is now in nixpkgs

---
 home/common/nvim/default.nix | 17 +----------------
 1 file changed, 1 insertion(+), 16 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 57e68e6..b681cdc 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -46,6 +46,7 @@ in
     ];
 
     plugins = with pkgs.vimPlugins; [
+      blink-compat
       friendly-snippets
       go-nvim
       targets-vim
@@ -80,22 +81,6 @@ in
         config = lib.fileContents ./blink-cmp.lua;
       }
 
-      {
-        plugin = pkgs.vimUtils.buildVimPlugin {
-          name = "blink.compat";
-          src = pkgs.fetchFromGitHub {
-            owner = "saghen";
-            repo = "blink.compat";
-            rev = "5ca8848c8cc32abdc980e5db4f0eb7bb8fbf84dc"; # Dec 25, 2024
-            hash = "sha256-tFQeKyqdo3mvptYnWxKhTpI4ROFNQ6u3P8cLqtlsozw=";
-          };
-        };
-        type = "lua";
-        config = ''
-          require('blink.compat').setup()
-        '';
-      }
-
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
           name = "inlay-hints";

From df7f12c94c1cb08a9507c63876b52dca3d1df4af Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 21 Jan 2025 22:30:38 +0100
Subject: [PATCH 601/656] nvim: allow blink completion menu to go downward if
 there is not enough space north

---
 home/common/nvim/blink-cmp.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua
index 8ae4f6c..a719718 100644
--- a/home/common/nvim/blink-cmp.lua
+++ b/home/common/nvim/blink-cmp.lua
@@ -29,7 +29,7 @@ require 'blink-cmp'.setup({
     menu = {
       auto_show = true,
       border = 'rounded',
-      direction_priority = { 'n' },
+      direction_priority = { 'n', 's' },
       draw = {
         components = {
           kind_icon = {

From fdb2fa86e4e004d879535f4eb8fc110760ace9be Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 21 Jan 2025 22:30:38 +0100
Subject: [PATCH 602/656] =?UTF-8?q?nvim:=20add=20blink-emoji=20completion?=
 =?UTF-8?q?=20=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 home/common/nvim/blink-cmp.lua | 15 ++++++++++++---
 home/common/nvim/default.nix   |  1 +
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua
index a719718..113fda6 100644
--- a/home/common/nvim/blink-cmp.lua
+++ b/home/common/nvim/blink-cmp.lua
@@ -61,9 +61,18 @@ require 'blink-cmp'.setup({
   },
 
   sources = {
-    default = { 'lsp' },
+    default = {
+      'lsp',
+      'emoji',
+    },
     cmdline = {},
-    providers = {},
+    providers = {
+      emoji = {
+        module = "blink-emoji",
+        name = "Emoji",
+        score_offset = 1,
+        opts = { insert = true },
+      }
+    },
   },
-
 })
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index b681cdc..e5adcd9 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -47,6 +47,7 @@ in
 
     plugins = with pkgs.vimPlugins; [
       blink-compat
+      blink-emoji-nvim
       friendly-snippets
       go-nvim
       targets-vim

From 6a8c63cbd163ddfd75545a94608d95fbe99934bb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 22 Jan 2025 09:43:58 +0100
Subject: [PATCH 603/656] ghostty: ditch the titlebar

---
 home/common/ghostty.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 1be3b9c..8635e63 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -30,7 +30,7 @@
         shell-integration = "fish";
 
         gtk-tabs-location = "hidden";
-        gtk-titlebar = true;
+        gtk-titlebar = false;
         gtk-titlebar-hide-when-maximized = true;
         window-padding-balance = true;
         window-padding-color = "extend";

From e453256154599e59e3d04e3f04675c9e47d40489 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 22 Jan 2025 09:43:58 +0100
Subject: [PATCH 604/656] home-manager: use nixpkgs-unstable channel instead of
 nixos-unstable

We probably don't need to wait on nixos integration tests for user
packages.
---
 flake.nix | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/flake.nix b/flake.nix
index 99e7a36..f72d553 100644
--- a/flake.nix
+++ b/flake.nix
@@ -18,7 +18,8 @@
     jujutsu.url = "github:dln/jj/openssh";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
-    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+    nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
 
     nix-index-database.url = "github:nix-community/nix-index-database";
     nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
@@ -32,6 +33,7 @@
       self,
       nix-index-database,
       nixpkgs,
+      nixpkgs-unstable,
       home-manager,
       ...
     }:
@@ -52,7 +54,7 @@
       mkHome =
         modules:
         home-manager.lib.homeManagerConfiguration {
-          inherit pkgs;
+          pkgs = nixpkgs-unstable.legacyPackages.${system};
           extraSpecialArgs = {
             inherit inputs outputs;
           };

From cd59d774c4c7a58704957ac78fb7234ae1b93545 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 22 Jan 2025 09:43:58 +0100
Subject: [PATCH 605/656] ghostty: retitle desktop entries for easier
 completion

---
 home/common/ghostty.nix | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 8635e63..76e4031 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -74,9 +74,9 @@
         exec = ''
           ghostty --class=com.mitchellh.ghostty-secondary --font-style="UltraCondensed" --font-style-bold="Bold UltraCondensed" --font-style-italic="UltraCondensed Oblique" -e bash
         '';
-        genericName = "Ghostty Secondary";
+        genericName = "Secondary Ghostty";
         icon = "com.mitchellh.ghostty";
-        name = "Ghostty Secondary";
+        name = "Secondary Ghostty";
         settings = {
           StartupWMClass = "com.mitchellh.ghostty-secondary";
           TryExec = "ghostty";
@@ -112,9 +112,9 @@
         exec = ''
           ghostty --class=com.mitchellh.ghostty-devel-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel"
         '';
-        genericName = "Ghostty Secondary (devel)";
+        genericName = "Secondary Ghostty (devel)";
         icon = "com.mitchellh.ghostty";
-        name = "Ghostty Secondary (devel)";
+        name = "Secondary Ghostty (devel)";
         settings = {
           StartupWMClass = "com.mitchellh.ghostty-devel-secondary";
           TryExec = "ghostty";

From a622850e2d86196e8f19283d5a0add16f45ac715 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 22 Jan 2025 09:43:58 +0100
Subject: [PATCH 606/656] nix: update

---
 flake.lock | 75 +++++++++++++++++++++++++++++++++---------------------
 1 file changed, 46 insertions(+), 29 deletions(-)

diff --git a/flake.lock b/flake.lock
index 04ea1e1..e181f4c 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1737430029,
-        "narHash": "sha256-z55IQogW9z4HhVeT55LlCUFKbYD5O5aLMnU5cX1WTto=",
+        "lastModified": 1737699693,
+        "narHash": "sha256-Rs8KNdInnmqs0YNWvvauYlf2XcnA4EIdmRggvQGjmUQ=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "5cb2fa6f7594202b12a2603bf32094aa75b1bf0e",
+        "rev": "fd8cacaa674c93fb86751e8030af2b202133939e",
         "type": "github"
       },
       "original": {
@@ -157,11 +157,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1737301351,
-        "narHash": "sha256-2UNmLCKORvdBRhPGI8Vx0b6l7M8/QBey/nHLIxOl4jE=",
+        "lastModified": 1737465171,
+        "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "15a87cedeb67e3dbc8d2f7b9831990dffcf4e69f",
+        "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1737478403,
-        "narHash": "sha256-e6PJI4Bd+QdpukHyd5F/fQY8fRUiNfCwvCRU8WXMSk8=",
+        "lastModified": 1737704314,
+        "narHash": "sha256-zta8jvOQ2wRCZmiwFEnS5iCulWAh8e+fLUlQxrgOBjM=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "96dee79b178d295b716052feca3ee46abc085abe",
+        "rev": "a0428685572b134f6594e7d7f5db5e1febbab2d7",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1737444129,
-        "narHash": "sha256-RDwsCYHgjFf6iTi5JSfpOAnuQenDh8VFKU01XluVWM8=",
+        "lastModified": 1737701591,
+        "narHash": "sha256-S71nENrb8kBrEvihDD+1mzn5sRrRr1sAaNMkjWDx1h0=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "ac8238031094d5242da26947bfc7174369c12e33",
+        "rev": "c9248eec123e70ef1132bbedeae22e2af7011095",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1737414984,
-        "narHash": "sha256-A1ITJgtOOwhSC5wB/jfBV9ZuAftroeYRYFqA+aFKgac=",
+        "lastModified": 1737675744,
+        "narHash": "sha256-2Q4SNciK6DHC5WknFSbk3aYjorayf9y4uz3tdtl/T1M=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "855a2a75e6f7d08376c221a46e0179e5c76176ec",
+        "rev": "8bc28978b632362ae658f8d4a6327e07a8b371b2",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1737299813,
-        "narHash": "sha256-Qw2PwmkXDK8sPQ5YQ/y/icbQ+TYgbxfjhgnkNJyT1X8=",
+        "lastModified": 1737569578,
+        "narHash": "sha256-6qY0pk2QmUtBT9Mywdvif0i/CLVgpCjMUn6g9vB+f3M=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "107d5ef05c0b1119749e381451389eded30fb0d5",
+        "rev": "47addd76727f42d351590c905d9d1905ca895b82",
         "type": "github"
       },
       "original": {
@@ -379,13 +379,29 @@
         "type": "github"
       }
     },
+    "nixpkgs-unstable_2": {
+      "locked": {
+        "lastModified": 1737622296,
+        "narHash": "sha256-GWHH9ljsR0LR29IEruJnKVVk6veeQpo7kfolyDyCVGQ=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "055c50feaa548eadca66407630961b77f3ebb750",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixpkgs-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1737370608,
-        "narHash": "sha256-hFA6SmioeqvGW/XvZa9bxniAeulksCOcj3kokdNT/YE=",
+        "lastModified": 1737557748,
+        "narHash": "sha256-BaMuhctP1x00+8cBE2cJveJQb70/tWHI50MHj/ZrtOY=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "300081d0cc72df578b02d914df941b8ec62240e6",
+        "rev": "606996d74f6e2a12635d41c1bf58bfc7ea3bb5ec",
         "type": "github"
       },
       "original": {
@@ -397,16 +413,16 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1737370608,
-        "narHash": "sha256-hFA6SmioeqvGW/XvZa9bxniAeulksCOcj3kokdNT/YE=",
+        "lastModified": 1737469691,
+        "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "300081d0cc72df578b02d914df941b8ec62240e6",
+        "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
-        "ref": "nixpkgs-unstable",
+        "ref": "nixos-unstable",
         "repo": "nixpkgs",
         "type": "github"
       }
@@ -419,7 +435,8 @@
         "neovim-nightly-overlay": "neovim-nightly-overlay",
         "nix-index-database": "nix-index-database",
         "nixpkgs": "nixpkgs_3",
-        "nixpkgs-stable": "nixpkgs-stable_2"
+        "nixpkgs-stable": "nixpkgs-stable_2",
+        "nixpkgs-unstable": "nixpkgs-unstable_2"
       }
     },
     "rust-overlay": {
@@ -481,11 +498,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1737103437,
-        "narHash": "sha256-uPNWcYbhY2fjY3HOfRCR5jsfzdzemhfxLSxwjXYXqNc=",
+        "lastModified": 1737483750,
+        "narHash": "sha256-5An1wq5U8sNycOBBg3nsDDgpwBmR9liOpDGlhliA6Xo=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "d1ed3b385f8130e392870cfb1dbfaff8a63a1899",
+        "rev": "f2cc121df15418d028a59c9737d38e3a90fbaf8f",
         "type": "github"
       },
       "original": {

From cdbc6d6a9ec26ccf24437009e5f8593d329a6a5b Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 24 Jan 2025 11:37:41 +0100
Subject: [PATCH 607/656] Remove unused package

---
 home/dln/desktop.nix | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index bb23ece..a168ac2 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -1,4 +1,4 @@
-{ inputs, pkgs, ... }:
+{ pkgs, ... }:
 {
   patagia = {
     desktop.enable = true;
@@ -14,7 +14,6 @@
     pavucontrol
     plexamp
     signal-desktop
-    supersonic-wayland
   ];
 
   xdg.desktopEntries = {

From 444539ac0844d4ba38db2b5ad65685cd918da85f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 24 Jan 2025 11:37:41 +0100
Subject: [PATCH 608/656] gnome: keep background unmanaged

---
 home/common/gnome.nix | 17 -----------------
 1 file changed, 17 deletions(-)

diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index 75343f5..e534c2a 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -16,23 +16,6 @@ with lib.hm.gvariant;
     ];
 
     dconf.settings = {
-      "org/gnome/desktop/background" = {
-        color-shading-type = "solid";
-        picture-options = "zoom";
-        picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png";
-        picture-uri-dark = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-d.png";
-        primary-color = "#77767B";
-        secondary-color = "#000000";
-      };
-
-      "org/gnome/desktop/screensaver" = {
-        color-shading-type = "solid";
-        picture-options = "zoom";
-        picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png";
-        primary-color = "#77767B";
-        secondary-color = "#000000";
-      };
-
       "org/gnome/desktop/wm/keybindings" = {
         close = [ "<Super>q" ];
         toggle-on-all-workspaces = [ "<Super>s" ];

From 666736f87f9618e95c0584406f531fa3d5f18557 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 26 Jan 2025 20:34:25 +0100
Subject: [PATCH 609/656] nvim: only list unique entries in mini.projects

---
 home/common/nvim/mini.lua | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 947528f..339c471 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -58,7 +58,7 @@ end
 require('mini.pick').setup({
   mappings = {
     move_down      = '<tab>',
-    move_up      = '<S-tab>',
+    move_up        = '<S-tab>',
     toggle_info    = '<C-k>',
     toggle_preview = '<C-p>',
   },
@@ -84,14 +84,18 @@ MiniPick.registry.projects = function(local_opts)
 
   local postprocess = function(paths)
     local result = {}
+    local seen = {}
     for _, path in ipairs(paths) do
       path = path:gsub("%/.jj/repo/store/type$", "")
       path = path:gsub("%/.git/HEAD$", "")
-      local item = {
-        path = path,
-        text = path:gsub("%" .. root .. "/", " "),
-      }
-      table.insert(result, item)
+      if not seen[path] then
+        local item = {
+          path = path,
+          text = path:gsub("%" .. root .. "/", " "),
+        }
+        table.insert(result, item)
+        seen[path] = true
+      end
     end
     return result
   end

From 0c6e5eb86c2c017ad98fccbde161892e7c1014b4 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 26 Jan 2025 20:34:25 +0100
Subject: [PATCH 610/656] new glasses who dis

---
 flake.lock            | 66 +++++++++++++++++++++----------------------
 home/common/gnome.nix |  2 +-
 home/dln/nemo.nix     |  2 +-
 3 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/flake.lock b/flake.lock
index e181f4c..2e7f2e6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1737699693,
-        "narHash": "sha256-Rs8KNdInnmqs0YNWvvauYlf2XcnA4EIdmRggvQGjmUQ=",
+        "lastModified": 1738275804,
+        "narHash": "sha256-n9cSCLlWjc8Bc5QyZYLo5+c6MfTZjgDpUGx/FGxBiY8=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "fd8cacaa674c93fb86751e8030af2b202133939e",
+        "rev": "c5508e7d1922842ecd3160ea73b97da1282168b3",
         "type": "github"
       },
       "original": {
@@ -201,11 +201,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736917206,
-        "narHash": "sha256-JTBWmyGf8K1Rwb+gviHIUzRJk/sITtT+72HXFkTZUjo=",
+        "lastModified": 1738237977,
+        "narHash": "sha256-oJN/yvRL7G0WlR/hTkQIjFbPkzCV+sFnNB/38Tb9RL4=",
         "owner": "hercules-ci",
         "repo": "hercules-ci-effects",
-        "rev": "afd0a42e8c61ebb56899315ee4084a8b2e4ff425",
+        "rev": "6d1b6d5d59758b4f5f05745f774fc13cdc59da43",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1737704314,
-        "narHash": "sha256-zta8jvOQ2wRCZmiwFEnS5iCulWAh8e+fLUlQxrgOBjM=",
+        "lastModified": 1738275749,
+        "narHash": "sha256-PM+cGduJ05EZ+YXulqAwUFjvfKpPmW080mcuN6R1POw=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "a0428685572b134f6594e7d7f5db5e1febbab2d7",
+        "rev": "a8159195bfaef3c64df75d3b1e6a68d49d392be9",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1737701591,
-        "narHash": "sha256-S71nENrb8kBrEvihDD+1mzn5sRrRr1sAaNMkjWDx1h0=",
+        "lastModified": 1738310515,
+        "narHash": "sha256-qQ4/XFreahIZI5wIwlRcqDASP2EMGAUA0+qvufALdhI=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "c9248eec123e70ef1132bbedeae22e2af7011095",
+        "rev": "c7b97f4eeda08870059b20ec8d92ee76efda53b4",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1737675744,
-        "narHash": "sha256-2Q4SNciK6DHC5WknFSbk3aYjorayf9y4uz3tdtl/T1M=",
+        "lastModified": 1738241166,
+        "narHash": "sha256-bcVp2t49bUoca5Wro4Q9m+SHpPSLVB/jabUqWiGGz4s=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "8bc28978b632362ae658f8d4a6327e07a8b371b2",
+        "rev": "e71d2c817d1a2475551f58a98e411f6b39a5be3f",
         "type": "github"
       },
       "original": {
@@ -302,11 +302,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1737257306,
-        "narHash": "sha256-lEGgpA4kGafc76+Amnz+gh1L/cwUS2pePFlf22WEyh8=",
+        "lastModified": 1737861961,
+        "narHash": "sha256-LIRtMvAwLGb8pBoamzgEF67oKlNPz4LuXiRPVZf+TpE=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "744d330659e207a1883d2da0141d35e520eb87bd",
+        "rev": "79b7b8eae3243fc5aa9aad34ba6b9bbb2266f523",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1737569578,
-        "narHash": "sha256-6qY0pk2QmUtBT9Mywdvif0i/CLVgpCjMUn6g9vB+f3M=",
+        "lastModified": 1738163270,
+        "narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "47addd76727f42d351590c905d9d1905ca895b82",
+        "rev": "59e618d90c065f55ae48446f307e8c09565d5ab0",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1737622296,
-        "narHash": "sha256-GWHH9ljsR0LR29IEruJnKVVk6veeQpo7kfolyDyCVGQ=",
+        "lastModified": 1738297584,
+        "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "055c50feaa548eadca66407630961b77f3ebb750",
+        "rev": "9189ac18287c599860e878e905da550aa6dec1cd",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1737557748,
-        "narHash": "sha256-BaMuhctP1x00+8cBE2cJveJQb70/tWHI50MHj/ZrtOY=",
+        "lastModified": 1738136902,
+        "narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "606996d74f6e2a12635d41c1bf58bfc7ea3bb5ec",
+        "rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1737469691,
-        "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=",
+        "lastModified": 1738142207,
+        "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab",
+        "rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
         "type": "github"
       },
       "original": {
@@ -498,11 +498,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1737483750,
-        "narHash": "sha256-5An1wq5U8sNycOBBg3nsDDgpwBmR9liOpDGlhliA6Xo=",
+        "lastModified": 1738070913,
+        "narHash": "sha256-j6jC12vCFsTGDmY2u1H12lMr62fnclNjuCtAdF1a4Nk=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "f2cc121df15418d028a59c9737d38e3a90fbaf8f",
+        "rev": "bebf27d00f7d10ba75332a0541ac43676985dea3",
         "type": "github"
       },
       "original": {
diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index e534c2a..e651f8a 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -135,7 +135,7 @@ with lib.hm.gvariant;
       };
 
       "org/gnome/mutter" = {
-        center-new-windows = true;
+        center-new-windows = false;
         edge-tiling = true;
       };
 
diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index 1c38f16..df79854 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -6,7 +6,7 @@
   ];
 
   programs.ghostty.settings = {
-    font-size = lib.mkForce 18;
+    font-size = lib.mkForce 16;
   };
 
   programs.obs-studio = {

From 41985491ef35853ab3fcc6c0414f6a59b16147ac Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 25 Jan 2025 20:25:00 +0100
Subject: [PATCH 611/656] ghostty: font adjustments

---
 home/common/ghostty.nix | 17 ++++++++++-------
 home/common/gnome.nix   |  1 +
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 76e4031..6cb81d3 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -12,12 +12,13 @@
       enableFishIntegration = true;
       package = inputs.ghostty.packages.${pkgs.system}.default;
       settings = {
-        font-size = 12.5;
-        font-family = "TX-02";
-        font-family-bold-italic = "Monaspace Xenon";
+        font-size = 11;
+        font-family = "Berkeley Mono";
+        font-family-bold-italic = "Monaspace Radon Var";
+        font-style = "Regular";
         font-style-bold = "Bold";
-        font-style-italic = "Light Oblique";
-        font-style-bold-italic = "ExtraLight Italic";
+        font-style-italic = "SemiLight Oblique";
+        font-style-bold-italic = "Italic";
         font-synthetic-style = false;
 
         adjust-cursor-thickness = 4;
@@ -25,7 +26,9 @@
         adjust-underline-thickness = -2;
 
         mouse-hide-while-typing = true;
-        unfocused-split-opacity = 1.0;
+        unfocused-split-opacity = 0.85;
+        unfocused-split-fill = "#14151a";
+
 
         shell-integration = "fish";
 
@@ -49,7 +52,7 @@
       };
       themes = {
         PatagiaDark = {
-          background = if config.patagia.oled.enable then "#000000" else "#14151a";
+          background = "#14151a";
           foreground = "#b7bec7";
           cursor-color = "#e7e7b7";
           selection-background = "#84979f";
diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index e651f8a..83fe87f 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-shell-extensions
       gnome-tweaks
       gnome-pomodoro
       gnomeExtensions.desktop-clock

From 814d7e0e4b067cd9a641cbd14d38c81d67fdd5cf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 1 Feb 2025 15:10:32 +0100
Subject: [PATCH 612/656] nvim: red comments and blinky cursor

---
 home/common/nvim/dieter/lua/dieter/init.lua | 3 +--
 home/common/nvim/init.lua                   | 1 +
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 08d75af..2aa86d7 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -11,7 +11,7 @@ local colors = {
     dimmed_subtle = hsl(0, 0, 20),
 
     string = hsl(96, 50, 33),
-    comment = hsl(230, 66, 40),
+    comment = hsl(360, 66, 40),
     comment_error = hsl(2, 85, 40),
 
     diagnostic_error = hsl(347, 80, 45),
@@ -53,7 +53,6 @@ local colors = {
     dialog_fg = hsl(191, 15, 75),
 
     string = hsl(90, 30, 60),
-    -- comment = hsl(2, 69, 68),
     comment = hsl(216, 30, 55),
     comment_error = hsl(2, 85, 50),
     func = hsl(40, 57, 87),
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index ed4052d..8beaaaf 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -6,6 +6,7 @@ vim.g.maplocalleader = ","
 -- UI
 
 vim.opt.cursorline = true
+vim.opt.guicursor = "n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175"
 vim.opt.laststatus = 0
 vim.opt.number = false
 vim.opt.relativenumber = false

From 4df4b83d45b867e92ca313fd58096c53503d062f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 2 Feb 2025 11:23:04 +0100
Subject: [PATCH 613/656] nemo: disabled onboard wifi in bios

---
 hosts/nemo/default.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index 3f0fa01..a20e460 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -117,7 +117,7 @@
 
   systemd.network.enable = true;
   systemd.network.networks."10-wifi" = {
-    matchConfig.Name = "wlan1";
+    matchConfig.Name = "wlan0";
     address = [ "10.1.100.20/22" ];
     gateway = [ "10.1.100.1" ];
     linkConfig.RequiredForOnline = "routable";

From 6e81863ff6928a0b13fc32bd3dc0c82b1d20ff1e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 2 Feb 2025 12:20:40 +0100
Subject: [PATCH 614/656] nvim: cursorline off by default, add ui toggle

---
 home/common/nvim/dieter/lua/dieter/init.lua | 22 ++++++++++++---------
 home/common/nvim/init.lua                   |  6 ++++--
 2 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 2aa86d7..07a47f5 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -14,10 +14,12 @@ local colors = {
     comment = hsl(360, 66, 40),
     comment_error = hsl(2, 85, 40),
 
-    diagnostic_error = hsl(347, 80, 45),
-    diagnostic_warning = hsl(30, 100, 50),
-    diagnostic_info = hsl(145, 80, 30),
-    diagnostic_hint = hsl(145, 80, 30),
+    suggestion = hsl(220, 95, 60),
+
+    -- diagnostic_error = hsl(347, 80, 45),
+    -- diagnostic_warning = hsl(30, 100, 50),
+    -- diagnostic_info = hsl(145, 80, 30),
+    -- diagnostic_hint = hsl(145, 80, 30),
 
     popup_error_bg = hsl(0, 90, 99),
     popup_warning_bg = hsl(27, 90, 99),
@@ -59,6 +61,8 @@ local colors = {
     member = hsl(213, 45, 75),
     punc = hsl(213, 45, 50),
 
+    suggestion = hsl(158, 66, 40),
+
     diagnostic_error = hsl(353, 100, 45),
     diagnostic_warning = hsl(30, 100, 50),
     diagnostic_info = hsl(176, 80, 60),
@@ -88,8 +92,6 @@ local colors = {
 
     doc_bg = hsl(220, 80, 10),
     doc_fg = hsl(200, 30, 60),
-
-    suggestion = hsl(180, 55, 40),
   },
 
 }
@@ -118,8 +120,8 @@ local setupGroups = function(c)
     Search = { bg = c.search_bg, fg = c.search_fg },
     CurSearch = { link = "Search" },
 
-    Comment = { fg = c.comment, italic = true, bold = true },
-    CommentError = { fg = c.comment_error, italic = true, bold = true },
+    Comment = { fg = c.comment, italic = true },
+    CommentError = { fg = c.comment_error, italic = true },
     ["@comment.note"] = { link = "Comment" },
     ["@comment.todo"] = { link = "CommentError" },
     ["@comment.error"] = { link = "CommentError" },
@@ -207,7 +209,9 @@ local setupGroups = function(c)
     BlinkCmpSignatureHelp = { link = 'BlinkCmpDoc' },
     BlinkCmpSignatureHelpBorder = { link = 'BlinkCmpDocBorder' },
 
-    NeoCodeiumSuggestion = { fg = c.suggestion, bold = true, italic = true },
+    BlinkCmpGhostText = { fg = c.suggestion, italic = true, bold = true },
+    NeoCodeiumSuggestion = { link = 'BlinkCmpGhostText' },
+
     LspReferenceText = { fg = c.highlight_intense, undercurl = true },
     LspInlayHint = { fg = c.accent1, italic = true, bold = true },
   }
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 8beaaaf..67f0c25 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -5,8 +5,9 @@ vim.g.maplocalleader = ","
 
 -- UI
 
-vim.opt.cursorline = true
-vim.opt.guicursor = "n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175"
+vim.opt.cursorline = false
+vim.opt.guicursor =
+"n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175"
 vim.opt.laststatus = 0
 vim.opt.number = false
 vim.opt.relativenumber = false
@@ -205,5 +206,6 @@ vim.keymap.set("n", "<Leader>uc", function()
 end, opts("Toggle Dieter colors"))
 vim.keymap.set("n", "<Leader>uf", "<cmd>ToggleAutoFormat<cr>", opts("Toggle autoformat on save"))
 vim.keymap.set("n", "<Leader>uh", "<cmd>InlayHintsToggle<cr>", opts("Toggle inlay hints"))
+vim.keymap.set("n", "<Leader>ul", "<cmd>set invcursorline<cr>", opts("Toggle cursor line"))
 vim.keymap.set("n", "<Leader>un", "<cmd>set invnumber<cr>", opts("Toggle line numbers"))
 vim.keymap.set("n", "<Leader>uw", "<cmd>set invwrap<cr>", opts("Toggle line wrapping"))

From 8fb4b727ba97a02c037296a07e509a873a020d04 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 2 Feb 2025 12:20:40 +0100
Subject: [PATCH 615/656] nvim/ghostty: style suggestions and completions

---
 files/config/fish/config.fish               |  2 +-
 flake.lock                                  | 48 ++++++++++-----------
 home/common/nvim/dieter/lua/dieter/init.lua | 12 +++---
 home/common/nvim/init.lua                   |  2 +-
 home/common/nvim/mini.lua                   |  2 +-
 5 files changed, 34 insertions(+), 32 deletions(-)

diff --git a/files/config/fish/config.fish b/files/config/fish/config.fish
index c3d902f..6572a0c 100644
--- a/files/config/fish/config.fish
+++ b/files/config/fish/config.fish
@@ -12,7 +12,7 @@ set fish_emoji_width 2
 # Colors
 set fish_color_command --bold
 set fish_color_comment --italics --dim
-set fish_color_autosuggestion --italics --bold --dim
+set fish_color_autosuggestion 1f67f9 --italics --bold
 set fish_color_cancel
 set fish_color_command --bold
 set fish_color_comment --italics --dim
diff --git a/flake.lock b/flake.lock
index 2e7f2e6..5b2ffda 100644
--- a/flake.lock
+++ b/flake.lock
@@ -56,11 +56,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736143030,
-        "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
+        "lastModified": 1738453229,
+        "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
+        "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738275749,
-        "narHash": "sha256-PM+cGduJ05EZ+YXulqAwUFjvfKpPmW080mcuN6R1POw=",
+        "lastModified": 1738448366,
+        "narHash": "sha256-4ATtQqBlgsGqkHTemta0ydY6f7JBRXz4Hf574NHQpkg=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "a8159195bfaef3c64df75d3b1e6a68d49d392be9",
+        "rev": "18fa9f323d8adbb0b7b8b98a8488db308210ed93",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1738310515,
-        "narHash": "sha256-qQ4/XFreahIZI5wIwlRcqDASP2EMGAUA0+qvufALdhI=",
+        "lastModified": 1738479528,
+        "narHash": "sha256-VmO/CQEQjIpfYot//PHDQuUm68r27zNuBiuANi6c5E4=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "c7b97f4eeda08870059b20ec8d92ee76efda53b4",
+        "rev": "1b82dbcbbcba812ad19f5c0601d1731731bf4ebe",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1738241166,
-        "narHash": "sha256-bcVp2t49bUoca5Wro4Q9m+SHpPSLVB/jabUqWiGGz4s=",
+        "lastModified": 1738450845,
+        "narHash": "sha256-yK2ZOtTTT6BjNi98PZi0NpEbidY12JMjgkqqggjoyD8=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "e71d2c817d1a2475551f58a98e411f6b39a5be3f",
+        "rev": "0985e784d8dce58748343207e176bf61303b7d68",
         "type": "github"
       },
       "original": {
@@ -302,11 +302,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1737861961,
-        "narHash": "sha256-LIRtMvAwLGb8pBoamzgEF67oKlNPz4LuXiRPVZf+TpE=",
+        "lastModified": 1738466368,
+        "narHash": "sha256-PZhUjtvQZOH3PO0EYdTpQvcqkgkq1NkP2A6w9SPHYsk=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "79b7b8eae3243fc5aa9aad34ba6b9bbb2266f523",
+        "rev": "46a8f5fc9552b776bfc5c5c96ea3bede33f68f52",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1738163270,
-        "narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=",
+        "lastModified": 1738277201,
+        "narHash": "sha256-6L+WXKCw5mqnUIExvqkD99pJQ41xgyCk6z/H9snClwk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "59e618d90c065f55ae48446f307e8c09565d5ab0",
+        "rev": "666e1b3f09c267afd66addebe80fb05a5ef2b554",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1738136902,
-        "narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=",
+        "lastModified": 1738297584,
+        "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c",
+        "rev": "9189ac18287c599860e878e905da550aa6dec1cd",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1738142207,
-        "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
+        "lastModified": 1738410390,
+        "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
+        "rev": "3a228057f5b619feb3186e986dbe76278d707b6e",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 07a47f5..f9fdcc2 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -14,12 +14,12 @@ local colors = {
     comment = hsl(360, 66, 40),
     comment_error = hsl(2, 85, 40),
 
-    suggestion = hsl(220, 95, 60),
+    suggestion = hsl(220, 95, 55),
 
-    -- diagnostic_error = hsl(347, 80, 45),
-    -- diagnostic_warning = hsl(30, 100, 50),
-    -- diagnostic_info = hsl(145, 80, 30),
-    -- diagnostic_hint = hsl(145, 80, 30),
+    diagnostic_error = hsl(347, 80, 45),
+    diagnostic_warning = hsl(30, 100, 50),
+    diagnostic_info = hsl(145, 80, 30),
+    diagnostic_hint = hsl(145, 80, 30),
 
     popup_error_bg = hsl(0, 90, 99),
     popup_warning_bg = hsl(27, 90, 99),
@@ -35,6 +35,7 @@ local colors = {
     dialog_bg = hsl(224, 5, 92),
     selection = hsl(270, 75, 92),
     highlight_subtle = hsl(0, 0, 94),
+    highlight = hsl(0, 0, 90),
     highlight_intense = hsl(42, 100, 30),
   },
 
@@ -174,6 +175,7 @@ local setupGroups = function(c)
     InclineNormal = { bg = c.background },
     InclineNormalNC = { bg = c.background },
 
+    EndOfBuffer = { fg = c.dimmed },
     WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
     NormalFloat = { bg = c.background, fg = c.foreground },
     FloatBorder = { fg = c.foreground },
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 67f0c25..00228b9 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -76,7 +76,7 @@ vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
 
 vim.o.autochdir = true
 vim.o.cia = 'kind,abbr,menu'
-vim.o.fillchars = "stl: ,stlnc: ,eob:░,vert:│"
+vim.o.fillchars = "stl: ,stlnc: ,eob:🮘,vert:│"
 vim.o.icm = "split"
 vim.o.list = false
 vim.o.scrolloff = 7
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 339c471..1c8f41e 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -35,7 +35,7 @@ indentscope.setup({
     delay = 10,
     animation = indentscope.gen_animation.none(),
   },
-  symbol = '│',
+  symbol = '┆',
 })
 
 require('mini.jump2d').setup({

From a82ffe7012b48660cb7638a8b9b312196c89b701 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 2 Feb 2025 13:42:19 +0100
Subject: [PATCH 616/656] nvim: disable indentscope by default. add ui toggle

---
 home/common/nvim/init.lua | 4 ++++
 home/common/nvim/mini.lua | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 00228b9..3eb3cb9 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -209,3 +209,7 @@ vim.keymap.set("n", "<Leader>uh", "<cmd>InlayHintsToggle<cr>", opts("Toggle inla
 vim.keymap.set("n", "<Leader>ul", "<cmd>set invcursorline<cr>", opts("Toggle cursor line"))
 vim.keymap.set("n", "<Leader>un", "<cmd>set invnumber<cr>", opts("Toggle line numbers"))
 vim.keymap.set("n", "<Leader>uw", "<cmd>set invwrap<cr>", opts("Toggle line wrapping"))
+
+vim.keymap.set("n", "<Leader>ui", function()
+  vim.g.miniindentscope_disable = not vim.g.miniindentscope_disable
+end, opts("Toggle indent scope"))
diff --git a/home/common/nvim/mini.lua b/home/common/nvim/mini.lua
index 1c8f41e..3c7d129 100644
--- a/home/common/nvim/mini.lua
+++ b/home/common/nvim/mini.lua
@@ -35,8 +35,9 @@ indentscope.setup({
     delay = 10,
     animation = indentscope.gen_animation.none(),
   },
-  symbol = '┆',
+  symbol = '│',
 })
+vim.g.miniindentscope_disable = true
 
 require('mini.jump2d').setup({
   mappings = { start_jumping = 'gw' }

From 44bf38a4842e346a720533797b1eaf4e3a862700 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 2 Feb 2025 11:59:56 +0100
Subject: [PATCH 617/656] ghostty: fonts fontelifonts

---
 home/common/ghostty.nix | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 6cb81d3..5e11086 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -14,16 +14,17 @@
       settings = {
         font-size = 11;
         font-family = "Berkeley Mono";
-        font-family-bold-italic = "Monaspace Radon Var";
+        font-family-italic = "Monaspace Radon Var";
+        font-family-bold-italic = "Monaspace Krypton Var";
         font-style = "Regular";
         font-style-bold = "Bold";
-        font-style-italic = "SemiLight Oblique";
-        font-style-bold-italic = "Italic";
+        font-style-italic = "Italic";
+        font-style-bold-italic = "ExtraLight";
         font-synthetic-style = false;
 
         adjust-cursor-thickness = 4;
-        adjust-underline-position = 5;
-        adjust-underline-thickness = -2;
+        adjust-underline-position = 3;
+        adjust-underline-thickness = -1;
 
         mouse-hide-while-typing = true;
         unfocused-split-opacity = 0.85;
@@ -75,7 +76,7 @@
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-secondary --font-style="UltraCondensed" --font-style-bold="Bold UltraCondensed" --font-style-italic="UltraCondensed Oblique" -e bash
+          ghostty --class=com.mitchellh.ghostty-secondary --background-opacity=0.7 --font-style="UltraCondensed" --font-style-bold="Bold UltraCondensed" --font-style-italic="UltraCondensed Oblique" -e bash
         '';
         genericName = "Secondary Ghostty";
         icon = "com.mitchellh.ghostty";
@@ -113,7 +114,7 @@
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-devel-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel"
+          ghostty --class=com.mitchellh.ghostty-devel-secondary --background-opacity=0.7 --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel"
         '';
         genericName = "Secondary Ghostty (devel)";
         icon = "com.mitchellh.ghostty";

From 52789b71e75baaa5ad939840e646cda2694de8eb Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 3 Feb 2025 15:32:23 +0100
Subject: [PATCH 618/656] jj: use upstream main w/git subprocess support

---
 flake.nix           | 2 +-
 home/common/vcs.nix | 7 ++++++-
 home/dln/home.nix   | 2 +-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/flake.nix b/flake.nix
index f72d553..d4de165 100644
--- a/flake.nix
+++ b/flake.nix
@@ -15,7 +15,7 @@
 
   inputs = {
     ghostty.url = "github:ghostty-org/ghostty";
-    jujutsu.url = "github:dln/jj/openssh";
+    jujutsu.url = "github:jj-vcs/jj/main";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index 956612a..4e3d18a 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -1,4 +1,9 @@
-{ config, inputs, pkgs, ... }:
+{
+  config,
+  inputs,
+  pkgs,
+  ...
+}:
 {
 
   home.packages = with pkgs; [
diff --git a/home/dln/home.nix b/home/dln/home.nix
index 8288f2c..b78fe99 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -43,7 +43,6 @@ in
 
   programs.helix = {
     enable = true;
-    # extraPackages = [];
   };
 
   programs.jujutsu = {
@@ -62,6 +61,7 @@ in
 
       git = {
         push-bookmark-prefix = "dln/push-";
+        subprocess = true;
       };
 
       ui = {

From ebd723f125e6c4a1a768c9f3106f5bc0b8ef6474 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 3 Feb 2025 15:32:23 +0100
Subject: [PATCH 619/656] chore(eza): underline instead of italics for symlinks

---
 home/common/utils.nix | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/home/common/utils.nix b/home/common/utils.nix
index 1ae7cf9..91b6130 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -60,16 +60,16 @@
   };
 
   programs.eza = {
-      enable = true;
-      enableFishIntegration = true;
+    enable = true;
+    enableFishIntegration = true;
   };
-  home.sessionVariables.EZA_COLORS = "reset:oc=0:ur=0:uw=0:ux=0:ue=0:gr=0:gw=0:gx=0:tr=0:tw=0:tx=0:su=0:sf=0:xa=0:sn=0:nb=0:nk=0:nm=0:ng=0:nt=0:sb=0:ub=0:uk=0:um=0:ug=0:ut=0:df=0:ds=0:uu=0:uR=0:un=0:gu=0:gR=0:gn=0:lc=0:lm=0:ga=0:gm=0:gd=0:gv=0:gt=0:gi=0:gc=0:Gm=0:Go=0:Gc=0:Gd=0:xx=0:da=0:in=0:bl=0:hd=0:lp=3:cc=0:bO=0:sp=0:mp=0:im=0:vi=0:mu=0:lo=0:cr=0:do=0:co=0:tm=0:cm=0:bu=0:sc=0:ic=0:Sn=0:Su=0:Sr=0:St=0:Sl=0:ff=0:di=1:ex=0:fi=0:pi=0:so=0:bd=0:cd=0:ln=3:or=3";
+  home.sessionVariables.EZA_COLORS = "reset:oc=0:ur=0:uw=0:ux=0:ue=0:gr=0:gw=0:gx=0:tr=0:tw=0:tx=0:su=0:sf=0:xa=0:sn=0:nb=0:nk=0:nm=0:ng=0:nt=0:sb=0:ub=0:uk=0:um=0:ug=0:ut=0:df=0:ds=0:uu=0:uR=0:un=0:gu=0:gR=0:gn=0:lc=0:lm=0:ga=0:gm=0:gd=0:gv=0:gt=0:gi=0:gc=0:Gm=0:Go=0:Gc=0:Gd=0:xx=0:da=0:in=0:bl=0:hd=0:lp=4:cc=0:bO=0:sp=0:mp=0:im=0:vi=0:mu=0:lo=0:cr=0:do=0:co=0:tm=0:cm=0:bu=0:sc=0:ic=0:Sn=0:Su=0:Sr=0:St=0:Sl=0:ff=0:di=1:ex=0:fi=0:pi=0:so=0:bd=0:cd=0:ln=4:or=4";
 
   programs.zoxide = {
     enable = true;
     enableFishIntegration = true;
     options = [ "--cmd=cd" ];
   };
-  home.sessionVariables._ZO_FZF_OPTS="--reverse --height=10 --border=rounded --no-info --no-separator --no-scrollbar --no-color --no-sort";
+  home.sessionVariables._ZO_FZF_OPTS = "--reverse --height=10 --border=rounded --no-info --no-separator --no-scrollbar --no-color --no-sort";
 
 }

From 51e2d9607f0ad7016d826fb79903952169174464 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 3 Feb 2025 15:32:23 +0100
Subject: [PATCH 620/656] fish: normal style for strings

---
 files/config/fish/config.fish | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/files/config/fish/config.fish b/files/config/fish/config.fish
index 6572a0c..4bb823b 100644
--- a/files/config/fish/config.fish
+++ b/files/config/fish/config.fish
@@ -36,7 +36,7 @@ set fish_color_redirection
 set fish_color_search_match -r
 set fish_color_selection -r
 set fish_color_status normal
-set fish_color_string --italics
+set fish_color_string normal
 set fish_color_user normal
 set fish_color_valid_path
 set fish_pager_color_background

From 964afe8841e15360cc2df645bf409a28e8ebf2b9 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 3 Feb 2025 15:32:23 +0100
Subject: [PATCH 621/656] nix update

---
 flake.lock              | 72 ++++++++++++++++++++---------------------
 home/common/ghostty.nix |  1 -
 2 files changed, 36 insertions(+), 37 deletions(-)

diff --git a/flake.lock b/flake.lock
index 5b2ffda..1f292d1 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1738275804,
-        "narHash": "sha256-n9cSCLlWjc8Bc5QyZYLo5+c6MfTZjgDpUGx/FGxBiY8=",
+        "lastModified": 1738619868,
+        "narHash": "sha256-q4h4SY1kVkZG4t/59CmJvaKjlx+xjojhdU1HqxiQhrQ=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "c5508e7d1922842ecd3160ea73b97da1282168b3",
+        "rev": "f0d276062b78658fc1f3857e9ea104788f1f4e58",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738448366,
-        "narHash": "sha256-4ATtQqBlgsGqkHTemta0ydY6f7JBRXz4Hf574NHQpkg=",
+        "lastModified": 1738667255,
+        "narHash": "sha256-sMMQb9NydZqQ/MvvtPp+Ny0W9P0Jk0moU7SrTBlO5Vo=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "18fa9f323d8adbb0b7b8b98a8488db308210ed93",
+        "rev": "7abcf59a365430b36f84eaa452a466b11e469e33",
         "type": "github"
       },
       "original": {
@@ -241,16 +241,16 @@
         "rust-overlay": "rust-overlay"
       },
       "locked": {
-        "lastModified": 1735928141,
-        "narHash": "sha256-KN5rfdDj3vB/GNVw4YZU4tJv2BnUQiQdOz1kEQyketI=",
-        "owner": "dln",
+        "lastModified": 1738692980,
+        "narHash": "sha256-Gngd9HFmROtjUE+LfN724gYbH5wgDH2fD9rHfR+MFKY=",
+        "owner": "jj-vcs",
         "repo": "jj",
-        "rev": "cb103fb4692c4e2b90c4663804b81a5ff1e49c06",
+        "rev": "227eccefdb220491bd25e9e51a316a85e6e6a0a1",
         "type": "github"
       },
       "original": {
-        "owner": "dln",
-        "ref": "openssh",
+        "owner": "jj-vcs",
+        "ref": "main",
         "repo": "jj",
         "type": "github"
       }
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1738479528,
-        "narHash": "sha256-VmO/CQEQjIpfYot//PHDQuUm68r27zNuBiuANi6c5E4=",
+        "lastModified": 1738652022,
+        "narHash": "sha256-gKPFP/hWRwR+rkpXMoDnXZDZMqKnUwIBDnYH8FpgNNU=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "1b82dbcbbcba812ad19f5c0601d1731731bf4ebe",
+        "rev": "9a95d2aa820df2b596af18f2a5ca37873a3d2695",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1738450845,
-        "narHash": "sha256-yK2ZOtTTT6BjNi98PZi0NpEbidY12JMjgkqqggjoyD8=",
+        "lastModified": 1738626281,
+        "narHash": "sha256-aZUwhRP5jBEZ1AaafBQ7FjV8XicyAkWh6Vhx94j53Ik=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "0985e784d8dce58748343207e176bf61303b7d68",
+        "rev": "5a7cf85c2c7e452563a4bce9195e9a3426ca3050",
         "type": "github"
       },
       "original": {
@@ -317,11 +317,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1731890469,
-        "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=",
+        "lastModified": 1737557748,
+        "narHash": "sha256-BaMuhctP1x00+8cBE2cJveJQb70/tWHI50MHj/ZrtOY=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "5083ec887760adfe12af64830a66807423a859a7",
+        "rev": "606996d74f6e2a12635d41c1bf58bfc7ea3bb5ec",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1738277201,
-        "narHash": "sha256-6L+WXKCw5mqnUIExvqkD99pJQ41xgyCk6z/H9snClwk=",
+        "lastModified": 1738574474,
+        "narHash": "sha256-rvyfF49e/k6vkrRTV4ILrWd92W+nmBDfRYZgctOyolQ=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "666e1b3f09c267afd66addebe80fb05a5ef2b554",
+        "rev": "fecfeb86328381268e29e998ddd3ebc70bbd7f7c",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1738297584,
-        "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=",
+        "lastModified": 1738678663,
+        "narHash": "sha256-uPdqVr8gN3oYYcueL/Rh7wM4Y8/D6p9IvRmoBf+uQa8=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9189ac18287c599860e878e905da550aa6dec1cd",
+        "rev": "00769b0532199db4e1bda59865f00f3a86232c75",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1738297584,
-        "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=",
+        "lastModified": 1738553537,
+        "narHash": "sha256-HrrsuYIOl14dreCDUsXQGrWxdiU8LPKxcIo759jUk6Q=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "9189ac18287c599860e878e905da550aa6dec1cd",
+        "rev": "2d31b9476b7c6f5b029e595586b0b112a7ad130b",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1738410390,
-        "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=",
+        "lastModified": 1738546358,
+        "narHash": "sha256-nLivjIygCiqLp5QcL7l56Tca/elVqM9FG1hGd9ZSsrg=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "3a228057f5b619feb3186e986dbe76278d707b6e",
+        "rev": "c6e957d81b96751a3d5967a0fd73694f303cc914",
         "type": "github"
       },
       "original": {
@@ -447,11 +447,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1732242723,
-        "narHash": "sha256-NWI8csIK0ujFlFuEXKnoc+7hWoCiEtINK9r48LUUMeU=",
+        "lastModified": 1737685583,
+        "narHash": "sha256-p+NVABRpGi+pT+xxf9HcLcFVxG6L+vEEy+NwzB9T0f8=",
         "owner": "oxalica",
         "repo": "rust-overlay",
-        "rev": "a229311fcb45b88a95fdfa5cecd8349c809a272a",
+        "rev": "eb64cbcc8eee0fa87ebded92805280d2ec97415a",
         "type": "github"
       },
       "original": {
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 5e11086..c4f8493 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -30,7 +30,6 @@
         unfocused-split-opacity = 0.85;
         unfocused-split-fill = "#14151a";
 
-
         shell-integration = "fish";
 
         gtk-tabs-location = "hidden";

From 23bd9c3f484b4da06918c0bc0935e7fe8e8036c2 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 8 Feb 2025 10:39:22 +0100
Subject: [PATCH 622/656] jj: pin to latest stable

---
 flake.lock | 62 +++++++++++++++++++++++++++---------------------------
 flake.nix  |  2 +-
 2 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/flake.lock b/flake.lock
index 1f292d1..1c84d94 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1738619868,
-        "narHash": "sha256-q4h4SY1kVkZG4t/59CmJvaKjlx+xjojhdU1HqxiQhrQ=",
+        "lastModified": 1738954179,
+        "narHash": "sha256-6AOfdZrbQxQRDvU36gsclQl2t5FLcfSWveIpyw+GoM4=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "f0d276062b78658fc1f3857e9ea104788f1f4e58",
+        "rev": "f95f636f1fff1cf449efa79f3f42dcb8d9bbfce5",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738667255,
-        "narHash": "sha256-sMMQb9NydZqQ/MvvtPp+Ny0W9P0Jk0moU7SrTBlO5Vo=",
+        "lastModified": 1739002622,
+        "narHash": "sha256-PtJV5OYQF7XO6XkDYypsYJS3+OsgYaYSmkO3I/A7lZo=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "7abcf59a365430b36f84eaa452a466b11e469e33",
+        "rev": "947eef9e99c42346cf0aac2bebe1cd94924c173b",
         "type": "github"
       },
       "original": {
@@ -241,16 +241,16 @@
         "rust-overlay": "rust-overlay"
       },
       "locked": {
-        "lastModified": 1738692980,
-        "narHash": "sha256-Gngd9HFmROtjUE+LfN724gYbH5wgDH2fD9rHfR+MFKY=",
+        "lastModified": 1738805560,
+        "narHash": "sha256-jGy+0VDxQrgNhj+eX06FRhPP31V8QZVAM4j4yBosAGE=",
         "owner": "jj-vcs",
         "repo": "jj",
-        "rev": "227eccefdb220491bd25e9e51a316a85e6e6a0a1",
+        "rev": "613742dfbbd89324b25672a75ef8ce9e671ae0d3",
         "type": "github"
       },
       "original": {
         "owner": "jj-vcs",
-        "ref": "main",
+        "ref": "v0.26.0",
         "repo": "jj",
         "type": "github"
       }
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1738652022,
-        "narHash": "sha256-gKPFP/hWRwR+rkpXMoDnXZDZMqKnUwIBDnYH8FpgNNU=",
+        "lastModified": 1738973121,
+        "narHash": "sha256-8Y58Pu9ijovxUFcyz+UIInWBPn12vAxXPyuDQKTO3y4=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "9a95d2aa820df2b596af18f2a5ca37873a3d2695",
+        "rev": "80cd53ef3a60f1a4bf3c6a7cbc5a400816c8427a",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1738626281,
-        "narHash": "sha256-aZUwhRP5jBEZ1AaafBQ7FjV8XicyAkWh6Vhx94j53Ik=",
+        "lastModified": 1738966259,
+        "narHash": "sha256-4TLVDIvtgPXkIDZbHKSBoICBTR8suhAOjSBsHZlXpsY=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "5a7cf85c2c7e452563a4bce9195e9a3426ca3050",
+        "rev": "a9cdf76e3a142c78b2b5da58c428e15e31cb0a15",
         "type": "github"
       },
       "original": {
@@ -349,11 +349,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1738574474,
-        "narHash": "sha256-rvyfF49e/k6vkrRTV4ILrWd92W+nmBDfRYZgctOyolQ=",
+        "lastModified": 1738843498,
+        "narHash": "sha256-7x+Q4xgFj9UxZZO9aUDCR8h4vyYut4zPUvfj3i+jBHE=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "fecfeb86328381268e29e998ddd3ebc70bbd7f7c",
+        "rev": "f5a32fa27df91dfc4b762671a0e0a859a8a0058f",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1738678663,
-        "narHash": "sha256-uPdqVr8gN3oYYcueL/Rh7wM4Y8/D6p9IvRmoBf+uQa8=",
+        "lastModified": 1738958807,
+        "narHash": "sha256-h0WKgHTLkjwjRNTkqByQquS7N/15SqIFMQ356Ww8uCA=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "00769b0532199db4e1bda59865f00f3a86232c75",
+        "rev": "e8d0b02af0958823c955aaab3c82b03f54411d91",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1738553537,
-        "narHash": "sha256-HrrsuYIOl14dreCDUsXQGrWxdiU8LPKxcIo759jUk6Q=",
+        "lastModified": 1738797219,
+        "narHash": "sha256-KRwX9Z1XavpgeSDVM/THdFd6uH8rNm/6R+7kIbGa+2s=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "2d31b9476b7c6f5b029e595586b0b112a7ad130b",
+        "rev": "1da52dd49a127ad74486b135898da2cef8c62665",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1738546358,
-        "narHash": "sha256-nLivjIygCiqLp5QcL7l56Tca/elVqM9FG1hGd9ZSsrg=",
+        "lastModified": 1738961098,
+        "narHash": "sha256-yWNBf6VDW38tl179FEuJ0qukthVfB02kv+mRsfUsWC0=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "c6e957d81b96751a3d5967a0fd73694f303cc914",
+        "rev": "a3eaf5e8eca7cab680b964138fb79073704aca75",
         "type": "github"
       },
       "original": {
@@ -498,11 +498,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738070913,
-        "narHash": "sha256-j6jC12vCFsTGDmY2u1H12lMr62fnclNjuCtAdF1a4Nk=",
+        "lastModified": 1738953846,
+        "narHash": "sha256-yrK3Hjcr8F7qS/j2F+r7C7o010eVWWlm4T1PrbKBOxQ=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "bebf27d00f7d10ba75332a0541ac43676985dea3",
+        "rev": "4f09b473c936d41582dd744e19f34ec27592c5fd",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index d4de165..b1af46b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -15,7 +15,7 @@
 
   inputs = {
     ghostty.url = "github:ghostty-org/ghostty";
-    jujutsu.url = "github:jj-vcs/jj/main";
+    jujutsu.url = "github:jj-vcs/jj/v0.26.0";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";

From 7a40103f75e276f571b4939d0ac79067a427938c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 4 Feb 2025 21:48:28 +0100
Subject: [PATCH 623/656] nix update

---
 flake.lock              | 48 ++++++++++++++++++++---------------------
 home/common/ghostty.nix |  4 ++--
 2 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/flake.lock b/flake.lock
index 1c84d94..635c99a 100644
--- a/flake.lock
+++ b/flake.lock
@@ -134,11 +134,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1738954179,
-        "narHash": "sha256-6AOfdZrbQxQRDvU36gsclQl2t5FLcfSWveIpyw+GoM4=",
+        "lastModified": 1739069316,
+        "narHash": "sha256-PscIOeOJwuBBbcaEGoyDrfnzxYI1UzZKIig/hJicKXo=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "f95f636f1fff1cf449efa79f3f42dcb8d9bbfce5",
+        "rev": "2c06ce761b5daea6670ac78a2e2342d755705223",
         "type": "github"
       },
       "original": {
@@ -221,11 +221,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739002622,
-        "narHash": "sha256-PtJV5OYQF7XO6XkDYypsYJS3+OsgYaYSmkO3I/A7lZo=",
+        "lastModified": 1739051380,
+        "narHash": "sha256-p1QSLO8DJnANY+ppK7fjD8GqfCrEIDjso1CSRHsXL7Y=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "947eef9e99c42346cf0aac2bebe1cd94924c173b",
+        "rev": "5af1b9a0f193ab6138b89a8e0af8763c21bbf491",
         "type": "github"
       },
       "original": {
@@ -266,11 +266,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1738973121,
-        "narHash": "sha256-8Y58Pu9ijovxUFcyz+UIInWBPn12vAxXPyuDQKTO3y4=",
+        "lastModified": 1739060572,
+        "narHash": "sha256-b66lHmfaZ4lKAG5VW8wC7fba2vUs6OMRlJumO4xMEfc=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "80cd53ef3a60f1a4bf3c6a7cbc5a400816c8427a",
+        "rev": "4452574d52632a36458cd9c80f6303f556460221",
         "type": "github"
       },
       "original": {
@@ -282,11 +282,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1738966259,
-        "narHash": "sha256-4TLVDIvtgPXkIDZbHKSBoICBTR8suhAOjSBsHZlXpsY=",
+        "lastModified": 1739058097,
+        "narHash": "sha256-QNlqRh8BnmSgJ6e5CRII9og+Z7fBfMAUbL3g66O8ZXg=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "a9cdf76e3a142c78b2b5da58c428e15e31cb0a15",
+        "rev": "59edd7c88a13d793501b88c55803da8a0ba7c739",
         "type": "github"
       },
       "original": {
@@ -302,11 +302,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738466368,
-        "narHash": "sha256-PZhUjtvQZOH3PO0EYdTpQvcqkgkq1NkP2A6w9SPHYsk=",
+        "lastModified": 1739071773,
+        "narHash": "sha256-/Ak+Quinhmdxa9m3shjm4lwwwqmzG8zzGhhhhgR1k9I=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "46a8f5fc9552b776bfc5c5c96ea3bede33f68f52",
+        "rev": "895d81b6228bbd50a6ef22f5a58a504ca99763ea",
         "type": "github"
       },
       "original": {
@@ -381,11 +381,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1738958807,
-        "narHash": "sha256-h0WKgHTLkjwjRNTkqByQquS7N/15SqIFMQ356Ww8uCA=",
+        "lastModified": 1739019272,
+        "narHash": "sha256-7Fu7oazPoYCbDzb9k8D/DdbKrC3aU1zlnc39Y8jy/s8=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "e8d0b02af0958823c955aaab3c82b03f54411d91",
+        "rev": "fa35a3c8e17a3de613240fea68f876e5b4896aec",
         "type": "github"
       },
       "original": {
@@ -397,11 +397,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1738797219,
-        "narHash": "sha256-KRwX9Z1XavpgeSDVM/THdFd6uH8rNm/6R+7kIbGa+2s=",
+        "lastModified": 1739019272,
+        "narHash": "sha256-7Fu7oazPoYCbDzb9k8D/DdbKrC3aU1zlnc39Y8jy/s8=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "1da52dd49a127ad74486b135898da2cef8c62665",
+        "rev": "fa35a3c8e17a3de613240fea68f876e5b4896aec",
         "type": "github"
       },
       "original": {
@@ -413,11 +413,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1738961098,
-        "narHash": "sha256-yWNBf6VDW38tl179FEuJ0qukthVfB02kv+mRsfUsWC0=",
+        "lastModified": 1739020877,
+        "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "a3eaf5e8eca7cab680b964138fb79073704aca75",
+        "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547",
         "type": "github"
       },
       "original": {
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index c4f8493..a4e95bd 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -75,7 +75,7 @@
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-secondary --background-opacity=0.7 --font-style="UltraCondensed" --font-style-bold="Bold UltraCondensed" --font-style-italic="UltraCondensed Oblique" -e bash
+          ghostty --class=com.mitchellh.ghostty-secondary --background-opacity=0.8 --font-style="UltraCondensed" --font-style-bold="Bold UltraCondensed" --font-style-italic="UltraCondensed Oblique" -e bash
         '';
         genericName = "Secondary Ghostty";
         icon = "com.mitchellh.ghostty";
@@ -113,7 +113,7 @@
           "TerminalEmulator"
         ];
         exec = ''
-          ghostty --class=com.mitchellh.ghostty-devel-secondary --background-opacity=0.7 --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel"
+          ghostty --class=com.mitchellh.ghostty-devel-secondary --background-opacity=0.8 --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel"
         '';
         genericName = "Secondary Ghostty (devel)";
         icon = "com.mitchellh.ghostty";

From 8f1ef592cde4f94aa3f9df41ed278201cd8f4c9c Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 9 Feb 2025 14:08:55 +0100
Subject: [PATCH 624/656] nvim: Use new fancy built-in diagnostics

---
 home/common/nvim/default.nix                | 23 -----------
 home/common/nvim/dieter/lua/dieter/init.lua | 11 ++++--
 home/common/nvim/init.lua                   | 42 ++++++++++++---------
 3 files changed, 32 insertions(+), 44 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index e5adcd9..f6deed1 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -121,29 +121,6 @@ in
         '';
       }
 
-      {
-        plugin = pkgs.vimUtils.buildVimPlugin {
-          name = "diagflow";
-          src = pkgs.fetchFromGitHub {
-            owner = "dgagn";
-            repo = "diagflow.nvim";
-            rev = "fc09d55d2e60edc8ed8f9939ba97b7b7e6488c99";
-            hash = "sha256-2WNuaIEXcAgUl2Kb/cCHEOrtehw9alaoM96qb4MLArw=";
-          };
-        };
-        type = "lua";
-        config = ''
-          require('diagflow').setup {
-            scope = "line",
-            gap_size = 0,
-            max_width = 50,
-            max_height = 20,
-            show_borders = true,
-            toggle_event = { "InsertEnter", "InsertLeave" },
-          }
-        '';
-      }
-
       {
         plugin = pkgs.vimUtils.buildVimPlugin {
           name = "dieter-nvim";
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index f9fdcc2..61946a2 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -149,14 +149,17 @@ local setupGroups = function(c)
     CursorLine = { bg = c.highlight_subtle },
 
     DiagnosticError = { fg = c.diagnostic_error, italic = true },
+    DiagnosticHint = { fg = c.diagnostic_hint, italic = true },
+    DiagnosticInfo = { fg = c.diagnostic_info, italic = true },
+    DiagnosticWarn = { fg = c.diagnostic_warn, italic = true },
     DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.popup_error_bg },
-    DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
-    DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
     DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
+    DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
+    DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
     DiagnosticUnderlineError = { fg = c.foreground, undercurl = true, sp = c.diagnostic_error },
-    DiagnosticUnderlineWarn = { fg = c.foreground, undercurl = true, sp = c.diagnostic_warn },
+    DiagnosticUnderlineHint = { fg = c.foreground, undercurl = true, sp = c.diagnostic_hint },
     DiagnosticUnderlineInfo = { fg = c.foreground, undercurl = true, sp = c.diagnostic_info },
-    DiagnosticUnderlinehint = { fg = c.foreground, undercurl = true, sp = c.diagnostic_hint },
+    DiagnosticUnderlineWarn = { fg = c.foreground, undercurl = true, sp = c.diagnostic_warn },
 
     DiagnosticSignError = { fg = c.diagnostic_error },
     DiagnosticSignHint = { fg = c.diagnostic_hint },
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 3eb3cb9..0b30e4f 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -92,23 +92,31 @@ vim.o.updatetime = 250
 vim.o.grepprg = [[rg --glob "!.jj" --glob "!.git" --no-heading --vimgrep --follow $*]]
 vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" }
 
-vim.fn.sign_define(
-  "DiagnosticSignError",
-  { text = "", hl = "DiagnosticSignError", texthl = "DiagnosticSignError", culhl = "DiagnosticSignErrorLine" }
-)
-vim.fn.sign_define(
-  "DiagnosticSignWarn",
-  { text = "", hl = "DiagnosticSignWarn", texthl = "DiagnosticSignWarn", culhl = "DiagnosticSignWarnLine" }
-)
-vim.fn.sign_define(
-  "DiagnosticSignInfo",
-  { text = "", hl = "DiagnosticSignInfo", texthl = "DiagnosticSignInfo", culhl = "DiagnosticSignInfoLine" }
-)
-vim.fn.sign_define(
-  "DiagnosticSignHint",
-  { text = "", hl = "DiagnosticSignHint", texthl = "DiagnosticSignHint", culhl = "DiagnosticSignHintLine" }
-)
-
+-- Diagnostics
+vim.diagnostic.config {
+  severity_sort = true,
+  signs = {
+    linehl = {
+      [vim.diagnostic.severity.ERROR] = "DiagnosticSignErrorLine",
+      [vim.diagnostic.severity.WARN] = "DiagnosticSignWarnLine",
+      [vim.diagnostic.severity.INFO] = "DiagnosticSignInfoLine",
+      [vim.diagnostic.severity.HINT] = "DiagnostigSignHintLine",
+    },
+    numhl = {
+      [vim.diagnostic.severity.ERROR] = "DiagnosticSignError",
+      [vim.diagnostic.severity.WARN] = "DiagnosticSignWarn",
+      [vim.diagnostic.severity.INFO] = "DiagnosticSignInfo",
+      [vim.diagnostic.severity.HINT] = "DiagnostigSignHint",
+    },
+    text = {
+      [vim.diagnostic.severity.ERROR] = "",
+      [vim.diagnostic.severity.WARN] = "",
+      [vim.diagnostic.severity.INFO] = "",
+      [vim.diagnostic.severity.HINT] = "",
+    },
+  },
+  virtual_lines = true,
+}
 
 -- Make <Tab> work for snippets
 vim.keymap.set({ "i", "s" }, "<Tab>", function()

From 789704e91ffb52cb33407d41392566b33c7bfb73 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 9 Feb 2025 20:40:37 +0100
Subject: [PATCH 625/656] nvim: upgrade neocodium to main

---
 home/common/nvim/default.nix | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index f6deed1..850caf2 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -106,15 +106,19 @@ in
           src = pkgs.fetchFromGitHub {
             owner = "monkoose";
             repo = "neocodeium";
-            rev = "4da81528468b33585c411f31eb390dce573ccb14"; # v1.8.0
-            hash = "sha256-1n9nNqBNwNDSzbAkm8eB4HZLNy5HmMg25jPwQAnW5OU=";
+            rev = "a2b5257c736886ec3ccbd961766f8ab9c82b2a72"; # 2025-02-04
+            hash = "sha256-mR2fzsdCVbh7nLcsSgQnhRivoKW6oFqJwuIYfz8OV0k=";
           };
           doCheck = false;
         };
         type = "lua";
         config = ''
           local neocodeium =require('neocodeium')
-          neocodeium.setup()
+          neocodeium.setup({
+            show_label = false,
+            debounce = true,
+            silent = false,
+          })
           vim.keymap.set("i", "<C-j>", neocodeium.accept, { remap = true })
           vim.keymap.set("i", "<A-f>", neocodeium.accept, { remap = true })
           vim.keymap.set("i", "<C-h>", neocodeium.cycle_or_complete, { remap = true })

From f66de79c47026400cc9694e88cc1d761b07bd44e Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 9 Feb 2025 20:40:37 +0100
Subject: [PATCH 626/656] nvim: try the new messageopts setting

---
 home/common/nvim/init.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 0b30e4f..a99fcad 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -10,6 +10,7 @@ vim.opt.guicursor =
 "n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175"
 vim.opt.laststatus = 0
 vim.opt.number = false
+vim.opt.messagesopt = "wait:1000,history:50"
 vim.opt.relativenumber = false
 vim.opt.ruler = true
 vim.opt.syntax = "on"

From 679c863cf80d4c3d222c66ff9283966c691a7b51 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 9 Feb 2025 20:40:37 +0100
Subject: [PATCH 627/656] jj: use nixpkgs package

---
 flake.lock          | 126 ++++++--------------------------------------
 flake.nix           |   1 -
 home/common/vcs.nix |   1 -
 3 files changed, 17 insertions(+), 111 deletions(-)

diff --git a/flake.lock b/flake.lock
index 635c99a..443e291 100644
--- a/flake.lock
+++ b/flake.lock
@@ -108,24 +108,6 @@
         "type": "github"
       }
     },
-    "flake-utils_2": {
-      "inputs": {
-        "systems": "systems_2"
-      },
-      "locked": {
-        "lastModified": 1731533236,
-        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
     "ghostty": {
       "inputs": {
         "flake-compat": "flake-compat",
@@ -134,11 +116,11 @@
         "zig": "zig"
       },
       "locked": {
-        "lastModified": 1739069316,
-        "narHash": "sha256-PscIOeOJwuBBbcaEGoyDrfnzxYI1UzZKIig/hJicKXo=",
+        "lastModified": 1739143498,
+        "narHash": "sha256-85TvsfDdOBfthR44rRJV9KXpj415StJqVyq+BBlLCvM=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "2c06ce761b5daea6670ac78a2e2342d755705223",
+        "rev": "a3e462bbba724bcf312fcd5edd12bb5e0251c853",
         "type": "github"
       },
       "original": {
@@ -234,27 +216,6 @@
         "type": "github"
       }
     },
-    "jujutsu": {
-      "inputs": {
-        "flake-utils": "flake-utils_2",
-        "nixpkgs": "nixpkgs",
-        "rust-overlay": "rust-overlay"
-      },
-      "locked": {
-        "lastModified": 1738805560,
-        "narHash": "sha256-jGy+0VDxQrgNhj+eX06FRhPP31V8QZVAM4j4yBosAGE=",
-        "owner": "jj-vcs",
-        "repo": "jj",
-        "rev": "613742dfbbd89324b25672a75ef8ce9e671ae0d3",
-        "type": "github"
-      },
-      "original": {
-        "owner": "jj-vcs",
-        "ref": "v0.26.0",
-        "repo": "jj",
-        "type": "github"
-      }
-    },
     "neovim-nightly-overlay": {
       "inputs": {
         "flake-compat": "flake-compat_2",
@@ -262,15 +223,15 @@
         "git-hooks": "git-hooks",
         "hercules-ci-effects": "hercules-ci-effects",
         "neovim-src": "neovim-src",
-        "nixpkgs": "nixpkgs_2",
+        "nixpkgs": "nixpkgs",
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1739060572,
-        "narHash": "sha256-b66lHmfaZ4lKAG5VW8wC7fba2vUs6OMRlJumO4xMEfc=",
+        "lastModified": 1739145937,
+        "narHash": "sha256-1QL3KSEjc99+ISyzBHHaLGjRrPkLfsFiHZBc40kAiQ8=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "4452574d52632a36458cd9c80f6303f556460221",
+        "rev": "77482d0efef2807924c593947bdf16e303e79f42",
         "type": "github"
       },
       "original": {
@@ -282,11 +243,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1739058097,
-        "narHash": "sha256-QNlqRh8BnmSgJ6e5CRII9og+Z7fBfMAUbL3g66O8ZXg=",
+        "lastModified": 1739136210,
+        "narHash": "sha256-lq/xXRuVSf2ohTRCEgstJJGQX50S5C12WbYL5qj3MBU=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "59edd7c88a13d793501b88c55803da8a0ba7c739",
+        "rev": "59a171fd99a7452c8840eee55783fb6746994637",
         "type": "github"
       },
       "original": {
@@ -317,11 +278,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1737557748,
-        "narHash": "sha256-BaMuhctP1x00+8cBE2cJveJQb70/tWHI50MHj/ZrtOY=",
+        "lastModified": 1739019272,
+        "narHash": "sha256-7Fu7oazPoYCbDzb9k8D/DdbKrC3aU1zlnc39Y8jy/s8=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "606996d74f6e2a12635d41c1bf58bfc7ea3bb5ec",
+        "rev": "fa35a3c8e17a3de613240fea68f876e5b4896aec",
         "type": "github"
       },
       "original": {
@@ -349,11 +310,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1738843498,
-        "narHash": "sha256-7x+Q4xgFj9UxZZO9aUDCR8h4vyYut4zPUvfj3i+jBHE=",
+        "lastModified": 1739055578,
+        "narHash": "sha256-2MhC2Bgd06uI1A0vkdNUyDYsMD0SLNGKtD8600mZ69A=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "f5a32fa27df91dfc4b762671a0e0a859a8a0058f",
+        "rev": "a45fa362d887f4d4a7157d95c28ca9ce2899b70e",
         "type": "github"
       },
       "original": {
@@ -396,22 +357,6 @@
       }
     },
     "nixpkgs_2": {
-      "locked": {
-        "lastModified": 1739019272,
-        "narHash": "sha256-7Fu7oazPoYCbDzb9k8D/DdbKrC3aU1zlnc39Y8jy/s8=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "fa35a3c8e17a3de613240fea68f876e5b4896aec",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_3": {
       "locked": {
         "lastModified": 1739020877,
         "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
@@ -431,35 +376,13 @@
       "inputs": {
         "ghostty": "ghostty",
         "home-manager": "home-manager",
-        "jujutsu": "jujutsu",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
         "nix-index-database": "nix-index-database",
-        "nixpkgs": "nixpkgs_3",
+        "nixpkgs": "nixpkgs_2",
         "nixpkgs-stable": "nixpkgs-stable_2",
         "nixpkgs-unstable": "nixpkgs-unstable_2"
       }
     },
-    "rust-overlay": {
-      "inputs": {
-        "nixpkgs": [
-          "jujutsu",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1737685583,
-        "narHash": "sha256-p+NVABRpGi+pT+xxf9HcLcFVxG6L+vEEy+NwzB9T0f8=",
-        "owner": "oxalica",
-        "repo": "rust-overlay",
-        "rev": "eb64cbcc8eee0fa87ebded92805280d2ec97415a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "oxalica",
-        "repo": "rust-overlay",
-        "type": "github"
-      }
-    },
     "systems": {
       "locked": {
         "lastModified": 1681028828,
@@ -475,21 +398,6 @@
         "type": "github"
       }
     },
-    "systems_2": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    },
     "treefmt-nix": {
       "inputs": {
         "nixpkgs": [
diff --git a/flake.nix b/flake.nix
index b1af46b..0eb9df5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -15,7 +15,6 @@
 
   inputs = {
     ghostty.url = "github:ghostty-org/ghostty";
-    jujutsu.url = "github:jj-vcs/jj/v0.26.0";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
diff --git a/home/common/vcs.nix b/home/common/vcs.nix
index 4e3d18a..bc74bb3 100644
--- a/home/common/vcs.nix
+++ b/home/common/vcs.nix
@@ -136,6 +136,5 @@
 
   programs.jujutsu = {
     enable = true;
-    package = inputs.jujutsu.packages.${pkgs.system}.default;
   };
 }

From a48421ef4e011e83ae1becb74172d2ab2c9d2373 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 10 Feb 2025 12:21:51 +0100
Subject: [PATCH 628/656] gnome: font fixings

---
 common/desktop.nix      | 3 +--
 home/common/ghostty.nix | 2 ++
 home/common/gnome.nix   | 4 +---
 home/dln/nemo.nix       | 2 +-
 4 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/common/desktop.nix b/common/desktop.nix
index 263ab6e..2eaf91b 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -48,12 +48,12 @@ in
         allowBitmaps = false;
         antialias = true;
         defaultFonts = {
+          monospace = [ "Berkeley Mono" ];
           serif = [ "Liberation Serif" ];
           sansSerif = [ "Inter" ];
         };
         hinting.enable = true;
         hinting.style = "slight";
-        subpixel.rgba = "rgb";
       };
       packages = with pkgs; [
         inter
@@ -63,7 +63,6 @@ in
         noto-fonts
         noto-fonts-cjk-sans
         noto-fonts-color-emoji
-        roboto
         ubuntu_font_family
       ];
     };
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index a4e95bd..50f8cd5 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -22,6 +22,8 @@
         font-style-bold-italic = "ExtraLight";
         font-synthetic-style = false;
 
+        freetype-load-flags = "no-force-autohint";
+
         adjust-cursor-thickness = 4;
         adjust-underline-position = 3;
         adjust-underline-thickness = -1;
diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index 83fe87f..b8e949e 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -66,11 +66,9 @@ with lib.hm.gvariant;
         enable-animations = false;
         enable-hot-corners = false;
         show-battery-percentage = true;
-        font-antialiasing = "grayscale";
-        font-hinting = "slight";
         font-name = "Inter Variable 11";
         document-font-name = "Inter Variable 11";
-        monospace-font-name = "BerkeleyMono Nerd Font 11";
+        monospace-font-name = "Berkeley Mono 11";
         toolkit-accessibility = false;
       };
 
diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index df79854..988c04c 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -6,7 +6,7 @@
   ];
 
   programs.ghostty.settings = {
-    font-size = lib.mkForce 16;
+    font-size = lib.mkForce 15;
   };
 
   programs.obs-studio = {

From 57fb622f2d6b471633084316d52b18c8c5ada5bf Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 10 Feb 2025 12:21:51 +0100
Subject: [PATCH 629/656] nvim: dieter light colors

---
 home/common/nvim/dieter/lua/dieter/init.lua | 21 +++++++++++++++++----
 home/common/nvim/init.lua                   |  1 -
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 61946a2..2d6c96a 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -10,6 +10,12 @@ local colors = {
     dimmed = hsl(0, 0, 80),
     dimmed_subtle = hsl(0, 0, 20),
 
+    highlight_subtle = hsl(0, 0, 94),
+    highlight = hsl(0, 0, 90),
+    highlight_intense = hsl(42, 100, 30),
+
+    dialog_fg = hsl(230, 13, 10),
+
     string = hsl(96, 50, 33),
     comment = hsl(360, 66, 40),
     comment_error = hsl(2, 85, 40),
@@ -32,11 +38,18 @@ local colors = {
     change_quarter = hsl(224, 100, 85),
     delete = hsl(350, 100, 40),
 
-    dialog_bg = hsl(224, 5, 92),
     selection = hsl(270, 75, 92),
-    highlight_subtle = hsl(0, 0, 94),
-    highlight = hsl(0, 0, 90),
-    highlight_intense = hsl(42, 100, 30),
+
+    search_bg = hsl(43, 100, 8),
+    search_fg = hsl(43, 100, 85),
+
+    cmp_bg = hsl(218, 30, 97),
+    cmp_fg = hsl(218, 30, 13),
+    cmp_selected_fg = hsl(218, 50, 8),
+    cmp_selected_bg = hsl(218, 30, 85),
+
+    doc_bg = hsl(200, 30, 90),
+    doc_fg = hsl(220, 80, 10),
   },
 
   dark = {
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index a99fcad..0b30e4f 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -10,7 +10,6 @@ vim.opt.guicursor =
 "n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175"
 vim.opt.laststatus = 0
 vim.opt.number = false
-vim.opt.messagesopt = "wait:1000,history:50"
 vim.opt.relativenumber = false
 vim.opt.ruler = true
 vim.opt.syntax = "on"

From 21b902d693dd9c6f48abf09562372a841e95046d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 12 Feb 2025 12:47:36 +0100
Subject: [PATCH 630/656] gnome: apps

---
 common/desktop.nix |  19 ++++----
 flake.lock         | 113 +++++++++++++++++++++++++++++----------------
 home/dln/nemo.nix  |   6 ++-
 3 files changed, 86 insertions(+), 52 deletions(-)

diff --git a/common/desktop.nix b/common/desktop.nix
index 2eaf91b..cf16871 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -16,31 +16,30 @@ in
     environment.systemPackages = with pkgs; [ gnome-ssh-askpass4 ];
 
     # Excluding some GNOME applications from the default install
-    environment.gnome.excludePackages =
-      (with pkgs; [
-        gnome-connections
-        gnome-photos
-        gnome-tour
-        snapshot
-      ])
-      ++ (with pkgs; [
+    environment.gnome.excludePackages = (
+      with pkgs;
+      [
         atomix # puzzle game
         baobab # disk usage analyzer
         cheese # webcam tool
         epiphany # web browser
         geary # email reader
         gnome-clocks
-        gnome-contacts
+        gnome-connections
         gnome-disk-utility
         gnome-logs
         gnome-music
+        gnome-photos
         gnome-terminal
+        gnome-tour
+        snapshot
         hitori # sudoku game
         iagno # go game
         simple-scan
         tali # poker game
         yelp # help viewer
-      ]);
+      ]
+    );
 
     fonts = {
       fontDir.enable = true;
diff --git a/flake.lock b/flake.lock
index 443e291..e562518 100644
--- a/flake.lock
+++ b/flake.lock
@@ -3,11 +3,11 @@
     "flake-compat": {
       "flake": false,
       "locked": {
-        "lastModified": 1696426674,
-        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "lastModified": 1733328505,
+        "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
         "owner": "edolstra",
         "repo": "flake-compat",
-        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
         "type": "github"
       },
       "original": {
@@ -95,11 +95,11 @@
         "systems": "systems"
       },
       "locked": {
-        "lastModified": 1705309234,
-        "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+        "lastModified": 1731533236,
+        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
         "type": "github"
       },
       "original": {
@@ -111,16 +111,18 @@
     "ghostty": {
       "inputs": {
         "flake-compat": "flake-compat",
+        "flake-utils": "flake-utils",
         "nixpkgs-stable": "nixpkgs-stable",
         "nixpkgs-unstable": "nixpkgs-unstable",
-        "zig": "zig"
+        "zig": "zig",
+        "zig2nix": "zig2nix"
       },
       "locked": {
-        "lastModified": 1739143498,
-        "narHash": "sha256-85TvsfDdOBfthR44rRJV9KXpj415StJqVyq+BBlLCvM=",
+        "lastModified": 1739322219,
+        "narHash": "sha256-nNnzAhNL3Oog0vm/C/XJvWhEJwACPfcJiQrLjBmtfZg=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "a3e462bbba724bcf312fcd5edd12bb5e0251c853",
+        "rev": "338a07ecadabf26b94448d64ceb4731df60dd21b",
         "type": "github"
       },
       "original": {
@@ -203,11 +205,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739051380,
-        "narHash": "sha256-p1QSLO8DJnANY+ppK7fjD8GqfCrEIDjso1CSRHsXL7Y=",
+        "lastModified": 1739314552,
+        "narHash": "sha256-ggVf2BclyIW3jexc/uvgsgJH4e2cuG6Nyg54NeXgbFI=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "5af1b9a0f193ab6138b89a8e0af8763c21bbf491",
+        "rev": "83bd3a26ac0526ae04fa74df46738bb44b89dcdd",
         "type": "github"
       },
       "original": {
@@ -227,11 +229,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1739145937,
-        "narHash": "sha256-1QL3KSEjc99+ISyzBHHaLGjRrPkLfsFiHZBc40kAiQ8=",
+        "lastModified": 1739348326,
+        "narHash": "sha256-T+LpQgJA1mVRcCkMO2kiQwTV+MdM9Wh1XvFeYuvlxT0=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "77482d0efef2807924c593947bdf16e303e79f42",
+        "rev": "db04408ca625de944a70ab0d69099e2f0af74f5e",
         "type": "github"
       },
       "original": {
@@ -243,11 +245,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1739136210,
-        "narHash": "sha256-lq/xXRuVSf2ohTRCEgstJJGQX50S5C12WbYL5qj3MBU=",
+        "lastModified": 1739317748,
+        "narHash": "sha256-WP2zIGrexV6P2Q1qR9q04GvLOO7jSAk/A/2v9vDI0S0=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "59a171fd99a7452c8840eee55783fb6746994637",
+        "rev": "00d75a24cfb74e8f35d73ebb0e59a7b9248950c1",
         "type": "github"
       },
       "original": {
@@ -278,11 +280,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1739019272,
-        "narHash": "sha256-7Fu7oazPoYCbDzb9k8D/DdbKrC3aU1zlnc39Y8jy/s8=",
+        "lastModified": 1739138025,
+        "narHash": "sha256-M4ilIfGxzbBZuURokv24aqJTbdjPA9K+DtKUzrJaES4=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "fa35a3c8e17a3de613240fea68f876e5b4896aec",
+        "rev": "b2243f41e860ac85c0b446eadc6930359b294e79",
         "type": "github"
       },
       "original": {
@@ -294,11 +296,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1733423277,
-        "narHash": "sha256-TxabjxEgkNbCGFRHgM/b9yZWlBj60gUOUnRT/wbVQR8=",
+        "lastModified": 1738255539,
+        "narHash": "sha256-hP2eOqhIO/OILW+3moNWO4GtdJFYCqAe9yJZgvlCoDQ=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "e36963a147267afc055f7cf65225958633e536bf",
+        "rev": "c3511a3b53b482aa7547c9d1626fd7310c1de1c5",
         "type": "github"
       },
       "original": {
@@ -310,11 +312,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1739055578,
-        "narHash": "sha256-2MhC2Bgd06uI1A0vkdNUyDYsMD0SLNGKtD8600mZ69A=",
+        "lastModified": 1739206421,
+        "narHash": "sha256-PwQASeL2cGVmrtQYlrBur0U20Xy07uSWVnFup2PHnDs=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "a45fa362d887f4d4a7157d95c28ca9ce2899b70e",
+        "rev": "44534bc021b85c8d78e465021e21f33b856e2540",
         "type": "github"
       },
       "original": {
@@ -326,11 +328,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1733229606,
-        "narHash": "sha256-FLYY5M0rpa5C2QAE3CKLYAM6TwbKicdRK6qNrSHlNrE=",
+        "lastModified": 1738136902,
+        "narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "566e53c2ad750c84f6d31f9ccb9d00f823165550",
+        "rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c",
         "type": "github"
       },
       "original": {
@@ -342,11 +344,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1739019272,
-        "narHash": "sha256-7Fu7oazPoYCbDzb9k8D/DdbKrC3aU1zlnc39Y8jy/s8=",
+        "lastModified": 1739138025,
+        "narHash": "sha256-M4ilIfGxzbBZuURokv24aqJTbdjPA9K+DtKUzrJaES4=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "fa35a3c8e17a3de613240fea68f876e5b4896aec",
+        "rev": "b2243f41e860ac85c0b446eadc6930359b294e79",
         "type": "github"
       },
       "original": {
@@ -358,11 +360,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1739020877,
-        "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
+        "lastModified": 1739214665,
+        "narHash": "sha256-26L8VAu3/1YRxS8MHgBOyOM8xALdo6N0I04PgorE7UM=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547",
+        "rev": "64e75cd44acf21c7933d61d7721e812eac1b5a0a",
         "type": "github"
       },
       "original": {
@@ -424,18 +426,21 @@
         "flake-compat": [
           "ghostty"
         ],
-        "flake-utils": "flake-utils",
+        "flake-utils": [
+          "ghostty",
+          "flake-utils"
+        ],
         "nixpkgs": [
           "ghostty",
           "nixpkgs-stable"
         ]
       },
       "locked": {
-        "lastModified": 1717848532,
-        "narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=",
+        "lastModified": 1738239110,
+        "narHash": "sha256-Y5i9mQ++dyIQr+zEPNy+KIbc5wjPmfllBrag3cHZgcE=",
         "owner": "mitchellh",
         "repo": "zig-overlay",
-        "rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43",
+        "rev": "1a8fb6f3a04724519436355564b95fce5e272504",
         "type": "github"
       },
       "original": {
@@ -443,6 +448,32 @@
         "repo": "zig-overlay",
         "type": "github"
       }
+    },
+    "zig2nix": {
+      "inputs": {
+        "flake-utils": [
+          "ghostty",
+          "flake-utils"
+        ],
+        "nixpkgs": [
+          "ghostty",
+          "nixpkgs-stable"
+        ]
+      },
+      "locked": {
+        "lastModified": 1738263917,
+        "narHash": "sha256-j/3fwe2pEOquHabP/puljOKwAZFjIE9gXZqA91sC48M=",
+        "owner": "jcollie",
+        "repo": "zig2nix",
+        "rev": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a",
+        "type": "github"
+      },
+      "original": {
+        "owner": "jcollie",
+        "ref": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a",
+        "repo": "zig2nix",
+        "type": "github"
+      }
     }
   },
   "root": "root",
diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index 988c04c..504e5cd 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -24,7 +24,11 @@
     };
   };
 
-  home.packages = with pkgs; [ stable.calibre ];
+  home.packages = with pkgs; [
+    endeavour
+    picard
+    stable.calibre
+  ];
 
   programs.gpg.enable = true;
 

From 969047ff0246c874febc0b7289ddae794f0bbc45 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 13 Feb 2025 09:07:29 +0100
Subject: [PATCH 631/656] gnome: add gnome-contacts

---
 flake.lock            | 24 ++++++++++++------------
 home/common/gnome.nix |  1 +
 2 files changed, 13 insertions(+), 12 deletions(-)

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

From 098a6bc4f1af49378c1130da4fea23cc5f5b5f89 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 13 Feb 2025 09:07:29 +0100
Subject: [PATCH 632/656] nvim: Add <Leader>us to toggle spellcheck

---
 home/common/nvim/init.lua | 11 +++++++++++
 1 file changed, 11 insertions(+)

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"))

From 2ce298d9b37217da24b3610025cd290ccf4d5f51 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 13 Feb 2025 20:44:26 +0100
Subject: [PATCH 633/656] nvim: Remove harperls

---
 flake.lock                   | 24 ++++++++++++------------
 home/common/nvim/default.nix |  1 -
 home/common/nvim/init.lua    | 11 -----------
 home/common/nvim/lsp.lua     |  7 -------
 4 files changed, 12 insertions(+), 31 deletions(-)

diff --git a/flake.lock b/flake.lock
index 1a709d8..f3bd724 100644
--- a/flake.lock
+++ b/flake.lock
@@ -118,11 +118,11 @@
         "zig2nix": "zig2nix"
       },
       "locked": {
-        "lastModified": 1739409050,
-        "narHash": "sha256-9h1lQs/PGh0AsqnwE++utrnzyb1H88nPqBpHWtly438=",
+        "lastModified": 1739473144,
+        "narHash": "sha256-9+8b8DNzClO8A6mxY4wu9xsBLoXGOM+5JIXfusb+QrY=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "432beac3151d84c78dfe7ab860c1c3f7957f4775",
+        "rev": "c481bdf70461a8a4660678a819a69ac4f4934ac2",
         "type": "github"
       },
       "original": {
@@ -205,11 +205,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739416022,
-        "narHash": "sha256-Af1CIT+XlXEb+Dk11sgPDzJoOUiada2Xoj5hA8TBvLY=",
+        "lastModified": 1739470101,
+        "narHash": "sha256-NxNe32VB4XI/xIXrsKmIfrcgtEx5r/5s52pL3CpEcA4=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "c9d343cfa0565671cc7e8d5aefebaf61cc840abd",
+        "rev": "5031c6d2978109336637977c165f82aa49fa16a7",
         "type": "github"
       },
       "original": {
@@ -312,11 +312,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1739206421,
-        "narHash": "sha256-PwQASeL2cGVmrtQYlrBur0U20Xy07uSWVnFup2PHnDs=",
+        "lastModified": 1739357830,
+        "narHash": "sha256-9xim3nJJUFbVbJCz48UP4fGRStVW5nv4VdbimbKxJ3I=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "44534bc021b85c8d78e465021e21f33b856e2540",
+        "rev": "0ff09db9d034a04acd4e8908820ba0b410d7a33a",
         "type": "github"
       },
       "original": {
@@ -344,11 +344,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1739138025,
-        "narHash": "sha256-M4ilIfGxzbBZuURokv24aqJTbdjPA9K+DtKUzrJaES4=",
+        "lastModified": 1739419412,
+        "narHash": "sha256-NCWZQg4DbYVFWg+MOFrxWRaVsLA7yvRWAf6o0xPR1hI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "b2243f41e860ac85c0b446eadc6930359b294e79",
+        "rev": "2d55b4c1531187926c2a423f6940b3b1301399b5",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/default.nix b/home/common/nvim/default.nix
index 850caf2..94a6c4a 100644
--- a/home/common/nvim/default.nix
+++ b/home/common/nvim/default.nix
@@ -37,7 +37,6 @@ in
 
     extraPackages = with pkgs; [
       codeium
-      harper
       lua-language-server
       nixd
       shellcheck
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 78d5db3..0b30e4f 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -221,14 +221,3 @@ 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"))
diff --git a/home/common/nvim/lsp.lua b/home/common/nvim/lsp.lua
index 1cd6e50..f36bd30 100644
--- a/home/common/nvim/lsp.lua
+++ b/home/common/nvim/lsp.lua
@@ -23,13 +23,6 @@ local servers = {
     },
   },
 
-  harper_ls = {
-    filetypes = {
-      "asciidoc", "c", "gitcommit", "go", "html", "javascript", "just", "lua", "markdown",
-      "nix", "python", "ruby", "rust", "text", "toml", "typescript", "zig",
-    }
-  },
-
   lua_ls = {
     settings = {
       Lua = {

From 46ecffdb0b1596bb1f895bbc14bfe7b6ac5dea04 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 13 Feb 2025 21:07:18 +0100
Subject: [PATCH 634/656] jj: remove difft deprecated arg

---
 home/dln/home.nix | 2 --
 1 file changed, 2 deletions(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index b78fe99..f0d23e4 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -72,7 +72,6 @@ in
       "merge-tools" = {
         difft."diff-args" = [
           "--color=always"
-          "--missing-as-empty"
           "$left"
           "$right"
         ];
@@ -81,7 +80,6 @@ in
           "diff-args" = [
             "--color=always"
             "--display=inline"
-            "--missing-as-empty"
             "$left"
             "$right"
           ];

From d6623cb2764e3448a4e711c374aab24e4afb0523 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 20 Feb 2025 08:37:18 +0100
Subject: [PATCH 635/656] update

---
 flake.lock                     | 72 +++++++++++++++++-----------------
 home/common/nvim/blink-cmp.lua |  5 ++-
 home/dln/desktop.nix           |  1 +
 3 files changed, 41 insertions(+), 37 deletions(-)

diff --git a/flake.lock b/flake.lock
index f3bd724..2eaef20 100644
--- a/flake.lock
+++ b/flake.lock
@@ -78,11 +78,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1736143030,
-        "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
+        "lastModified": 1738453229,
+        "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
+        "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
         "type": "github"
       },
       "original": {
@@ -118,11 +118,11 @@
         "zig2nix": "zig2nix"
       },
       "locked": {
-        "lastModified": 1739473144,
-        "narHash": "sha256-9+8b8DNzClO8A6mxY4wu9xsBLoXGOM+5JIXfusb+QrY=",
+        "lastModified": 1739918167,
+        "narHash": "sha256-6zdYjNKqMTKfHKlaz0kKqqSmoSCqEjv1vyIygqi3wCo=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "c481bdf70461a8a4660678a819a69ac4f4934ac2",
+        "rev": "38908e01268298ced33b7b6835e49b8c6d437e12",
         "type": "github"
       },
       "original": {
@@ -185,11 +185,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738237977,
-        "narHash": "sha256-oJN/yvRL7G0WlR/hTkQIjFbPkzCV+sFnNB/38Tb9RL4=",
+        "lastModified": 1739595404,
+        "narHash": "sha256-0CjCfbq0yHWexOrpO06e2WU1r5JAqR6ffy1zgM3NksI=",
         "owner": "hercules-ci",
         "repo": "hercules-ci-effects",
-        "rev": "6d1b6d5d59758b4f5f05745f774fc13cdc59da43",
+        "rev": "06519cec8fb32d219006da6eacd255504a9996af",
         "type": "github"
       },
       "original": {
@@ -205,11 +205,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739470101,
-        "narHash": "sha256-NxNe32VB4XI/xIXrsKmIfrcgtEx5r/5s52pL3CpEcA4=",
+        "lastModified": 1739992710,
+        "narHash": "sha256-9kEscmGnXHjSgcqyJR4TzzHhska4yz1inSQs6HuO9qU=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "5031c6d2978109336637977c165f82aa49fa16a7",
+        "rev": "1c189f011447810af939a886ba7bee33532bb1f9",
         "type": "github"
       },
       "original": {
@@ -229,11 +229,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1739405231,
-        "narHash": "sha256-Cdd+pLWebuEld9BZ0kmbBjZ2HftudKcv2A6oK5htO1E=",
+        "lastModified": 1740034565,
+        "narHash": "sha256-fuTCAi//E0WVGNjLk+9juJMfVmCMZXy66hOpXAbZX90=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "c689a1c053b079dc95231ab4d800e7d3cf13c0ce",
+        "rev": "a56e9f2bfce06729a418081fda1dfa1c0dd18f81",
         "type": "github"
       },
       "original": {
@@ -245,11 +245,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1739378622,
-        "narHash": "sha256-nJJYoMft/JxPwHvIW3mv/SVHlGBEsCeE7rnSJJsKBII=",
+        "lastModified": 1739988796,
+        "narHash": "sha256-oldU5hcEGlMLknn/q0NFFnAUWfPYeJHRTlJtrLjpQQg=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "8117db48ed5939dcb93e84f6e740c1b46317dd31",
+        "rev": "b0bbe25c4808158e8c806959e4d185244073647a",
         "type": "github"
       },
       "original": {
@@ -265,11 +265,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739071773,
-        "narHash": "sha256-/Ak+Quinhmdxa9m3shjm4lwwwqmzG8zzGhhhhgR1k9I=",
+        "lastModified": 1739676768,
+        "narHash": "sha256-U1HQ7nzhJyVVXUgjU028UCkbLQLEIkg42+G7iIiBmlU=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "895d81b6228bbd50a6ef22f5a58a504ca99763ea",
+        "rev": "ae15068e79e22b76c344f0d7f8aed1bb1c5b0b63",
         "type": "github"
       },
       "original": {
@@ -280,11 +280,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1739138025,
-        "narHash": "sha256-M4ilIfGxzbBZuURokv24aqJTbdjPA9K+DtKUzrJaES4=",
+        "lastModified": 1739863612,
+        "narHash": "sha256-UbtgxplOhFcyjBcNbTVO8+HUHAl/WXFDOb6LvqShiZo=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "b2243f41e860ac85c0b446eadc6930359b294e79",
+        "rev": "632f04521e847173c54fa72973ec6c39a371211c",
         "type": "github"
       },
       "original": {
@@ -312,11 +312,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1739357830,
-        "narHash": "sha256-9xim3nJJUFbVbJCz48UP4fGRStVW5nv4VdbimbKxJ3I=",
+        "lastModified": 1739923778,
+        "narHash": "sha256-BqUY8tz0AQ4to2Z4+uaKczh81zsGZSYxjgvtw+fvIfM=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "0ff09db9d034a04acd4e8908820ba0b410d7a33a",
+        "rev": "36864ed72f234b9540da4cf7a0c49e351d30d3f1",
         "type": "github"
       },
       "original": {
@@ -344,11 +344,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1739419412,
-        "narHash": "sha256-NCWZQg4DbYVFWg+MOFrxWRaVsLA7yvRWAf6o0xPR1hI=",
+        "lastModified": 1739863612,
+        "narHash": "sha256-UbtgxplOhFcyjBcNbTVO8+HUHAl/WXFDOb6LvqShiZo=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "2d55b4c1531187926c2a423f6940b3b1301399b5",
+        "rev": "632f04521e847173c54fa72973ec6c39a371211c",
         "type": "github"
       },
       "original": {
@@ -360,11 +360,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1739214665,
-        "narHash": "sha256-26L8VAu3/1YRxS8MHgBOyOM8xALdo6N0I04PgorE7UM=",
+        "lastModified": 1739866667,
+        "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "64e75cd44acf21c7933d61d7721e812eac1b5a0a",
+        "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680",
         "type": "github"
       },
       "original": {
@@ -408,11 +408,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738953846,
-        "narHash": "sha256-yrK3Hjcr8F7qS/j2F+r7C7o010eVWWlm4T1PrbKBOxQ=",
+        "lastModified": 1739829690,
+        "narHash": "sha256-mL1szCeIsjh6Khn3nH2cYtwO5YXG6gBiTw1A30iGeDU=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "4f09b473c936d41582dd744e19f34ec27592c5fd",
+        "rev": "3d0579f5cc93436052d94b73925b48973a104204",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/blink-cmp.lua b/home/common/nvim/blink-cmp.lua
index 113fda6..ea0124d 100644
--- a/home/common/nvim/blink-cmp.lua
+++ b/home/common/nvim/blink-cmp.lua
@@ -60,12 +60,15 @@ require 'blink-cmp'.setup({
     window = { border = 'rounded', },
   },
 
+  cmdline = {
+    sources = {},
+  },
+
   sources = {
     default = {
       'lsp',
       'emoji',
     },
-    cmdline = {},
     providers = {
       emoji = {
         module = "blink-emoji",
diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index a168ac2..80ac9ac 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -8,6 +8,7 @@
     cameractrls-gtk4
     dynamic-wallpaper
     gimp
+    gimpPlugins.bimp
     inkscape
     moonlight-qt
     obsidian

From 0441301e12b9b84d53fd38bc6e613e6da2415e6d Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 24 Feb 2025 10:09:12 +0100
Subject: [PATCH 636/656] Add wezterm

---
 flake.lock              | 74 ++++++++++++++++++++---------------------
 home/common/default.nix |  1 +
 home/common/wezterm.nix | 72 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 110 insertions(+), 37 deletions(-)
 create mode 100644 home/common/wezterm.nix

diff --git a/flake.lock b/flake.lock
index 2eaef20..ea297bf 100644
--- a/flake.lock
+++ b/flake.lock
@@ -56,11 +56,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738453229,
-        "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
+        "lastModified": 1740872218,
+        "narHash": "sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
+        "rev": "3876f6b87db82f33775b1ef5ea343986105db764",
         "type": "github"
       },
       "original": {
@@ -118,11 +118,11 @@
         "zig2nix": "zig2nix"
       },
       "locked": {
-        "lastModified": 1739918167,
-        "narHash": "sha256-6zdYjNKqMTKfHKlaz0kKqqSmoSCqEjv1vyIygqi3wCo=",
+        "lastModified": 1741376783,
+        "narHash": "sha256-vXlLil+0Cz6hznEX2GpwDlb8TM+Q8Cz0gLTebUhPtvE=",
         "owner": "ghostty-org",
         "repo": "ghostty",
-        "rev": "38908e01268298ced33b7b6835e49b8c6d437e12",
+        "rev": "4a215a9518c277780babe5d00e24784f456c80dd",
         "type": "github"
       },
       "original": {
@@ -141,11 +141,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1737465171,
-        "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
+        "lastModified": 1740915799,
+        "narHash": "sha256-JvQvtaphZNmeeV+IpHgNdiNePsIpHD5U/7QN5AeY44A=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
+        "rev": "42b1ba089d2034d910566bf6b40830af6b8ec732",
         "type": "github"
       },
       "original": {
@@ -205,11 +205,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739992710,
-        "narHash": "sha256-9kEscmGnXHjSgcqyJR4TzzHhska4yz1inSQs6HuO9qU=",
+        "lastModified": 1741378606,
+        "narHash": "sha256-ytDmwV93lZ1f6jswJkxEQz5cBlwje/2rH/yUZDADZNs=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "1c189f011447810af939a886ba7bee33532bb1f9",
+        "rev": "95711f926676018d279ba09fe7530d03b5d5b3e2",
         "type": "github"
       },
       "original": {
@@ -229,11 +229,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1740034565,
-        "narHash": "sha256-fuTCAi//E0WVGNjLk+9juJMfVmCMZXy66hOpXAbZX90=",
+        "lastModified": 1741306000,
+        "narHash": "sha256-qaDw0TyUceZBLntPBOdd1642T/mBGMNtK5NBuv2gWiY=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "a56e9f2bfce06729a418081fda1dfa1c0dd18f81",
+        "rev": "c1855b306b8eeb70118b3ba70471188a65e694e7",
         "type": "github"
       },
       "original": {
@@ -245,11 +245,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1739988796,
-        "narHash": "sha256-oldU5hcEGlMLknn/q0NFFnAUWfPYeJHRTlJtrLjpQQg=",
+        "lastModified": 1741302428,
+        "narHash": "sha256-zcgucpL/rgEC/IIii6R4NvmtJsYT+/F0ub1FQOWVv0Q=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "b0bbe25c4808158e8c806959e4d185244073647a",
+        "rev": "e46f07b1d2942c7b5c08fca9a4cac735ee2c0c71",
         "type": "github"
       },
       "original": {
@@ -265,11 +265,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739676768,
-        "narHash": "sha256-U1HQ7nzhJyVVXUgjU028UCkbLQLEIkg42+G7iIiBmlU=",
+        "lastModified": 1740886574,
+        "narHash": "sha256-jN6kJ41B6jUVDTebIWeebTvrKP6YiLd1/wMej4uq4Sk=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "ae15068e79e22b76c344f0d7f8aed1bb1c5b0b63",
+        "rev": "26a0f969549cf4d56f6e9046b9e0418b3f3b94a5",
         "type": "github"
       },
       "original": {
@@ -280,11 +280,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1739863612,
-        "narHash": "sha256-UbtgxplOhFcyjBcNbTVO8+HUHAl/WXFDOb6LvqShiZo=",
+        "lastModified": 1741037377,
+        "narHash": "sha256-SvtvVKHaUX4Owb+PasySwZsoc5VUeTf1px34BByiOxw=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "632f04521e847173c54fa72973ec6c39a371211c",
+        "rev": "02032da4af073d0f6110540c8677f16d4be0117f",
         "type": "github"
       },
       "original": {
@@ -312,11 +312,11 @@
     },
     "nixpkgs-stable_2": {
       "locked": {
-        "lastModified": 1739923778,
-        "narHash": "sha256-BqUY8tz0AQ4to2Z4+uaKczh81zsGZSYxjgvtw+fvIfM=",
+        "lastModified": 1741332913,
+        "narHash": "sha256-ri1e8ZliWS3Jnp9yqpKApHaOo7KBN33W8ECAKA4teAQ=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "36864ed72f234b9540da4cf7a0c49e351d30d3f1",
+        "rev": "20755fa05115c84be00b04690630cb38f0a203ad",
         "type": "github"
       },
       "original": {
@@ -344,11 +344,11 @@
     },
     "nixpkgs-unstable_2": {
       "locked": {
-        "lastModified": 1739863612,
-        "narHash": "sha256-UbtgxplOhFcyjBcNbTVO8+HUHAl/WXFDOb6LvqShiZo=",
+        "lastModified": 1741310760,
+        "narHash": "sha256-aizILFrPgq/W53Jw8i0a1h1GZAAKtlYOrG/A5r46gVM=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "632f04521e847173c54fa72973ec6c39a371211c",
+        "rev": "de0fe301211c267807afd11b12613f5511ff7433",
         "type": "github"
       },
       "original": {
@@ -360,11 +360,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1739866667,
-        "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=",
+        "lastModified": 1741246872,
+        "narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680",
+        "rev": "10069ef4cf863633f57238f179a0297de84bd8d3",
         "type": "github"
       },
       "original": {
@@ -461,16 +461,16 @@
         ]
       },
       "locked": {
-        "lastModified": 1738263917,
-        "narHash": "sha256-j/3fwe2pEOquHabP/puljOKwAZFjIE9gXZqA91sC48M=",
+        "lastModified": 1741368279,
+        "narHash": "sha256-WTaC8HmnIq6O71iK0g9as404BbmS+YyEP5qS85m2JBY=",
         "owner": "jcollie",
         "repo": "zig2nix",
-        "rev": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a",
+        "rev": "672971b5b6911de21446ad4fc76dee677922eda0",
         "type": "github"
       },
       "original": {
         "owner": "jcollie",
-        "ref": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a",
+        "ref": "672971b5b6911de21446ad4fc76dee677922eda0",
         "repo": "zig2nix",
         "type": "github"
       }
diff --git a/home/common/default.nix b/home/common/default.nix
index 26df1d8..c5112bd 100644
--- a/home/common/default.nix
+++ b/home/common/default.nix
@@ -16,6 +16,7 @@
     ./utils.nix
     ./vcs.nix
     ./web.nix
+    ./wezterm.nix
   ];
 
   options.patagia.desktop.enable = lib.mkEnableOption "Desktop environment";
diff --git a/home/common/wezterm.nix b/home/common/wezterm.nix
new file mode 100644
index 0000000..121b8ca
--- /dev/null
+++ b/home/common/wezterm.nix
@@ -0,0 +1,72 @@
+{
+  config,
+  lib,
+  ...
+}:
+{
+  config = lib.mkIf config.patagia.desktop.enable {
+    programs.wezterm = {
+      enable = true;
+      colorSchemes = {
+        patagiaLight = {
+          ansi = [
+            "#222222"
+            "#D14949"
+            "#48874F"
+            "#AFA75A"
+            "#599797"
+            "#8F6089"
+            "#5C9FA8"
+            "#8C8C8C"
+          ];
+          brights = [
+            "#444444"
+            "#FF6D6D"
+            "#89FF95"
+            "#FFF484"
+            "#97DDFF"
+            "#FDAAF2"
+            "#85F5DA"
+            "#E9E9E9"
+          ];
+          background = "#fefeff";
+          foreground = "#222222";
+          cursor_bg = "#aa0000";
+          cursor_border = "#aa0000";
+          cursor_fg = "#1B1B1B";
+          selection_bg = "#ffe6a4";
+          selection_fg = "#483600";
+        };
+      };
+
+      extraConfig = ''
+        return {
+          font = wezterm.font("Berkeley Mono", { weight = "Regular", stretch = "Normal" }),
+          font_size = 16,
+          -- freetype_load_target = "HorizontalLcd",
+          freetype_load_target = "Light",
+          -- font_size = 11,
+          -- font_size = 11,
+          -- freetype_load_target = "Normal",
+          freetype_load_flags = "NO_AUTOHINT",
+          color_scheme = "patagiaLight",
+          check_for_updates = false,
+          custom_block_glyphs = false,
+          warn_about_missing_glyphs = false,
+          bold_brightens_ansi_colors = false,
+          unicode_version = 14,
+          allow_square_glyphs_to_overflow_width = "Always",
+          xcursor_theme = "Adwaita",
+          hide_mouse_cursor_when_typing = false,
+          tab_bar_at_bottom = true,
+          use_fancy_tab_bar = false,
+          show_tab_index_in_tab_bar = true,
+          underline_position = -4,
+          underline_thickness = 2,
+          --line_height = 0.95,
+        }
+      '';
+
+    };
+  };
+}

From fcf9b318c44fa0bdd7292b4060f0a48f2ef454b1 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 9 Mar 2025 09:22:29 +0100
Subject: [PATCH 637/656] ghostty: use package from nixpkgs

---
 flake.nix               | 1 -
 home/common/ghostty.nix | 4 +---
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/flake.nix b/flake.nix
index 0eb9df5..0918288 100644
--- a/flake.nix
+++ b/flake.nix
@@ -14,7 +14,6 @@
   };
 
   inputs = {
-    ghostty.url = "github:ghostty-org/ghostty";
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
     nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 50f8cd5..e41df52 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -1,8 +1,6 @@
 {
   config,
-  inputs,
   lib,
-  pkgs,
   ...
 }:
 {
@@ -10,7 +8,7 @@
     programs.ghostty = {
       enable = true;
       enableFishIntegration = true;
-      package = inputs.ghostty.packages.${pkgs.system}.default;
+      # package = inputs.ghostty.packages.${pkgs.system}.default;
       settings = {
         font-size = 11;
         font-family = "Berkeley Mono";

From c1eb392528565e145457c932091c28e0ead7de90 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 9 Mar 2025 09:22:29 +0100
Subject: [PATCH 638/656] jj: signing config

---
 home/dln/home.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/dln/home.nix b/home/dln/home.nix
index f0d23e4..ae8681e 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -53,7 +53,7 @@ in
       };
 
       signing = {
-        sign-all = true;
+        behavior = "own";
         backend = "ssh";
         backends.ssh.allowed-signers = "/home/dln/.ssh/authorized_keys";
         key = "/home/dln/.ssh/git_signing_key.pub";

From 6b334b05e869b6cdd3aec159b253be92dc2d4e6f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 9 Mar 2025 09:22:29 +0100
Subject: [PATCH 639/656] just: Remove boot recipe since it might break the
 system if not rebooted

---
 justfile | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/justfile b/justfile
index 75763bf..ccf14df 100644
--- a/justfile
+++ b/justfile
@@ -4,9 +4,6 @@ set shell := ["/usr/bin/env", "bash", "-euo", "pipefail", "-c"]
 default:
 	@just --list
 
-boot:
-  nh os boot .
-
 build:
   nh os build .
 

From d0240503710bf640c244fad584187bd4d8669d12 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 9 Mar 2025 09:22:29 +0100
Subject: [PATCH 640/656] ghostty: tweaks

---
 flake.lock              | 227 ++++++----------------------------------
 home/common/ghostty.nix |   4 +-
 home/common/gnome.nix   |   1 +
 3 files changed, 38 insertions(+), 194 deletions(-)

diff --git a/flake.lock b/flake.lock
index ea297bf..f1e65c9 100644
--- a/flake.lock
+++ b/flake.lock
@@ -17,22 +17,6 @@
       }
     },
     "flake-compat_2": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1733328505,
-        "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-compat_3": {
       "flake": false,
       "locked": {
         "lastModified": 1696426674,
@@ -56,11 +40,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1740872218,
-        "narHash": "sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo=",
+        "lastModified": 1741352980,
+        "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "3876f6b87db82f33775b1ef5ea343986105db764",
+        "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
         "type": "github"
       },
       "original": {
@@ -90,50 +74,9 @@
         "type": "indirect"
       }
     },
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1731533236,
-        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "ghostty": {
-      "inputs": {
-        "flake-compat": "flake-compat",
-        "flake-utils": "flake-utils",
-        "nixpkgs-stable": "nixpkgs-stable",
-        "nixpkgs-unstable": "nixpkgs-unstable",
-        "zig": "zig",
-        "zig2nix": "zig2nix"
-      },
-      "locked": {
-        "lastModified": 1741376783,
-        "narHash": "sha256-vXlLil+0Cz6hznEX2GpwDlb8TM+Q8Cz0gLTebUhPtvE=",
-        "owner": "ghostty-org",
-        "repo": "ghostty",
-        "rev": "4a215a9518c277780babe5d00e24784f456c80dd",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ghostty-org",
-        "repo": "ghostty",
-        "type": "github"
-      }
-    },
     "git-hooks": {
       "inputs": {
-        "flake-compat": "flake-compat_3",
+        "flake-compat": "flake-compat_2",
         "gitignore": "gitignore",
         "nixpkgs": [
           "neovim-nightly-overlay",
@@ -141,11 +84,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1740915799,
-        "narHash": "sha256-JvQvtaphZNmeeV+IpHgNdiNePsIpHD5U/7QN5AeY44A=",
+        "lastModified": 1741379162,
+        "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "42b1ba089d2034d910566bf6b40830af6b8ec732",
+        "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc",
         "type": "github"
       },
       "original": {
@@ -205,11 +148,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1741378606,
-        "narHash": "sha256-ytDmwV93lZ1f6jswJkxEQz5cBlwje/2rH/yUZDADZNs=",
+        "lastModified": 1741579508,
+        "narHash": "sha256-skRbH+UF2ES+msEa+KWi7AQFX73S+QsGlPsyCU6XyE0=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "95711f926676018d279ba09fe7530d03b5d5b3e2",
+        "rev": "744f749dd6fbc1489591ea370b95156858629cb9",
         "type": "github"
       },
       "original": {
@@ -220,7 +163,7 @@
     },
     "neovim-nightly-overlay": {
       "inputs": {
-        "flake-compat": "flake-compat_2",
+        "flake-compat": "flake-compat",
         "flake-parts": "flake-parts",
         "git-hooks": "git-hooks",
         "hercules-ci-effects": "hercules-ci-effects",
@@ -229,11 +172,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1741306000,
-        "narHash": "sha256-qaDw0TyUceZBLntPBOdd1642T/mBGMNtK5NBuv2gWiY=",
+        "lastModified": 1741565384,
+        "narHash": "sha256-J6i/A2XM0cctEUJH3p0jeDUg1jhzKriPjfkhvEc/THw=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "c1855b306b8eeb70118b3ba70471188a65e694e7",
+        "rev": "7ecc342f01679cf4b275d8353bdcd192dfde4333",
         "type": "github"
       },
       "original": {
@@ -245,11 +188,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1741302428,
-        "narHash": "sha256-zcgucpL/rgEC/IIii6R4NvmtJsYT+/F0ub1FQOWVv0Q=",
+        "lastModified": 1741563807,
+        "narHash": "sha256-KfhHApWCRoqzR3X529be2qeBRa7KY8gXh8C2204J1rE=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "e46f07b1d2942c7b5c08fca9a4cac735ee2c0c71",
+        "rev": "b90f649ca2e240c1bfb22fe91247bc90314af1e1",
         "type": "github"
       },
       "original": {
@@ -265,11 +208,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1740886574,
-        "narHash": "sha256-jN6kJ41B6jUVDTebIWeebTvrKP6YiLd1/wMej4uq4Sk=",
+        "lastModified": 1741490098,
+        "narHash": "sha256-/tjVMbMzxJXrJaEk9N5esnbLebIZrkS1fbDJce/RiQg=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "26a0f969549cf4d56f6e9046b9e0418b3f3b94a5",
+        "rev": "296a2c992a28b37427d062ade6e20d467e479e3f",
         "type": "github"
       },
       "original": {
@@ -280,11 +223,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1741037377,
-        "narHash": "sha256-SvtvVKHaUX4Owb+PasySwZsoc5VUeTf1px34BByiOxw=",
+        "lastModified": 1741402956,
+        "narHash": "sha256-y2hByvBM03s9T2fpeLjW6iprbxnhV9mJMmSwCHc41ZQ=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "02032da4af073d0f6110540c8677f16d4be0117f",
+        "rev": "ed0b1881565c1ffef490c10d663d4f542031dad3",
         "type": "github"
       },
       "original": {
@@ -296,27 +239,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1738255539,
-        "narHash": "sha256-hP2eOqhIO/OILW+3moNWO4GtdJFYCqAe9yJZgvlCoDQ=",
+        "lastModified": 1741445498,
+        "narHash": "sha256-F5Em0iv/CxkN5mZ9hRn3vPknpoWdcdCyR0e4WklHwiE=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "c3511a3b53b482aa7547c9d1626fd7310c1de1c5",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "release-24.11",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs-stable_2": {
-      "locked": {
-        "lastModified": 1741332913,
-        "narHash": "sha256-ri1e8ZliWS3Jnp9yqpKApHaOo7KBN33W8ECAKA4teAQ=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "20755fa05115c84be00b04690630cb38f0a203ad",
+        "rev": "52e3095f6d812b91b22fb7ad0bfc1ab416453634",
         "type": "github"
       },
       "original": {
@@ -328,27 +255,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1738136902,
-        "narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=",
+        "lastModified": 1741402956,
+        "narHash": "sha256-y2hByvBM03s9T2fpeLjW6iprbxnhV9mJMmSwCHc41ZQ=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs-unstable_2": {
-      "locked": {
-        "lastModified": 1741310760,
-        "narHash": "sha256-aizILFrPgq/W53Jw8i0a1h1GZAAKtlYOrG/A5r46gVM=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "de0fe301211c267807afd11b12613f5511ff7433",
+        "rev": "ed0b1881565c1ffef490c10d663d4f542031dad3",
         "type": "github"
       },
       "original": {
@@ -360,11 +271,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1741246872,
-        "narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=",
+        "lastModified": 1741379970,
+        "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "10069ef4cf863633f57238f179a0297de84bd8d3",
+        "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f",
         "type": "github"
       },
       "original": {
@@ -376,28 +287,12 @@
     },
     "root": {
       "inputs": {
-        "ghostty": "ghostty",
         "home-manager": "home-manager",
         "neovim-nightly-overlay": "neovim-nightly-overlay",
         "nix-index-database": "nix-index-database",
         "nixpkgs": "nixpkgs_2",
-        "nixpkgs-stable": "nixpkgs-stable_2",
-        "nixpkgs-unstable": "nixpkgs-unstable_2"
-      }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
+        "nixpkgs-stable": "nixpkgs-stable",
+        "nixpkgs-unstable": "nixpkgs-unstable"
       }
     },
     "treefmt-nix": {
@@ -420,60 +315,6 @@
         "repo": "treefmt-nix",
         "type": "github"
       }
-    },
-    "zig": {
-      "inputs": {
-        "flake-compat": [
-          "ghostty"
-        ],
-        "flake-utils": [
-          "ghostty",
-          "flake-utils"
-        ],
-        "nixpkgs": [
-          "ghostty",
-          "nixpkgs-stable"
-        ]
-      },
-      "locked": {
-        "lastModified": 1738239110,
-        "narHash": "sha256-Y5i9mQ++dyIQr+zEPNy+KIbc5wjPmfllBrag3cHZgcE=",
-        "owner": "mitchellh",
-        "repo": "zig-overlay",
-        "rev": "1a8fb6f3a04724519436355564b95fce5e272504",
-        "type": "github"
-      },
-      "original": {
-        "owner": "mitchellh",
-        "repo": "zig-overlay",
-        "type": "github"
-      }
-    },
-    "zig2nix": {
-      "inputs": {
-        "flake-utils": [
-          "ghostty",
-          "flake-utils"
-        ],
-        "nixpkgs": [
-          "ghostty",
-          "nixpkgs-stable"
-        ]
-      },
-      "locked": {
-        "lastModified": 1741368279,
-        "narHash": "sha256-WTaC8HmnIq6O71iK0g9as404BbmS+YyEP5qS85m2JBY=",
-        "owner": "jcollie",
-        "repo": "zig2nix",
-        "rev": "672971b5b6911de21446ad4fc76dee677922eda0",
-        "type": "github"
-      },
-      "original": {
-        "owner": "jcollie",
-        "ref": "672971b5b6911de21446ad4fc76dee677922eda0",
-        "repo": "zig2nix",
-        "type": "github"
-      }
     }
   },
   "root": "root",
diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index e41df52..25765b6 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -8,7 +8,6 @@
     programs.ghostty = {
       enable = true;
       enableFishIntegration = true;
-      # package = inputs.ghostty.packages.${pkgs.system}.default;
       settings = {
         font-size = 11;
         font-family = "Berkeley Mono";
@@ -35,6 +34,8 @@
         gtk-tabs-location = "hidden";
         gtk-titlebar = false;
         gtk-titlebar-hide-when-maximized = true;
+        window-height = 60;
+        window-width = 160;
         window-padding-balance = true;
         window-padding-color = "extend";
         window-theme = "system";
@@ -46,6 +47,7 @@
           "ctrl+i=text:\\x09"
           "ctrl+m=text:\\x0D"
           "ctrl+tab=goto_split:previous"
+          "alt+`=goto_split:previous"
           "ctrl+[=text:\\x1B"
           "super+enter=toggle_fullscreen"
         ];
diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index 0c07521..d92b7ac 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -26,6 +26,7 @@ with lib.hm.gvariant;
         minimize = [ "<Super>comma" ];
         move-to-center = [ "<Super>c" ];
         switch-applications = [ "<Super>Tab" ];
+        switch-group = [ "<Super>Above_Tab" ];
         switch-windows = [ "<Alt>Tab" ];
         move-to-workspace-1 = [ "<Shift>F1" ];
         move-to-workspace-2 = [ "<Shift>F2" ];

From 45054efd167da476a294b84a025dad70cd57f81f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 12 Mar 2025 14:41:25 +0100
Subject: [PATCH 641/656] nvim: statusline

---
 home/common/nvim/dieter/lua/dieter/init.lua | 1 +
 home/common/nvim/init.lua                   | 3 +--
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 2d6c96a..0f69917 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -126,6 +126,7 @@ local setupGroups = function(c)
     Type = { link = "NormalNC" },
 
     MsgArea = { fg = c.dimmed_subtle },
+    StatusLine = { fg = c.dimmed, bg = c.dimmed_subtle },
 
     String = { fg = c.string },
 
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 0b30e4f..3d80450 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -8,7 +8,6 @@ vim.g.maplocalleader = ","
 vim.opt.cursorline = false
 vim.opt.guicursor =
 "n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175"
-vim.opt.laststatus = 0
 vim.opt.number = false
 vim.opt.relativenumber = false
 vim.opt.ruler = true
@@ -44,7 +43,7 @@ function CondensedPath()
   return vim.fn.pathshorten(early_path) .. '/' .. late_path
 end
 
-vim.opt.rulerformat = "%50(%=%{%v:lua.GetIndicators()%}%#MsgArea#%{%v:lua.CondensedPath()%}%)%7(%l:%c%)"
+vim.opt.statusline = "%{%v:lua.CondensedPath()%}%=%{%v:lua.GetIndicators()%}%7(%l:%c%)"
 
 -- Search
 vim.opt.ignorecase = true

From d0e5de27953bea580e2d920376d457844020e778 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 12 Mar 2025 15:03:21 +0100
Subject: [PATCH 642/656] gnome: Add night-light-slider extension

---
 home/common/gnome.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/common/gnome.nix b/home/common/gnome.nix
index d92b7ac..c2e64a7 100644
--- a/home/common/gnome.nix
+++ b/home/common/gnome.nix
@@ -15,6 +15,7 @@ with lib.hm.gvariant;
       gnomeExtensions.desktop-clock
       gnomeExtensions.emoji-copy
       gnomeExtensions.just-perfection
+      gnomeExtensions.night-light-slider
     ];
 
     dconf.settings = {

From e65cdf5e23d46f10cf31aa3400699df1867cd8e6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 12 Mar 2025 15:03:21 +0100
Subject: [PATCH 643/656] ghostty: color

---
 home/common/ghostty.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index 25765b6..f9f52d7 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -26,8 +26,8 @@
         adjust-underline-thickness = -1;
 
         mouse-hide-while-typing = true;
-        unfocused-split-opacity = 0.85;
-        unfocused-split-fill = "#14151a";
+        unfocused-split-opacity = 0.8;
+        unfocused-split-fill = "#056157";
 
         shell-integration = "fish";
 

From 996edfcce45397fae89bf0982371e8338d9cd1d8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 12 Mar 2025 15:03:21 +0100
Subject: [PATCH 644/656] nemo: enable cups

---
 hosts/nemo/default.nix | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/hosts/nemo/default.nix b/hosts/nemo/default.nix
index a20e460..7f7c70c 100644
--- a/hosts/nemo/default.nix
+++ b/hosts/nemo/default.nix
@@ -235,5 +235,8 @@
     "nixremote"
   ];
 
+  services.printing.enable = lib.mkForce true;
+  services.printing.drivers = [ pkgs.brlaser ];
+
   system.stateVersion = "24.11"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
 }

From c2d855850aed8110167d2e7618d3fa0767f9dffe Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 12 Mar 2025 15:03:21 +0100
Subject: [PATCH 645/656] desktop: add libreoffice

---
 home/dln/desktop.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index 80ac9ac..78177b4 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -10,6 +10,7 @@
     gimp
     gimpPlugins.bimp
     inkscape
+    libreoffice
     moonlight-qt
     obsidian
     pavucontrol

From 58ea91fac9a9f9b4a70a944585ec24773d2eaaa8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Wed, 12 Mar 2025 15:03:21 +0100
Subject: [PATCH 646/656] nvim: add <Space>ud to toggle virtual diagnostic
 lines

---
 flake.lock                | 72 +++++++++++++++++++--------------------
 home/common/nvim/init.lua | 10 +++++-
 2 files changed, 45 insertions(+), 37 deletions(-)

diff --git a/flake.lock b/flake.lock
index f1e65c9..2f375d2 100644
--- a/flake.lock
+++ b/flake.lock
@@ -62,11 +62,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1738453229,
-        "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
+        "lastModified": 1741352980,
+        "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
+        "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
         "type": "github"
       },
       "original": {
@@ -84,11 +84,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1741379162,
-        "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=",
+        "lastModified": 1742649964,
+        "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc",
+        "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
         "type": "github"
       },
       "original": {
@@ -128,11 +128,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739595404,
-        "narHash": "sha256-0CjCfbq0yHWexOrpO06e2WU1r5JAqR6ffy1zgM3NksI=",
+        "lastModified": 1742014779,
+        "narHash": "sha256-I6fG1zrfdLFcp/imGZElig0BJO3YU0QEXLgvwWoOpJ8=",
         "owner": "hercules-ci",
         "repo": "hercules-ci-effects",
-        "rev": "06519cec8fb32d219006da6eacd255504a9996af",
+        "rev": "524637ef84c177661690b924bf64a1ce18072a2c",
         "type": "github"
       },
       "original": {
@@ -148,11 +148,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1741579508,
-        "narHash": "sha256-skRbH+UF2ES+msEa+KWi7AQFX73S+QsGlPsyCU6XyE0=",
+        "lastModified": 1743360001,
+        "narHash": "sha256-HtpS/ZdgWXw0y+aFdORcX5RuBGTyz3WskThspNR70SM=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "744f749dd6fbc1489591ea370b95156858629cb9",
+        "rev": "b6fd653ef8fbeccfd4958650757e91767a65506d",
         "type": "github"
       },
       "original": {
@@ -172,11 +172,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1741565384,
-        "narHash": "sha256-J6i/A2XM0cctEUJH3p0jeDUg1jhzKriPjfkhvEc/THw=",
+        "lastModified": 1743398899,
+        "narHash": "sha256-gJeoWpWv14MnLoiERpVhHWSDzujvg9UM2BvR7BZe6AI=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "7ecc342f01679cf4b275d8353bdcd192dfde4333",
+        "rev": "4be99133c03920579de8c3fe7c05ff1de60a7fbe",
         "type": "github"
       },
       "original": {
@@ -188,11 +188,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1741563807,
-        "narHash": "sha256-KfhHApWCRoqzR3X529be2qeBRa7KY8gXh8C2204J1rE=",
+        "lastModified": 1743368881,
+        "narHash": "sha256-CRORP8EaJ/Ajdx6WbUSjt9X4zNToyDLkzWz6VIthsaA=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "b90f649ca2e240c1bfb22fe91247bc90314af1e1",
+        "rev": "ee143aaf65a0e662c42c636aa4a959682858b3e7",
         "type": "github"
       },
       "original": {
@@ -208,11 +208,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1741490098,
-        "narHash": "sha256-/tjVMbMzxJXrJaEk9N5esnbLebIZrkS1fbDJce/RiQg=",
+        "lastModified": 1743306489,
+        "narHash": "sha256-LROaIjSLo347cwcHRfSpqzEOa2FoLSeJwU4dOrGm55E=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "296a2c992a28b37427d062ade6e20d467e479e3f",
+        "rev": "b3696bfb6c24aa61428839a99e8b40c53ac3a82d",
         "type": "github"
       },
       "original": {
@@ -223,11 +223,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1741402956,
-        "narHash": "sha256-y2hByvBM03s9T2fpeLjW6iprbxnhV9mJMmSwCHc41ZQ=",
+        "lastModified": 1743259260,
+        "narHash": "sha256-ArWLUgRm1tKHiqlhnymyVqi5kLNCK5ghvm06mfCl4QY=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "ed0b1881565c1ffef490c10d663d4f542031dad3",
+        "rev": "eb0e0f21f15c559d2ac7633dc81d079d1caf5f5f",
         "type": "github"
       },
       "original": {
@@ -239,11 +239,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1741445498,
-        "narHash": "sha256-F5Em0iv/CxkN5mZ9hRn3vPknpoWdcdCyR0e4WklHwiE=",
+        "lastModified": 1743231893,
+        "narHash": "sha256-tpJsHMUPEhEnzySoQxx7+kA+KUtgWqvlcUBqROYNNt0=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "52e3095f6d812b91b22fb7ad0bfc1ab416453634",
+        "rev": "c570c1f5304493cafe133b8d843c7c1c4a10d3a6",
         "type": "github"
       },
       "original": {
@@ -255,11 +255,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1741402956,
-        "narHash": "sha256-y2hByvBM03s9T2fpeLjW6iprbxnhV9mJMmSwCHc41ZQ=",
+        "lastModified": 1743259260,
+        "narHash": "sha256-ArWLUgRm1tKHiqlhnymyVqi5kLNCK5ghvm06mfCl4QY=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "ed0b1881565c1ffef490c10d663d4f542031dad3",
+        "rev": "eb0e0f21f15c559d2ac7633dc81d079d1caf5f5f",
         "type": "github"
       },
       "original": {
@@ -271,11 +271,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1741379970,
-        "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=",
+        "lastModified": 1743315132,
+        "narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f",
+        "rev": "52faf482a3889b7619003c0daec593a1912fddc1",
         "type": "github"
       },
       "original": {
@@ -303,11 +303,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1739829690,
-        "narHash": "sha256-mL1szCeIsjh6Khn3nH2cYtwO5YXG6gBiTw1A30iGeDU=",
+        "lastModified": 1743081648,
+        "narHash": "sha256-WRAylyYptt6OX5eCEBWyTwOEqEtD6zt33rlUkr6u3cE=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "3d0579f5cc93436052d94b73925b48973a104204",
+        "rev": "29a3d7b768c70addce17af0869f6e2bd8f5be4b7",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 3d80450..cae84e0 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -114,8 +114,16 @@ vim.diagnostic.config {
       [vim.diagnostic.severity.HINT] = "",
     },
   },
-  virtual_lines = true,
+  virtual_lines = { current_line = true },
 }
+vim.keymap.set('n', '<Space>ud', function()
+  if vim.diagnostic.config().virtual_lines == true then
+    vim.diagnostic.config({ virtual_lines = { current_line = true } })
+  else
+    vim.diagnostic.config({ virtual_lines = true })
+  end
+end, { desc = 'Toggle diagnostic virtual_lines' })
+
 
 -- Make <Tab> work for snippets
 vim.keymap.set({ "i", "s" }, "<Tab>", function()

From 87a97f822add4ef67c032b863dab3bd5958760a6 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 1 Apr 2025 11:34:54 +0200
Subject: [PATCH 647/656] nix: update

---
 flake.lock | 60 +++++++++++++++++++++++++++---------------------------
 1 file changed, 30 insertions(+), 30 deletions(-)

diff --git a/flake.lock b/flake.lock
index 2f375d2..85c2258 100644
--- a/flake.lock
+++ b/flake.lock
@@ -40,11 +40,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1741352980,
-        "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
+        "lastModified": 1743550720,
+        "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
+        "rev": "c621e8422220273271f52058f618c94e405bb0f5",
         "type": "github"
       },
       "original": {
@@ -148,11 +148,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743360001,
-        "narHash": "sha256-HtpS/ZdgWXw0y+aFdORcX5RuBGTyz3WskThspNR70SM=",
+        "lastModified": 1744008831,
+        "narHash": "sha256-g3mHJLB8ShKuMaBBZxiGuoftJ22f7Boegiw5xBUnS8E=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "b6fd653ef8fbeccfd4958650757e91767a65506d",
+        "rev": "f463902a3f03e15af658e48bcc60b39188ddf734",
         "type": "github"
       },
       "original": {
@@ -172,11 +172,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1743398899,
-        "narHash": "sha256-gJeoWpWv14MnLoiERpVhHWSDzujvg9UM2BvR7BZe6AI=",
+        "lastModified": 1744003175,
+        "narHash": "sha256-b0b/qxiqf2G2/UrmcyP9aYr0Ni5NpdCY6GEF8KgnmCU=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "4be99133c03920579de8c3fe7c05ff1de60a7fbe",
+        "rev": "f7f5a474c38e3e41827b067f741e12ecbbe5cf18",
         "type": "github"
       },
       "original": {
@@ -188,11 +188,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1743368881,
-        "narHash": "sha256-CRORP8EaJ/Ajdx6WbUSjt9X4zNToyDLkzWz6VIthsaA=",
+        "lastModified": 1743931206,
+        "narHash": "sha256-Dl6kHmsN6AZBWEgEbQGpKYy+qvg+oPbBrK/CFQsWmZM=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "ee143aaf65a0e662c42c636aa4a959682858b3e7",
+        "rev": "2d11b981bfbb7816d88a69b43b758f3a3f515b96",
         "type": "github"
       },
       "original": {
@@ -208,11 +208,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743306489,
-        "narHash": "sha256-LROaIjSLo347cwcHRfSpqzEOa2FoLSeJwU4dOrGm55E=",
+        "lastModified": 1743911143,
+        "narHash": "sha256-4j4JPwr0TXHH4ZyorXN5yIcmqIQr0WYacsuPA4ktONo=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "b3696bfb6c24aa61428839a99e8b40c53ac3a82d",
+        "rev": "a36f6a7148aec2c77d78e4466215cceb2f5f4bfb",
         "type": "github"
       },
       "original": {
@@ -223,11 +223,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1743259260,
-        "narHash": "sha256-ArWLUgRm1tKHiqlhnymyVqi5kLNCK5ghvm06mfCl4QY=",
+        "lastModified": 1743814133,
+        "narHash": "sha256-drDyYyUmjeYGiHmwB9eOPTQRjmrq3Yz26knwmMPLZFk=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "eb0e0f21f15c559d2ac7633dc81d079d1caf5f5f",
+        "rev": "250b695f41e0e2f5afbf15c6b12480de1fe0001b",
         "type": "github"
       },
       "original": {
@@ -239,11 +239,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1743231893,
-        "narHash": "sha256-tpJsHMUPEhEnzySoQxx7+kA+KUtgWqvlcUBqROYNNt0=",
+        "lastModified": 1743813633,
+        "narHash": "sha256-BgkBz4NpV6Kg8XF7cmHDHRVGZYnKbvG0Y4p+jElwxaM=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "c570c1f5304493cafe133b8d843c7c1c4a10d3a6",
+        "rev": "7819a0d29d1dd2bc331bec4b327f0776359b1fa6",
         "type": "github"
       },
       "original": {
@@ -255,11 +255,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1743259260,
-        "narHash": "sha256-ArWLUgRm1tKHiqlhnymyVqi5kLNCK5ghvm06mfCl4QY=",
+        "lastModified": 1743938762,
+        "narHash": "sha256-UgFYn8sGv9B8PoFpUfCa43CjMZBl1x/ShQhRDHBFQdI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "eb0e0f21f15c559d2ac7633dc81d079d1caf5f5f",
+        "rev": "74a40410369a1c35ee09b8a1abee6f4acbedc059",
         "type": "github"
       },
       "original": {
@@ -271,11 +271,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1743315132,
-        "narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=",
+        "lastModified": 1743827369,
+        "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "52faf482a3889b7619003c0daec593a1912fddc1",
+        "rev": "42a1c966be226125b48c384171c44c651c236c22",
         "type": "github"
       },
       "original": {
@@ -303,11 +303,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743081648,
-        "narHash": "sha256-WRAylyYptt6OX5eCEBWyTwOEqEtD6zt33rlUkr6u3cE=",
+        "lastModified": 1743748085,
+        "narHash": "sha256-uhjnlaVTWo5iD3LXics1rp9gaKgDRQj6660+gbUU3cE=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "29a3d7b768c70addce17af0869f6e2bd8f5be4b7",
+        "rev": "815e4121d6a5d504c0f96e5be2dd7f871e4fd99d",
         "type": "github"
       },
       "original": {

From 98006874b86dca3e69e167de58d7474add82e685 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 7 Apr 2025 16:05:06 +0200
Subject: [PATCH 648/656] nvim: Nicer diagnostics

---
 flake.lock                | 42 +++++++++++++++++++--------------------
 home/common/nvim/init.lua | 15 ++++++++++----
 home/dln/desktop.nix      |  1 +
 3 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/flake.lock b/flake.lock
index 85c2258..b07d989 100644
--- a/flake.lock
+++ b/flake.lock
@@ -148,11 +148,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744008831,
-        "narHash": "sha256-g3mHJLB8ShKuMaBBZxiGuoftJ22f7Boegiw5xBUnS8E=",
+        "lastModified": 1744400600,
+        "narHash": "sha256-qYhUgA98mhq1QK13r9qVY+sG1ri6FBgyp+GApX6wS20=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "f463902a3f03e15af658e48bcc60b39188ddf734",
+        "rev": "b74b22bb6167e8dff083ec6988c98798bf8954d3",
         "type": "github"
       },
       "original": {
@@ -172,11 +172,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1744003175,
-        "narHash": "sha256-b0b/qxiqf2G2/UrmcyP9aYr0Ni5NpdCY6GEF8KgnmCU=",
+        "lastModified": 1744447706,
+        "narHash": "sha256-8bkAMTy5A6IEEBrr8fGyBrpRNvHMBttsjmTS3IHO/3w=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "f7f5a474c38e3e41827b067f741e12ecbbe5cf18",
+        "rev": "8479d0e1c0b9274c25001432169c0056633bf63a",
         "type": "github"
       },
       "original": {
@@ -188,11 +188,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1743931206,
-        "narHash": "sha256-Dl6kHmsN6AZBWEgEbQGpKYy+qvg+oPbBrK/CFQsWmZM=",
+        "lastModified": 1744372015,
+        "narHash": "sha256-Aith8tgE4jRYDpFa9JqPsA4beTimLmqgwl6PLNlJHyU=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "2d11b981bfbb7816d88a69b43b758f3a3f515b96",
+        "rev": "4a706a70928231643e1a3f3fcf785de7aa930f8b",
         "type": "github"
       },
       "original": {
@@ -223,11 +223,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1743814133,
-        "narHash": "sha256-drDyYyUmjeYGiHmwB9eOPTQRjmrq3Yz26knwmMPLZFk=",
+        "lastModified": 1744316434,
+        "narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "250b695f41e0e2f5afbf15c6b12480de1fe0001b",
+        "rev": "d19cf9dfc633816a437204555afeb9e722386b76",
         "type": "github"
       },
       "original": {
@@ -239,11 +239,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1743813633,
-        "narHash": "sha256-BgkBz4NpV6Kg8XF7cmHDHRVGZYnKbvG0Y4p+jElwxaM=",
+        "lastModified": 1744309437,
+        "narHash": "sha256-QZnNHM823am8apCqKSPdtnzPGTy2ZB4zIXOVoBp5+W0=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "7819a0d29d1dd2bc331bec4b327f0776359b1fa6",
+        "rev": "f9ebe33a928b5d529c895202263a5ce46bdf12f7",
         "type": "github"
       },
       "original": {
@@ -255,11 +255,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1743938762,
-        "narHash": "sha256-UgFYn8sGv9B8PoFpUfCa43CjMZBl1x/ShQhRDHBFQdI=",
+        "lastModified": 1744347518,
+        "narHash": "sha256-4Y0ByuP4NEz2Zyso9Ozob8yR6kKuaunJ5OARv+tFLPI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "74a40410369a1c35ee09b8a1abee6f4acbedc059",
+        "rev": "642c54c23609fefb5708b0e2be261446c59138f6",
         "type": "github"
       },
       "original": {
@@ -271,11 +271,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1743827369,
-        "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=",
+        "lastModified": 1744232761,
+        "narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "42a1c966be226125b48c384171c44c651c236c22",
+        "rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index cae84e0..2e21cbf 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -93,6 +93,7 @@ vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" }
 
 -- Diagnostics
 vim.diagnostic.config {
+  float = { border = "rounded" },
   severity_sort = true,
   signs = {
     linehl = {
@@ -114,11 +115,12 @@ vim.diagnostic.config {
       [vim.diagnostic.severity.HINT] = "",
     },
   },
-  virtual_lines = { current_line = true },
+  virtual_lines = false,
 }
 vim.keymap.set('n', '<Space>ud', function()
   if vim.diagnostic.config().virtual_lines == true then
-    vim.diagnostic.config({ virtual_lines = { current_line = true } })
+    -- vim.diagnostic.config({ virtual_lines = { current_line = true } })
+    vim.diagnostic.config({ virtual_lines = false })
   else
     vim.diagnostic.config({ virtual_lines = true })
   end
@@ -176,8 +178,13 @@ end, opts("Format Buffer"))
 vim.keymap.set('n', '<Leader><Leader>', "<cmd>Pick visit_paths cwd=''<cr>", opts("Visits"))
 vim.keymap.set('n', '<Leader>b', "<cmd>Pick buffers<cr>", opts("Open buffer picker"))
 vim.keymap.set('n', '<Leader>/', "<cmd>Pick grep_live_root<cr>", opts("Search workspace files"))
-vim.keymap.set('n', '<Leader>d', "<cmd>Pick diagnostic<cr>", opts("Open diagnostics picker"))
-vim.keymap.set("n", "<Leader>D", vim.diagnostic.setloclist, { desc = "Diagnostics to location list" })
+vim.keymap.set('n', '<Leader>d', vim.diagnostic.open_float, opts("Show diagnostics for line"))
+vim.keymap.set('n', '<m-d>', vim.diagnostic.open_float, opts("Show diagnostics for line"))
+vim.keymap.set('n', '<Leader>D', function()
+  local width = vim.o.columns - 8
+  MiniExtra.pickers.diagnostic({ scope = "current" }, { window = { config = { width = width } } })
+end, opts("Open diagnostics picker"))
+
 vim.keymap.set("n", "<Leader>r", vim.lsp.buf.rename, opts("Rename Symbol"))
 vim.keymap.set('n', '<Leader>F', "<cmd>Pick files<cr>", opts("Open file picker CWD"))
 vim.keymap.set('n', '<Leader>f', "<cmd>Pick files_root<cr>", opts("Open file picker"))
diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index 78177b4..e6f9326 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -16,6 +16,7 @@
     pavucontrol
     plexamp
     signal-desktop
+    spotify
   ];
 
   xdg.desktopEntries = {

From 1daf5bc799e23fe0b28e8a8df523469744625191 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Mon, 14 Apr 2025 11:23:29 +0200
Subject: [PATCH 649/656] direnv: set log format

---
 flake.lock            | 66 +++++++++++++++++++++----------------------
 home/common/utils.nix |  2 ++
 2 files changed, 35 insertions(+), 33 deletions(-)

diff --git a/flake.lock b/flake.lock
index b07d989..7674623 100644
--- a/flake.lock
+++ b/flake.lock
@@ -62,11 +62,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1741352980,
-        "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
+        "lastModified": 1743550720,
+        "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
+        "rev": "c621e8422220273271f52058f618c94e405bb0f5",
         "type": "github"
       },
       "original": {
@@ -128,11 +128,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742014779,
-        "narHash": "sha256-I6fG1zrfdLFcp/imGZElig0BJO3YU0QEXLgvwWoOpJ8=",
+        "lastModified": 1744693102,
+        "narHash": "sha256-1Z4WPGVky4w3lrhrgs89OKsLzPdtkbi1bPLNFWsoLfY=",
         "owner": "hercules-ci",
         "repo": "hercules-ci-effects",
-        "rev": "524637ef84c177661690b924bf64a1ce18072a2c",
+        "rev": "5b6cec51c9ec095a0d3fd4c8eeb53eb5c59ae33e",
         "type": "github"
       },
       "original": {
@@ -148,11 +148,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744400600,
-        "narHash": "sha256-qYhUgA98mhq1QK13r9qVY+sG1ri6FBgyp+GApX6wS20=",
+        "lastModified": 1745810134,
+        "narHash": "sha256-WfnYH/i7DFzn4SESQfWviXiNUZjohZhzODqLwKYHIPI=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "b74b22bb6167e8dff083ec6988c98798bf8954d3",
+        "rev": "be7cf1709b469a2a2c62169172a167d1fed3509f",
         "type": "github"
       },
       "original": {
@@ -172,11 +172,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1744447706,
-        "narHash": "sha256-8bkAMTy5A6IEEBrr8fGyBrpRNvHMBttsjmTS3IHO/3w=",
+        "lastModified": 1745798752,
+        "narHash": "sha256-0jiImtQNvlDqf0eWqWFGugNjhazNmaXMi2fM7/B/cd8=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "8479d0e1c0b9274c25001432169c0056633bf63a",
+        "rev": "31a7206bdf9e0c01db2165e20a6082690c60b9c9",
         "type": "github"
       },
       "original": {
@@ -188,11 +188,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744372015,
-        "narHash": "sha256-Aith8tgE4jRYDpFa9JqPsA4beTimLmqgwl6PLNlJHyU=",
+        "lastModified": 1745795730,
+        "narHash": "sha256-7sPk1jScMqsTwXYYFKYILrE9xLk7CK+yCBqcK46HTv8=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "4a706a70928231643e1a3f3fcf785de7aa930f8b",
+        "rev": "ce097c5091eab3550e1534fd111752577b5813ea",
         "type": "github"
       },
       "original": {
@@ -208,11 +208,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743911143,
-        "narHash": "sha256-4j4JPwr0TXHH4ZyorXN5yIcmqIQr0WYacsuPA4ktONo=",
+        "lastModified": 1745725746,
+        "narHash": "sha256-iR+idGZJ191cY6NBXyVjh9QH8GVWTkvZw/w+1Igy45A=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "a36f6a7148aec2c77d78e4466215cceb2f5f4bfb",
+        "rev": "187524713d0d9b2d2c6f688b81835114d4c2a7c6",
         "type": "github"
       },
       "original": {
@@ -223,11 +223,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1744316434,
-        "narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=",
+        "lastModified": 1745377448,
+        "narHash": "sha256-jhZDfXVKdD7TSEGgzFJQvEEZ2K65UMiqW5YJ2aIqxMA=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "d19cf9dfc633816a437204555afeb9e722386b76",
+        "rev": "507b63021ada5fee621b6ca371c4fca9ca46f52c",
         "type": "github"
       },
       "original": {
@@ -239,11 +239,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1744309437,
-        "narHash": "sha256-QZnNHM823am8apCqKSPdtnzPGTy2ZB4zIXOVoBp5+W0=",
+        "lastModified": 1745742390,
+        "narHash": "sha256-1rqa/XPSJqJg21BKWjzJZC7yU0l/YTVtjRi0RJmipus=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "f9ebe33a928b5d529c895202263a5ce46bdf12f7",
+        "rev": "26245db0cb552047418cfcef9a25da91b222d6c7",
         "type": "github"
       },
       "original": {
@@ -255,11 +255,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1744347518,
-        "narHash": "sha256-4Y0ByuP4NEz2Zyso9Ozob8yR6kKuaunJ5OARv+tFLPI=",
+        "lastModified": 1745377448,
+        "narHash": "sha256-jhZDfXVKdD7TSEGgzFJQvEEZ2K65UMiqW5YJ2aIqxMA=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "642c54c23609fefb5708b0e2be261446c59138f6",
+        "rev": "507b63021ada5fee621b6ca371c4fca9ca46f52c",
         "type": "github"
       },
       "original": {
@@ -271,11 +271,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1744232761,
-        "narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=",
+        "lastModified": 1745526057,
+        "narHash": "sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14",
+        "rev": "f771eb401a46846c1aebd20552521b233dd7e18b",
         "type": "github"
       },
       "original": {
@@ -303,11 +303,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743748085,
-        "narHash": "sha256-uhjnlaVTWo5iD3LXics1rp9gaKgDRQj6660+gbUU3cE=",
+        "lastModified": 1745780832,
+        "narHash": "sha256-jGzkZoJWx+nJnPe0Z2xQBUOqMKuR1slVFQrMjFTKgeM=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "815e4121d6a5d504c0f96e5be2dd7f871e4fd99d",
+        "rev": "b2b6c027d708fbf4b01c9c11f6e80f2800b5a624",
         "type": "github"
       },
       "original": {
diff --git a/home/common/utils.nix b/home/common/utils.nix
index 91b6130..ff902b9 100644
--- a/home/common/utils.nix
+++ b/home/common/utils.nix
@@ -7,6 +7,8 @@
     viddy
   ];
 
+  home.sessionVariables.DIRENV_LOG_FORMAT = ''$(printf "\033[2mdirenv: %%s\033[0m")'';
+
   programs = {
     bat = {
       enable = true;

From 1e1285d62bf1e7040e7f804d1d8fa5825749117f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sat, 8 Mar 2025 16:29:34 +0100
Subject: [PATCH 650/656] ghostty: use defaults for hinting

---
 home/common/ghostty.nix | 2 --
 1 file changed, 2 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index f9f52d7..f2283cb 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -19,8 +19,6 @@
         font-style-bold-italic = "ExtraLight";
         font-synthetic-style = false;
 
-        freetype-load-flags = "no-force-autohint";
-
         adjust-cursor-thickness = 4;
         adjust-underline-position = 3;
         adjust-underline-thickness = -1;

From b7f67c62234748e6575c9714e5eff5e5dadd9f3f Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Fri, 2 May 2025 11:54:52 +0200
Subject: [PATCH 651/656] neovim: float colors

---
 flake.lock                                  | 52 ++++++++++-----------
 home/common/nvim/dieter/lua/dieter/init.lua | 30 ++++++------
 home/common/nvim/init.lua                   |  6 ++-
 3 files changed, 47 insertions(+), 41 deletions(-)

diff --git a/flake.lock b/flake.lock
index 7674623..d48527d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -148,11 +148,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745810134,
-        "narHash": "sha256-WfnYH/i7DFzn4SESQfWviXiNUZjohZhzODqLwKYHIPI=",
+        "lastModified": 1746169624,
+        "narHash": "sha256-oIAZDng5FYQXnmGJrK4WZX2tsQ1nmxHd9OrcySm/Jf4=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "be7cf1709b469a2a2c62169172a167d1fed3509f",
+        "rev": "1298a3418be1a875e9ae6643770b0939814cd441",
         "type": "github"
       },
       "original": {
@@ -172,11 +172,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1745798752,
-        "narHash": "sha256-0jiImtQNvlDqf0eWqWFGugNjhazNmaXMi2fM7/B/cd8=",
+        "lastModified": 1746168726,
+        "narHash": "sha256-ZkgW3U37lTwzqUo2rfko+utld5ChnYWDunJ2hAcJOQo=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "31a7206bdf9e0c01db2165e20a6082690c60b9c9",
+        "rev": "d4e6959d82e9e9dc609dcbf7a29fd293fad9c912",
         "type": "github"
       },
       "original": {
@@ -188,11 +188,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1745795730,
-        "narHash": "sha256-7sPk1jScMqsTwXYYFKYILrE9xLk7CK+yCBqcK46HTv8=",
+        "lastModified": 1746141998,
+        "narHash": "sha256-CYxer9cRvlMySr76epuh5Ub3ryyDV94yVwDC1M/MPvw=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "ce097c5091eab3550e1534fd111752577b5813ea",
+        "rev": "ce8b755a86c10496a81675c49b3bc9a42c79d80f",
         "type": "github"
       },
       "original": {
@@ -208,11 +208,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745725746,
+        "lastModified": 1746054057,
         "narHash": "sha256-iR+idGZJ191cY6NBXyVjh9QH8GVWTkvZw/w+1Igy45A=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "187524713d0d9b2d2c6f688b81835114d4c2a7c6",
+        "rev": "13ba07d54c6ccc5af30a501df669bf3fe3dd4db8",
         "type": "github"
       },
       "original": {
@@ -223,11 +223,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1745377448,
-        "narHash": "sha256-jhZDfXVKdD7TSEGgzFJQvEEZ2K65UMiqW5YJ2aIqxMA=",
+        "lastModified": 1746061036,
+        "narHash": "sha256-OxYwCGJf9VJ2KnUO+w/hVJVTjOgscdDg/lPv8Eus07Y=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "507b63021ada5fee621b6ca371c4fca9ca46f52c",
+        "rev": "3afd19146cac33ed242fc0fc87481c67c758a59e",
         "type": "github"
       },
       "original": {
@@ -239,11 +239,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1745742390,
-        "narHash": "sha256-1rqa/XPSJqJg21BKWjzJZC7yU0l/YTVtjRi0RJmipus=",
+        "lastModified": 1746055187,
+        "narHash": "sha256-3dqArYSMP9hM7Qpy5YWhnSjiqniSaT2uc5h2Po7tmg0=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "26245db0cb552047418cfcef9a25da91b222d6c7",
+        "rev": "3e362ce63e16b9572d8c2297c04f7c19ab6725a5",
         "type": "github"
       },
       "original": {
@@ -255,11 +255,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1745377448,
-        "narHash": "sha256-jhZDfXVKdD7TSEGgzFJQvEEZ2K65UMiqW5YJ2aIqxMA=",
+        "lastModified": 1746123514,
+        "narHash": "sha256-UNO+MbVHLl4AkVWYqekk72/gqFNSLYNkBgto7h+7P3U=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "507b63021ada5fee621b6ca371c4fca9ca46f52c",
+        "rev": "b5dd9efc912ecabeafa4f082d31e19cb1c74266c",
         "type": "github"
       },
       "original": {
@@ -271,11 +271,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1745526057,
-        "narHash": "sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA=",
+        "lastModified": 1746141548,
+        "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "f771eb401a46846c1aebd20552521b233dd7e18b",
+        "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78",
         "type": "github"
       },
       "original": {
@@ -303,11 +303,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745780832,
-        "narHash": "sha256-jGzkZoJWx+nJnPe0Z2xQBUOqMKuR1slVFQrMjFTKgeM=",
+        "lastModified": 1745929750,
+        "narHash": "sha256-k5ELLpTwRP/OElcLpNaFWLNf8GRDq4/eHBmFy06gGko=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "b2b6c027d708fbf4b01c9c11f6e80f2800b5a624",
+        "rev": "82bf32e541b30080d94e46af13d46da0708609ea",
         "type": "github"
       },
       "original": {
diff --git a/home/common/nvim/dieter/lua/dieter/init.lua b/home/common/nvim/dieter/lua/dieter/init.lua
index 0f69917..6c5eebb 100644
--- a/home/common/nvim/dieter/lua/dieter/init.lua
+++ b/home/common/nvim/dieter/lua/dieter/init.lua
@@ -15,6 +15,8 @@ local colors = {
     highlight_intense = hsl(42, 100, 30),
 
     dialog_fg = hsl(230, 13, 10),
+    dialog_bg = hsl(50, 15, 95),
+    dialog_border = hsl(50, 25, 75),
 
     string = hsl(96, 50, 33),
     comment = hsl(360, 66, 40),
@@ -38,7 +40,7 @@ local colors = {
     change_quarter = hsl(224, 100, 85),
     delete = hsl(350, 100, 40),
 
-    selection = hsl(270, 75, 92),
+    selection = hsl(270, 45, 92),
 
     search_bg = hsl(43, 100, 8),
     search_fg = hsl(43, 100, 85),
@@ -67,6 +69,7 @@ local colors = {
     highlight_intense = hsl(58, 100, 60),
 
     dialog_fg = hsl(191, 15, 75),
+    dialog_bg = "NONE",
 
     string = hsl(90, 30, 60),
     comment = hsl(216, 30, 55),
@@ -111,7 +114,6 @@ local colors = {
 }
 
 local setupGroups = function(c)
-  c.dialog_bg = c.background
 
   return {
     Normal = { fg = c.foreground, bg = c.background },
@@ -166,10 +168,10 @@ local setupGroups = function(c)
     DiagnosticHint = { fg = c.diagnostic_hint, italic = true },
     DiagnosticInfo = { fg = c.diagnostic_info, italic = true },
     DiagnosticWarn = { fg = c.diagnostic_warn, italic = true },
-    DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.popup_error_bg },
-    DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.popup_hint_bg },
-    DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.popup_info_bg },
-    DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.popup_warning_bg },
+    DiagnosticFloatingError = { fg = c.diagnostic_error, bg = c.dialog_bg },
+    DiagnosticFloatingHint = { fg = c.diagnostic_hint, bg = c.dialog_bg },
+    DiagnosticFloatingInfo = { fg = c.diagnostic_info, bg = c.dialog_bg },
+    DiagnosticFloatingWarn = { fg = c.diagnostic_warning, bg = c.dialog_bg },
     DiagnosticUnderlineError = { fg = c.foreground, undercurl = true, sp = c.diagnostic_error },
     DiagnosticUnderlineHint = { fg = c.foreground, undercurl = true, sp = c.diagnostic_hint },
     DiagnosticUnderlineInfo = { fg = c.foreground, undercurl = true, sp = c.diagnostic_info },
@@ -194,22 +196,22 @@ local setupGroups = function(c)
 
     EndOfBuffer = { fg = c.dimmed },
     WinSeparator = { bg = c.dialog_bg, fg = c.dialog_fg },
-    NormalFloat = { bg = c.background, fg = c.foreground },
-    FloatBorder = { fg = c.foreground },
-    FloatTitle = { fg = c.doc_fg, bold = true },
+    NormalFloat = { bg = c.dialog_bg, fg = c.foreground },
+    FloatBorder = { bg = c.dialog_bg, fg = c.dialog_border },
+    FloatTitle = { bg = c.dialog_bg, fg = c.dialog_border, bold = true },
 
     Title = { fg = c.foreground, bold = true },
 
     MiniPickNormal = { bg = c.dialog_bg, fg = c.dialog_fg },
-    MiniPickBorder = { link = "MiniPickNormal" },
+    MiniPickBorder = { bg = c.dialog_bg, fg = c.dialog_border },
     MiniPickBorderText = { link = "MiniPickBorder" },
     MiniPickMatchCurrent = { bg = c.dialog_bg, fg = c.dialog_fg, reverse = true },
 
-    MiniClueBorder = { link = "MiniPicBorder" },
-    MiniClueTitle = { bg = c.background, fg = c.foreground, bold = true },
+    MiniClueBorder = { link = "MiniPickBorder" },
+    MiniClueTitle = { bg = c.dialog_bg, fg = c.dialog_border, bold = true },
     MiniClueNextKey = { link = "MiniClueTitle" },
-    MiniClueDescGroup = { bg = c.background, fg = c.foreground, italic = true },
-    MiniClueDescSingle = { bg = c.background, fg = c.foreground },
+    MiniClueDescGroup = { bg = c.dialog_bg, fg = c.foreground, italic = true },
+    MiniClueDescSingle = { bg = c.dialog_bg, fg = c.foreground },
     MiniClueSeparator = { link = "MiniClueBorder" },
 
     MiniCursorWord = { underdotted = true, bold = true, sp = c.diagnostic_hint },
diff --git a/home/common/nvim/init.lua b/home/common/nvim/init.lua
index 2e21cbf..cd34947 100644
--- a/home/common/nvim/init.lua
+++ b/home/common/nvim/init.lua
@@ -93,7 +93,11 @@ vim.opt.grepformat = vim.opt.grepformat ^ { "%f:%l:%c:%m" }
 
 -- Diagnostics
 vim.diagnostic.config {
-  float = { border = "rounded" },
+  float = {
+    border = "rounded",
+    header = "",
+    source = "if_many",
+  },
   severity_sort = true,
   signs = {
     linehl = {

From db13d109f931026758ad917a9dbf9d4f5509fdaa Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 25 May 2025 19:31:33 +0200
Subject: [PATCH 652/656] update

---
 common/desktop.nix      |  1 +
 flake.lock              | 74 ++++++++++++++++++++---------------------
 flake.nix               |  2 +-
 home/dln/dinky.nix      |  8 +----
 home/dln/home.nix       |  3 +-
 home/dln/nemo.nix       |  2 +-
 hosts/dinky/default.nix |  2 +-
 overlays/default.nix    |  4 ++-
 8 files changed, 46 insertions(+), 50 deletions(-)

diff --git a/common/desktop.nix b/common/desktop.nix
index cf16871..b8a467e 100644
--- a/common/desktop.nix
+++ b/common/desktop.nix
@@ -66,6 +66,7 @@ in
       ];
     };
 
+    programs.ssh.enableAskPassword = true;
     programs.ssh.askPassword = "${pkgs.gnome-ssh-askpass4}/bin/gnome-ssh-askpass4";
     programs.ssh.startAgent = true;
 
diff --git a/flake.lock b/flake.lock
index d48527d..30757ec 100644
--- a/flake.lock
+++ b/flake.lock
@@ -3,11 +3,11 @@
     "flake-compat": {
       "flake": false,
       "locked": {
-        "lastModified": 1733328505,
-        "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
+        "lastModified": 1747046372,
+        "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
         "owner": "edolstra",
         "repo": "flake-compat",
-        "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
+        "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
         "type": "github"
       },
       "original": {
@@ -84,11 +84,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742649964,
-        "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
+        "lastModified": 1747372754,
+        "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
+        "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46",
         "type": "github"
       },
       "original": {
@@ -128,11 +128,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744693102,
-        "narHash": "sha256-1Z4WPGVky4w3lrhrgs89OKsLzPdtkbi1bPLNFWsoLfY=",
+        "lastModified": 1748000383,
+        "narHash": "sha256-EaAJhwfJGBncgIV/0NlJviid2DP93cTMc9h0q6P6xXk=",
         "owner": "hercules-ci",
         "repo": "hercules-ci-effects",
-        "rev": "5b6cec51c9ec095a0d3fd4c8eeb53eb5c59ae33e",
+        "rev": "231726642197817d20310b9d39dd4afb9e899489",
         "type": "github"
       },
       "original": {
@@ -148,11 +148,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746169624,
-        "narHash": "sha256-oIAZDng5FYQXnmGJrK4WZX2tsQ1nmxHd9OrcySm/Jf4=",
+        "lastModified": 1748134483,
+        "narHash": "sha256-5PBK1nV8X39K3qUj8B477Aa2RdbLq3m7wRxUKRtggX4=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "1298a3418be1a875e9ae6643770b0939814cd441",
+        "rev": "c1e671036224089937e111e32ea899f59181c383",
         "type": "github"
       },
       "original": {
@@ -172,11 +172,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1746168726,
-        "narHash": "sha256-ZkgW3U37lTwzqUo2rfko+utld5ChnYWDunJ2hAcJOQo=",
+        "lastModified": 1748070814,
+        "narHash": "sha256-UENoloiY25w0GmPsni8aswhks13qD1sT7XPQgmBd4tU=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "d4e6959d82e9e9dc609dcbf7a29fd293fad9c912",
+        "rev": "1654f815b79267a32c0eb9feb5962089d855d287",
         "type": "github"
       },
       "original": {
@@ -188,11 +188,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1746141998,
-        "narHash": "sha256-CYxer9cRvlMySr76epuh5Ub3ryyDV94yVwDC1M/MPvw=",
+        "lastModified": 1748041342,
+        "narHash": "sha256-gYkZbws7QEZ6o5Kh8IPotFAk1thbzzm3C8+vs/M32E4=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "ce8b755a86c10496a81675c49b3bc9a42c79d80f",
+        "rev": "9784bc134624ff6dcf2e59e3c3998e206d2adad7",
         "type": "github"
       },
       "original": {
@@ -208,11 +208,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746054057,
-        "narHash": "sha256-iR+idGZJ191cY6NBXyVjh9QH8GVWTkvZw/w+1Igy45A=",
+        "lastModified": 1748145500,
+        "narHash": "sha256-t9fx0l61WOxtWxXCqlXPWSuG/0XMF9DtE2T7KXgMqJw=",
         "owner": "nix-community",
         "repo": "nix-index-database",
-        "rev": "13ba07d54c6ccc5af30a501df669bf3fe3dd4db8",
+        "rev": "a98adbf54d663395df0b9929f6481d4d80fc8927",
         "type": "github"
       },
       "original": {
@@ -223,11 +223,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1746061036,
-        "narHash": "sha256-OxYwCGJf9VJ2KnUO+w/hVJVTjOgscdDg/lPv8Eus07Y=",
+        "lastModified": 1747958103,
+        "narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "3afd19146cac33ed242fc0fc87481c67c758a59e",
+        "rev": "fe51d34885f7b5e3e7b59572796e1bcb427eccb1",
         "type": "github"
       },
       "original": {
@@ -239,27 +239,27 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1746055187,
-        "narHash": "sha256-3dqArYSMP9hM7Qpy5YWhnSjiqniSaT2uc5h2Po7tmg0=",
+        "lastModified": 1748162331,
+        "narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "3e362ce63e16b9572d8c2297c04f7c19ab6725a5",
+        "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334",
         "type": "github"
       },
       "original": {
         "owner": "nixos",
-        "ref": "nixos-24.11",
+        "ref": "nixos-25.05",
         "repo": "nixpkgs",
         "type": "github"
       }
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1746123514,
-        "narHash": "sha256-UNO+MbVHLl4AkVWYqekk72/gqFNSLYNkBgto7h+7P3U=",
+        "lastModified": 1747958103,
+        "narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "b5dd9efc912ecabeafa4f082d31e19cb1c74266c",
+        "rev": "fe51d34885f7b5e3e7b59572796e1bcb427eccb1",
         "type": "github"
       },
       "original": {
@@ -271,11 +271,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1746141548,
-        "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=",
+        "lastModified": 1748026106,
+        "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78",
+        "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c",
         "type": "github"
       },
       "original": {
@@ -303,11 +303,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745929750,
-        "narHash": "sha256-k5ELLpTwRP/OElcLpNaFWLNf8GRDq4/eHBmFy06gGko=",
+        "lastModified": 1747912973,
+        "narHash": "sha256-XgxghfND8TDypxsMTPU2GQdtBEsHTEc3qWE6RVEk8O0=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "82bf32e541b30080d94e46af13d46da0708609ea",
+        "rev": "020cb423808365fa3f10ff4cb8c0a25df35065a3",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index 0918288..7ae9e86 100644
--- a/flake.nix
+++ b/flake.nix
@@ -15,7 +15,7 @@
 
   inputs = {
     neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
-    nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
+    nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
 
diff --git a/home/dln/dinky.nix b/home/dln/dinky.nix
index 9b9e955..b0b76b0 100644
--- a/home/dln/dinky.nix
+++ b/home/dln/dinky.nix
@@ -10,17 +10,11 @@
     oled.enable = true;
   };
 
-  dconf.settings = {
-    "org/gnome/shell" = {
-      enabled-extensions = [ "Battery-Health-Charging@maniacx.github.com" ];
-    };
-  };
-
   home.packages = with pkgs; [ ];
 
   programs.gpg.enable = true;
   services.gpg-agent = {
     enable = true;
-    pinentryPackage = pkgs.pinentry-curses;
+    pinentry.package = pkgs.pinentry-curses;
   };
 }
diff --git a/home/dln/home.nix b/home/dln/home.nix
index ae8681e..26216e7 100644
--- a/home/dln/home.nix
+++ b/home/dln/home.nix
@@ -14,8 +14,8 @@ in
     homeDirectory = "/home/dln";
     packages = with pkgs; [
       asciinema
-      openconnect
       ouch
+      toolbox
     ];
   };
 
@@ -61,7 +61,6 @@ in
 
       git = {
         push-bookmark-prefix = "dln/push-";
-        subprocess = true;
       };
 
       ui = {
diff --git a/home/dln/nemo.nix b/home/dln/nemo.nix
index 504e5cd..cffb9ca 100644
--- a/home/dln/nemo.nix
+++ b/home/dln/nemo.nix
@@ -35,6 +35,6 @@
   services.gpg-agent = {
     enable = true;
     enableScDaemon = false;
-    pinentryPackage = pkgs.pinentry-curses;
+    pinentry.package = pkgs.pinentry-curses;
   };
 }
diff --git a/hosts/dinky/default.nix b/hosts/dinky/default.nix
index 5a5806a..058294d 100644
--- a/hosts/dinky/default.nix
+++ b/hosts/dinky/default.nix
@@ -141,5 +141,5 @@
     "ssh-ng://nemo.aarn.patagia.net"
   ];
 
-  system.stateVersion = "24.05"; # Did you read the comment?
+  system.stateVersion = "25.05"; # Did you read the comment?
 }
diff --git a/overlays/default.nix b/overlays/default.nix
index 9dd6924..61457f5 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -7,7 +7,9 @@
 
     # https://discourse.nixos.org/t/disable-ssh-agent-from-gnome-keyring-on-gnome/28176/5
     gnome-keyring = prev.gnome-keyring.overrideAttrs (oldAttrs: {
-      configureFlags = oldAttrs.configureFlags or [ ] ++ [ "--disable-ssh-agent" ];
+      mesonFlags = (builtins.filter (flag: flag != "-Dssh-agent=true") oldAttrs.mesonFlags) ++ [
+        "-Dssh-agent=false"
+      ];
     });
   };
 

From 0a42495374eda6255b311370cc3105733984a752 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 27 May 2025 14:09:12 +0200
Subject: [PATCH 653/656] ghostty: use semicondensed font

---
 home/common/ghostty.nix | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index f2283cb..b810daa 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -13,18 +13,20 @@
         font-family = "Berkeley Mono";
         font-family-italic = "Monaspace Radon Var";
         font-family-bold-italic = "Monaspace Krypton Var";
-        font-style = "Regular";
-        font-style-bold = "Bold";
-        font-style-italic = "Italic";
+        font-style = "SemiCondensed";
+        font-style-bold = "Bold SemiCondensed";
+        font-style-italic = "ExtraLight Italic";
         font-style-bold-italic = "ExtraLight";
         font-synthetic-style = false;
 
+        adjust-cell-height = 2;
+        adjust-font-baseline = 1;
         adjust-cursor-thickness = 4;
         adjust-underline-position = 3;
         adjust-underline-thickness = -1;
 
         mouse-hide-while-typing = true;
-        unfocused-split-opacity = 0.8;
+        unfocused-split-opacity = 0.9;
         unfocused-split-fill = "#056157";
 
         shell-integration = "fish";

From 238cd231be606058d1a89e5e54ebfc03f40a95a8 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 25 May 2025 20:28:50 +0200
Subject: [PATCH 654/656] install thunderbird

---
 home/dln/desktop.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/home/dln/desktop.nix b/home/dln/desktop.nix
index e6f9326..0ef0500 100644
--- a/home/dln/desktop.nix
+++ b/home/dln/desktop.nix
@@ -17,6 +17,7 @@
     plexamp
     signal-desktop
     spotify
+    thunderbird
   ];
 
   xdg.desktopEntries = {

From ff4c0d1842c4707c1e0d7b4a9ba176a9cf121d51 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Tue, 27 May 2025 14:09:12 +0200
Subject: [PATCH 655/656] ghostty: bolder bold

---
 home/common/ghostty.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/home/common/ghostty.nix b/home/common/ghostty.nix
index b810daa..8946ddd 100644
--- a/home/common/ghostty.nix
+++ b/home/common/ghostty.nix
@@ -14,7 +14,7 @@
         font-family-italic = "Monaspace Radon Var";
         font-family-bold-italic = "Monaspace Krypton Var";
         font-style = "SemiCondensed";
-        font-style-bold = "Bold SemiCondensed";
+        font-style-bold = "ExtraBold SemiCondensed";
         font-style-italic = "ExtraLight Italic";
         font-style-bold-italic = "ExtraLight";
         font-synthetic-style = false;

From c4c8fb322f9ceb3c95c2fe082aed005c3b72cc85 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Sun, 25 May 2025 20:28:50 +0200
Subject: [PATCH 656/656] Add openssl

---
 flake.lock            | 48 +++++++++++++++++++++----------------------
 flake.nix             |  1 +
 home/common/devel.nix |  1 +
 3 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/flake.lock b/flake.lock
index 30757ec..3157c71 100644
--- a/flake.lock
+++ b/flake.lock
@@ -148,11 +148,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1748134483,
-        "narHash": "sha256-5PBK1nV8X39K3qUj8B477Aa2RdbLq3m7wRxUKRtggX4=",
+        "lastModified": 1748570847,
+        "narHash": "sha256-XU1a6wFctd+s3ZvBIFB6s4GhPJ+Oc6pkeOrEsbA2fMo=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "c1e671036224089937e111e32ea899f59181c383",
+        "rev": "4e9efaa68b0be7e19127dad4f0506a9b89e28ef4",
         "type": "github"
       },
       "original": {
@@ -172,11 +172,11 @@
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1748070814,
-        "narHash": "sha256-UENoloiY25w0GmPsni8aswhks13qD1sT7XPQgmBd4tU=",
+        "lastModified": 1748588826,
+        "narHash": "sha256-lfSvGRDpep7LVD4L/97Xjn3bglB247S4bgpfpMbqGP4=",
         "owner": "nix-community",
         "repo": "neovim-nightly-overlay",
-        "rev": "1654f815b79267a32c0eb9feb5962089d855d287",
+        "rev": "2e9ad466d7b54245229087c980da0615f54e4b2f",
         "type": "github"
       },
       "original": {
@@ -188,11 +188,11 @@
     "neovim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1748041342,
-        "narHash": "sha256-gYkZbws7QEZ6o5Kh8IPotFAk1thbzzm3C8+vs/M32E4=",
+        "lastModified": 1748543356,
+        "narHash": "sha256-Xo3LBLzEMIdmT0s8UWfNUJvTBHxB5PSYKJyFPBcGx8w=",
         "owner": "neovim",
         "repo": "neovim",
-        "rev": "9784bc134624ff6dcf2e59e3c3998e206d2adad7",
+        "rev": "b28bbee539625f9bcbf128e8da400d1d55b499ff",
         "type": "github"
       },
       "original": {
@@ -223,11 +223,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1747958103,
-        "narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=",
+        "lastModified": 1748475218,
+        "narHash": "sha256-zDYqMBDbQR4SU9vHFrvHRbI0qxv0RGAoog5idGLiOWQ=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "fe51d34885f7b5e3e7b59572796e1bcb427eccb1",
+        "rev": "e80506de785dc48dcfbb636c443c5e2b0b5b2d7d",
         "type": "github"
       },
       "original": {
@@ -239,11 +239,11 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1748162331,
-        "narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=",
+        "lastModified": 1748437600,
+        "narHash": "sha256-hYKMs3ilp09anGO7xzfGs3JqEgUqFMnZ8GMAqI6/k04=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334",
+        "rev": "7282cb574e0607e65224d33be8241eae7cfe0979",
         "type": "github"
       },
       "original": {
@@ -255,11 +255,11 @@
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1747958103,
-        "narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=",
+        "lastModified": 1748506378,
+        "narHash": "sha256-oS0Gxh63Df8b8r04lqEYDDLKhHIrVr9/JLOn2bn8JaI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "fe51d34885f7b5e3e7b59572796e1bcb427eccb1",
+        "rev": "3866ad91cfc172f08a6839def503d8fc2923c603",
         "type": "github"
       },
       "original": {
@@ -271,11 +271,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1748026106,
-        "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=",
+        "lastModified": 1748370509,
+        "narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c",
+        "rev": "4faa5f5321320e49a78ae7848582f684d64783e9",
         "type": "github"
       },
       "original": {
@@ -303,11 +303,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1747912973,
-        "narHash": "sha256-XgxghfND8TDypxsMTPU2GQdtBEsHTEc3qWE6RVEk8O0=",
+        "lastModified": 1748243702,
+        "narHash": "sha256-9YzfeN8CB6SzNPyPm2XjRRqSixDopTapaRsnTpXUEY8=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "020cb423808365fa3f10ff4cb8c0a25df35065a3",
+        "rev": "1f3f7b784643d488ba4bf315638b2b0a4c5fb007",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index 7ae9e86..fd4ba17 100644
--- a/flake.nix
+++ b/flake.nix
@@ -68,6 +68,7 @@
       devShell.${system} = pkgs.mkShell {
         packages = with pkgs; [
           just
+          lua-language-server
           nh
           nil
           nixd
diff --git a/home/common/devel.nix b/home/common/devel.nix
index 910900e..70c3bcc 100644
--- a/home/common/devel.nix
+++ b/home/common/devel.nix
@@ -7,6 +7,7 @@
     file
     just
     nix-output-monitor
+    openssl
     passage
     rage
   ];