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 001/182] 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 002/182] 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 003/182] 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 004/182] 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 005/182] 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 006/182] 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 007/182] 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 008/182] 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 009/182] 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 010/182] 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 011/182] 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 012/182] 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 013/182] 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 014/182] 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 015/182] 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 016/182] 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 017/182] 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 018/182] =?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 019/182] 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 020/182] 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 021/182] 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 022/182] 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 023/182] 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 024/182] 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 025/182] 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 026/182] 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 027/182] 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 028/182] 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 029/182] 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 030/182] 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 031/182] 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 032/182] 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 033/182] 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 034/182] 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 035/182] 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 036/182] 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 037/182] 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 038/182] 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 039/182] 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 040/182] 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 041/182] 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 042/182] 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 043/182] 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 044/182] 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 045/182] 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 046/182] 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 047/182] 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 048/182] 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 049/182] 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 050/182] 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 051/182] 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 052/182] 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 053/182] 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 054/182] 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 055/182] 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 056/182] 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 057/182] 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 058/182] 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 059/182] 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 060/182] 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 061/182] 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 062/182] 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 063/182] 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 064/182] 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 065/182] 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 066/182] 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 067/182] 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 068/182] 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 069/182] 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 070/182] 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 071/182] 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 072/182] 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 073/182] 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 074/182] 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 075/182] 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 076/182] 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 077/182] 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 078/182] 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 079/182] 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 080/182] 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 081/182] 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 082/182] 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 083/182] 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 084/182] 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 085/182] 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 086/182] 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 087/182] 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 088/182] 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 089/182] 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 090/182] 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 091/182] 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 092/182] 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 093/182] 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 094/182] 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 095/182] 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 096/182] 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 097/182] 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 098/182] 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 099/182] 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 100/182] 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 101/182] 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 102/182] 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 103/182] 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 104/182] 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 105/182] 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 106/182] 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 107/182] 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 108/182] 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 109/182] 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 110/182] 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 111/182] 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 112/182] 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 113/182] 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 114/182] 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 115/182] 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 116/182] 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 117/182] 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 118/182] 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 119/182] 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 120/182] 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 121/182] 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 122/182] 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 123/182] 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 124/182] 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 125/182] 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 126/182] 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 127/182] 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 128/182] =?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 129/182] 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 130/182] 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 131/182] 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 132/182] 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 133/182] 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 134/182] 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 135/182] 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 136/182] 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 137/182] 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 138/182] 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 139/182] 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 140/182] 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 141/182] 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 142/182] 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 143/182] 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 144/182] 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 145/182] 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 146/182] 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 147/182] 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 148/182] 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 149/182] 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 150/182] 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 151/182] 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 152/182] 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 153/182] 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 154/182] 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 155/182] 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 156/182] 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 157/182] 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 158/182] 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 159/182] 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 160/182] 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 161/182] 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 162/182] 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 163/182] 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 164/182] 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 165/182] 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 166/182] 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 167/182] 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 168/182] 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 169/182] 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 170/182] 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 171/182] 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 172/182] 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 173/182] 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 174/182] 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 175/182] 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 176/182] 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 177/182] 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 178/182] 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 179/182] 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 180/182] 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 181/182] 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 182/182] 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
   ];