{ pkgs }: { name = "create-zellij-session"; runtimeInputs = with pkgs; [ openssl zellij ]; text = '' function _execute_zellij_layout { local session_name="$1" local layout_file="$2" DIGEST="$(openssl sha512 "$layout_file")" # Prompt the first time we see a given layout file before running it. if ! grep -q "$DIGEST" ~/..zellij.digests 2> /dev/null; then cat "$layout_file" read -r -n 1 -p "Trust (and run) this Zellij file? (t = trust, otherwise = skip) " if [[ $REPLY =~ ^[Tt]$ ]]; then echo "$DIGEST" >> ~/..zellij.digests _attach_to_or_create_zellij_session --layout "$layout_file" fi else _attach_to_or_create_zellij_session --layout "$layout_file" fi } function _attach_to_or_create_zellij_session { zellij attach "$session_name" 2>/dev/null || zellij --session "$session_name" "$@" } function main { if [[ $# -eq 1 ]]; then selected_path=$1 else selected_path=$(find "$REPOS" "$REPOS/tfw" "$HOME/Documents" -maxdepth 1 -mindepth 1 -type d \ ! -name "*-old" \ ! -name "*.bak" \ ! -name "*.old" \ ! -name "_archive" \ | sort \ | fzf --reverse) fi session_name=$(basename "$selected_path") cd "$selected_path" if [[ -f ".ignored/dev.kdl" ]]; then _execute_zellij_layout "$session_name" ".ignored/dev.kdl" elif [[ -f "dev.kdl" ]]; then _execute_zellij_layout "$session_name" "dev.kdl" fi _attach_to_or_create_zellij_session } main "$@" ''; }