From e61242e51adbd04d95e70a5a5c01a772ee65e853 Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver@oliverdavies.dev>
Date: Sat, 15 Jun 2024 12:17:07 +0100
Subject: [PATCH] Create the `t` script with nix

---
 bin/t                                | 41 -------------------------
 lib/shared/home-manager-packages.nix | 45 ++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+), 41 deletions(-)
 delete mode 100755 bin/t

diff --git a/bin/t b/bin/t
deleted file mode 100755
index 42667e28..00000000
--- a/bin/t
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env bash
-
-# Credit to ThePrimeagen.
-
-set -o nounset
-set -o pipefail
-
-if [[ $# -eq 1 ]]; then
-  selected=$1
-else
-  # Get the session name from fuzzy-finding list of directories and generating a
-  # tmux-safe version.
-
-  items=$(find ~/Code/* ~/Code ~ ~/Documents /tmp \
-    -maxdepth 1 -mindepth 1 -type d \
-    ! -name "*-old" \
-    ! -name "*.old"
-  )
-
-  selected=$(echo "${items}" | fzf)
-fi
-
-if [[ -z "${selected}" ]]; then
-  exit 0
-fi
-
-session_name=$(basename "${selected}" | sed 's/\./_/g')
-session_path="${selected}"
-
-# Git worktrees.
-if [[ -e "${selected}/main" ]]; then
-  session_path="${selected}/main"
-fi
-
-if tmux has-session -t "${session_name}" 2> /dev/null; then
-  tmux attach -t "${session_name}"
-fi
-
-tmux new-session -d -s "${session_name}" -c "${session_path}"
-
-tmux switch-client -t "${session_name}" || tmux attach -t "${session_name}"
diff --git a/lib/shared/home-manager-packages.nix b/lib/shared/home-manager-packages.nix
index 952a0ea0..d3e57a7f 100644
--- a/lib/shared/home-manager-packages.nix
+++ b/lib/shared/home-manager-packages.nix
@@ -2,9 +2,54 @@
 let
   php = pkgs.php82;
   phpPackages = pkgs.php82Packages;
+
+  inherit (pkgs) writeShellScriptBin;
+
+  script-t = writeShellScriptBin "t" ''
+    # Credit to ThePrimeagen.
+
+    set -o nounset
+    set -o pipefail
+
+    if [[ $# -eq 1 ]]; then
+      selected=$1
+    else
+      # Get the session name from fuzzy-finding list of directories and generating a
+      # tmux-safe version.
+      items=$(find ~/Code/* ~/Code ~ ~/Documents /tmp \
+        -maxdepth 1 -mindepth 1 -type d \
+        ! -name "*-old" \
+        ! -name "*.old"
+      )
+
+      selected=$(echo "''${items}" | fzf)
+    fi
+
+    if [[ -z "''${selected}" ]]; then
+      exit 0
+    fi
+
+    session_name=$(basename "''${selected}" | sed 's/\./_/g')
+    session_path="''${selected}"
+
+    # Git worktrees.
+    if [[ -e "''${selected}/main" ]]; then
+      session_path="''${selected}/main"
+    fi
+
+    if tmux has-session -t "''${session_name}" 2> /dev/null; then
+      tmux attach -t "''${session_name}"
+    fi
+
+    tmux new-session -d -s "''${session_name}" -c "''${session_path}"
+
+    tmux switch-client -t "''${session_name}" || tmux attach -t "''${session_name}"
+  '';
 in
 with pkgs;
 [
+  script-t
+
   inputs.build-configs.packages.${pkgs.system}.default
 
   awscli2