diff --git a/flake.lock b/flake.lock
index f8c2060..adf77e6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -249,22 +249,6 @@
         "type": "github"
       }
     },
-    "nixpkgs-old-fish": {
-      "locked": {
-        "lastModified": 1703624527,
-        "narHash": "sha256-e5XNMNJ2Z61MEnXeMbGkLqWr0FfgH3y5X+9nV15pJak=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "c407032be28ca2236f45c49cfb2b8b3885294f7f",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "c407032be28ca2236f45c49cfb2b8b3885294f7f",
-        "type": "github"
-      }
-    },
     "nixvim": {
       "inputs": {
         "devshell": "devshell",
@@ -321,7 +305,6 @@
         "home-manager": "home-manager",
         "nix-darwin": "nix-darwin",
         "nixpkgs": "nixpkgs",
-        "nixpkgs-old-fish": "nixpkgs-old-fish",
         "nixvim": "nixvim"
       }
     },
diff --git a/flake.nix b/flake.nix
index f6406b6..3ad361f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -3,7 +3,6 @@
 
   inputs = {
     nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
-    nixpkgs-old-fish.url = "github:NixOS/nixpkgs/c407032be28ca2236f45c49cfb2b8b3885294f7f";
     nix-darwin.url = "github:LnL7/nix-darwin/master";
     nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
     home-manager.url = "github:nix-community/home-manager";
@@ -12,13 +11,12 @@
     nixvim.inputs.nixpkgs.follows = "nixpkgs";
   };
 
-  outputs = inputs@{ self, nix-darwin, nixpkgs, nixpkgs-old-fish, home-manager, nixvim }:
+  outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager, nixvim }:
   {
     darwinConfigurations."tid27880sperrau" = nix-darwin.lib.darwinSystem {
       modules = [
         {
           system.configurationRevision = self.rev or self.dirtyRev or null;
-          programs.fish.package = nixpkgs-old-fish.legacyPackages.aarch64-darwin.fish;
         }
         ./nix-darwin
         ./nix-darwin/hosts/tid27880sperrau
@@ -31,7 +29,6 @@
             backupFileExtension = "before-home-manager";
             extraSpecialArgs = {
               inherit nixvim;
-              inherit nixpkgs-old-fish;
             };
             users.sperrault = import ./home-manager/users/sperrault.nix;
           };
diff --git a/home-manager/default.nix b/home-manager/default.nix
index f492f82..6fce3cf 100644
--- a/home-manager/default.nix
+++ b/home-manager/default.nix
@@ -13,9 +13,9 @@
     };
 
     packages = with pkgs; [
-      watchman
       difftastic
-      maple-mono-NF
+      ripgrep
+      watchman
     ];
   };
 
@@ -34,11 +34,8 @@
     interactiveShellInit = ''
       fish_vi_key_bindings
 
-      # start or attach to default tmux session
-      if not set -q TMUX
-        set -g TMUX tmux new-session -d -s default
-        eval $TMUX
-        tmux attach-session -d -t default
+      if not set -q ZELLIJ
+        zellij attach --create default
       end
     '';
     shellAbbrs = {
@@ -59,26 +56,91 @@
     enableFishIntegration = true;
   };
 
-  programs.tmux = {
+  programs.zellij = {
     enable = true;
-    keyMode = "vi";
-    mouse = true;
-    prefix = "C-a";
-    sensibleOnTop = true;
-    plugins = with pkgs.tmuxPlugins; [
-      prefix-highlight
-      vim-tmux-navigator
-      catppuccin
-    ];
-    extraConfig = ''
-      set -g @catppuccin_flavor 'frappe'
+    enableFishIntegration = false;
+  };
 
-      bind c new-window -c "#{pane_current_path}"
-      bind '"' split-window -c "#{pane_current_path}"
-      bind % split-window -h -c "#{pane_current_path}"
+  home.file.".config/zellij/config.kdl" = {
+    enable = true;
+    text = ''
+      pane_frames false
+      theme "catppuccin-mocha"
 
-      set -gu default-command
-      set -g default-shell "$SHELL"
+      ui {
+        pane_frames {
+          hide_session_name true
+        }
+      }
+
+      keybinds clear-defaults=true {
+        normal {
+          bind "Ctrl a" { SwitchToMode "tmux"; }
+        }
+        tmux {
+          bind "Esc" { SwitchToMode "Normal"; }
+
+          bind "1" { GoToTab 1; SwitchToMode "Normal"; }
+          bind "2" { GoToTab 2; SwitchToMode "Normal"; }
+          bind "3" { GoToTab 3; SwitchToMode "Normal"; }
+          bind "4" { GoToTab 4; SwitchToMode "Normal"; }
+          bind "5" { GoToTab 5; SwitchToMode "Normal"; }
+          bind "6" { GoToTab 6; SwitchToMode "Normal"; }
+          bind "7" { GoToTab 7; SwitchToMode "Normal"; }
+          bind "8" { GoToTab 8; SwitchToMode "Normal"; }
+          bind "9" { GoToTab 9; SwitchToMode "Normal"; }
+
+          bind "c" { NewTab; SwitchToMode "Normal"; }
+          bind "n" { GoToNextTab; SwitchToMode "Normal"; }
+          bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
+
+          bind "h" { MoveFocus "Left"; }
+          bind "j" { MoveFocus "Down"; }
+          bind "k" { MoveFocus "Up"; }
+          bind "l" { MoveFocus "Right"; }
+
+          bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
+
+          bind "d" { Detach; }
+
+          bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
+          bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
+        }
+
+        shared_except "locked" {
+          bind "Ctrl h" {
+            MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.2.1/vim-zellij-navigator.wasm" {
+              name "move_focus_or_tab";
+              payload "left";
+              move_mod "ctrl";
+            };
+          }
+
+          bind "Ctrl j" {
+            MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.2.1/vim-zellij-navigator.wasm" {
+              name "move_focus";
+              payload "down";
+              move_mod "ctrl";
+            };
+          }
+
+          bind "Ctrl k" {
+            MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.2.1/vim-zellij-navigator.wasm" {
+              name "move_focus";
+              payload "up";
+              move_mod "ctrl";
+            };
+          }
+
+          bind "Ctrl l" {
+            MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.2.1/vim-zellij-navigator.wasm" {
+              name "move_focus_or_tab";
+              payload "right";
+              move_mod "ctrl";
+            };
+          }
+        }
+      }
     '';
   };
 
