diff --git a/bin/tmux-sessioniser b/bin/tmux-sessioniser
index 62d4abb8..806f83d9 100755
--- a/bin/tmux-sessioniser
+++ b/bin/tmux-sessioniser
@@ -11,7 +11,7 @@ if [[ $# -eq 1 ]]; then
 else
   # Get the session name from fuzzy-finding list of directories and generating a
   # tmux-safe version.
-  selected=$(find ~/ ~/Code ~/Code/clients ~/Code/os ~/Code/Personal ~/Documents/Books ~/Documents/Talks/ -mindepth 1 -maxdepth 1 -type d -not -name ".*" | sort | fzf)
+  selected=$(zoxide query -l | sort | fzf --reverse)
 fi
 
 if [[ -z $selected ]]; then
diff --git a/nixpkgs/home-manager/modules/common.nix b/nixpkgs/home-manager/modules/common.nix
index 762b9071..25e8d3e1 100644
--- a/nixpkgs/home-manager/modules/common.nix
+++ b/nixpkgs/home-manager/modules/common.nix
@@ -28,6 +28,7 @@
     tree
     unzip
     wget
+    zoxide
 
     # LSP
     # TODO: nodePackages."@ansible/ansible-language-server"
@@ -116,6 +117,15 @@
     ];
   };
 
+  home.sessionPath = [
+    "$HOME/.config/bin"
+  ];
+
+  xdg.configFile.bin = {
+    source = ../../../bin;
+    recursive = true;
+  };
+
   xdg.configFile.nvim = {
     source = ../../../config/neovim;
     recursive = true;
diff --git a/nixpkgs/home-manager/modules/zsh.nix b/nixpkgs/home-manager/modules/zsh.nix
index 6ceb41d5..5390a88b 100644
--- a/nixpkgs/home-manager/modules/zsh.nix
+++ b/nixpkgs/home-manager/modules/zsh.nix
@@ -13,18 +13,13 @@
       update = "fetch && rebase";
     };
 
-    autocd = true;
-    cdpath = [
-      "$HOME/Code"
-      "$HOME/Code/*"
-      "$HOME"
-    ];
-
     initExtra = ''
       if [ -f ~/.config/zsh/.p10k.zsh ]; then
         . ~/.config/zsh/.p10k.zsh
       fi
 
+      eval "$(zoxide init zsh)"
+
       # Case insensitive autocompletion.
       zstyle ":completion:*" matcher-list "" "m:{a-zA-Z}={A-Za-z}" "r:|=*" "l:|=* r:|=*"
       autoload -Uz compinit && compinit