{ pkgs }: { name = "t"; runtimeInputs = with pkgs; [ openssl tmux ]; text = '' # Credit to ThePrimeagen and Jess Archer. if [[ $# -eq 1 ]]; then SELECTED_PATH=$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_PATH=$(echo "''${items}" | fzf) fi SESSION_NAME=$(basename "''${SELECTED_PATH}" | sed 's/\./_/g') # Attach to an existing session, if one exists. if tmux has-session -t "''${SESSION_NAME}" 2> /dev/null; then tmux attach -t "''${SESSION_NAME}" || tmux switch-client -t "''${SESSION_NAME}" exit fi # TODO: support .ignored/.tmux if [[ -x "''${SELECTED_PATH}/.tmux" ]]; then DIGEST="$(openssl sha512 "''${SELECTED_PATH}/.tmux")" # Prompt the first time we see a given .tmux file before running it. if ! grep -q "''${DIGEST}" ~/..tmux.digests 2> /dev/null; then cat "''${SELECTED_PATH}/.tmux" read -r -n 1 -p "Trust (and run) this .tmux file? (t = trust, otherwise = skip) " if [[ $REPLY =~ ^[Tt]$ ]]; then echo "''${DIGEST}" >> ~/..tmux.digests # Create a new session and run the .tmux script. tmux new-session -d -c "''${SELECTED_PATH}" -s "''${SESSION_NAME}" (cd "''${SELECTED_PATH}" && "''${SELECTED_PATH}/.tmux" "''${SESSION_NAME}") fi else # Create a new session and run the .tmux script. tmux new-session -d -c "''${SELECTED_PATH}" -s "''${SESSION_NAME}" (cd "''${SELECTED_PATH}" && "''${SELECTED_PATH}/.tmux" "''${SESSION_NAME}") fi fi # If there is no session, create one. if ! tmux has-session -t "''${SESSION_NAME}" 2> /dev/null; then tmux new-session -d -c "''${SELECTED_PATH}" -s "''${SESSION_NAME}" fi tmux switch-client -t "''${SESSION_NAME}" || tmux attach-session -t "''${SESSION_NAME}" ''; }