diff --git a/home-manager/nixvim/default.nix b/home-manager/nixvim/default.nix
index 5203df8..8d8d41a 100644
--- a/home-manager/nixvim/default.nix
+++ b/home-manager/nixvim/default.nix
@@ -23,6 +23,11 @@
         action = ":";
         mode = ["n" "v"];
       }
+      {
+        key = "q;";
+        action = "q:";
+        mode = ["n" "v"];
+      }
       {
         key = "<leader>y";
         action = ''"+y'';
@@ -88,6 +93,26 @@
         action = "<cmd>Telescope live_grep<cr>";
         mode = ["n"];
       }
+      {
+        key = "<C-h>";
+        action = "<cmd>ZellijNavigateLeft<cr>";
+        mode = ["n"];
+      }
+      {
+        key = "<C-j>";
+        action = "<cmd>ZellijNavigateDown<cr>";
+        mode = ["n"];
+      }
+      {
+        key = "<C-k>";
+        action = "<cmd>ZellijNavigateUp<cr>";
+        mode = ["n"];
+      }
+      {
+        key = "<C-l>";
+        action = "<cmd>ZellijNavigateRight<cr>";
+        mode = ["n"];
+      }
     ];
 
     extraPlugins = with pkgs.vimPlugins; [
@@ -119,6 +144,7 @@
         vim
         yaml
         elixir
+        heex
         javascript
         typescript
         css
@@ -146,39 +172,47 @@
       settings = {
         sources = [
           { name = "nvim_lsp"; }
-          { name = "luasnip"; }
+          { name = "snippy"; }
           { name = "path"; }
           { name = "buffer"; }
         ];
         mappings = {
           "<C-n>" = ''
-            cmp.mapping(function()
+            function(fallback) do
               if cmp.visible() then
-                cmp.select_next_item({behavior = 'insert'})
+                cmp.select_next_item({ behavior = cmp.SelectBehavior.Insert })
               else
-                cmp.complete()
+                fallback()
               end
-            end)
+            end
           '';
           "<C-p>" = ''
-            cmp.mapping(function()
+            function(fallback) do
               if cmp.visible() then
-                cmp.select_prev_item({behavior = 'insert'})
+                cmp.select_prev_item({ behavior = cmp.SelectBehavior.Insert })
               else
-                cmp.complete()
+                fallback()
               end
-            end)
+            end
+          '';
+          "<CR>" = ''
+            function(fallback)
+              if cmp.visible() then
+                cmp.confirm({ select = true })
+              else
+                fallback()
+              end
+            end
           '';
         };
         snippet.expand = ''
           function(args)
-            require('luasnip').lsp_expand(args.body)
+            require('snippy').expand_snippet(args.body)
           end
         '';
       };
     };
 
-    plugins.tmux-navigator.enable = true;
+    plugins.zellij-nav.enable = true;
   };
-
 }
diff --git a/home-manager/users/sperrault.nix b/home-manager/users/sperrault.nix
index 39cf642..569a964 100644
--- a/home-manager/users/sperrault.nix
+++ b/home-manager/users/sperrault.nix
@@ -1,7 +1,6 @@
-{ nixpkgs-old-fish, ... }:
+{ ... }:
 {
   imports = [ ../default.nix ];
-  programs.fish.package = nixpkgs-old-fish.legacyPackages.aarch64-darwin.fish;
   home = {
     username = "sperrault";
     homeDirectory = "/Users/sperrault";
diff --git a/nix-darwin/default.nix b/nix-darwin/default.nix
index 7695e6d..b81731d 100644
--- a/nix-darwin/default.nix
+++ b/nix-darwin/default.nix
@@ -53,6 +53,8 @@
 
     brews = [
       "mas"
+      "openssl"
+      "wxwidgets"
     ];
 
     casks = [