diff --git a/nix/packages/by-name/tmux-sessionizer/package.nix b/nix/packages/by-name/tmux-sessionizer/package.nix index 121ee8db..90a99068 100644 --- a/nix/packages/by-name/tmux-sessionizer/package.nix +++ b/nix/packages/by-name/tmux-sessionizer/package.nix @@ -1,6 +1,7 @@ { writeShellApplication, tmux, + procps, symlinkJoin, }: let tmux-register-session = writeShellApplication { @@ -14,10 +15,24 @@ fi ''; }; + + tmux-maybe-create = writeShellApplication { + name = "__tmux-maybe-create"; + runtimeInputs = [procps tmux]; + text = '' + session_name="$1" + session_dir="$2" + + if ! pgrep tmux >/dev/null 2>&1 || ! tmux has -t="$session_name" 2>/dev/null; then + tmux new-session -ds "$session_name" -c "$session_dir" + fi + ''; + }; in symlinkJoin { name = "tmux-sessionizer"; paths = [ tmux-register-session + tmux-maybe-create ]; }