From 7864673dcb94f5b37230959e20f73f3f2b89f596 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Mon, 26 Jan 2026 10:27:57 -0600 Subject: [PATCH] Use QVM_BIN_DIR fallback for script paths and set in flake --- bin/qvm-clean | 3 +-- bin/qvm-reset | 3 +-- bin/qvm-run | 12 ++++++------ bin/qvm-ssh | 2 +- bin/qvm-start | 4 ++-- flake.nix | 3 ++- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/bin/qvm-clean b/bin/qvm-clean index a7786a8..0bdf84d 100755 --- a/bin/qvm-clean +++ b/bin/qvm-clean @@ -21,8 +21,7 @@ readonly QVM_LIB_DIR="${QVM_LIB_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../lib source "${QVM_LIB_DIR}/common.sh" # Get path to qvm-stop script -readonly QVM_BIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -readonly QVM_STOP="${QVM_BIN_DIR}/qvm-stop" +readonly QVM_STOP="${QVM_BIN_DIR:-$(dirname "$0")}/qvm-stop" # # confirm_clean - Prompt user for confirmation diff --git a/bin/qvm-reset b/bin/qvm-reset index 434bd82..8025ced 100755 --- a/bin/qvm-reset +++ b/bin/qvm-reset @@ -20,8 +20,7 @@ readonly QVM_LIB_DIR="${QVM_LIB_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../lib source "${QVM_LIB_DIR}/common.sh" # Get path to qvm-stop script -readonly QVM_BIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -readonly QVM_STOP="${QVM_BIN_DIR}/qvm-stop" +readonly QVM_STOP="${QVM_BIN_DIR:-$(dirname "$0")}/qvm-stop" # # confirm_reset - Prompt user for confirmation diff --git a/bin/qvm-run b/bin/qvm-run index e7c6da2..962ed06 100755 --- a/bin/qvm-run +++ b/bin/qvm-run @@ -159,6 +159,9 @@ main() { exit 0 fi + # Ensure directories exist before accessing workspaces.json + ensure_dirs + # If no command given, default to interactive zsh shell local run_shell=false if [[ $# -eq 0 ]]; then @@ -188,10 +191,8 @@ main() { if [[ "$newly_added" -eq 1 ]] && is_vm_running; then log_info "New workspace registered. Restarting VM to mount it..." - # Path to qvm-stop and qvm-start scripts - local script_dir="${QVM_LIB_DIR}/../bin" - local qvm_stop="$script_dir/qvm-stop" - local qvm_start="$script_dir/qvm-start" + local qvm_stop="${QVM_BIN_DIR:-$(dirname "$0")}/qvm-stop" + local qvm_start="${QVM_BIN_DIR:-$(dirname "$0")}/qvm-start" # Stop the VM if ! "$qvm_stop"; then @@ -210,8 +211,7 @@ main() { if ! is_vm_running; then log_info "VM not running, starting..." - # Path to qvm-start script - local qvm_start="${QVM_LIB_DIR}/../bin/qvm-start" + local qvm_start="${QVM_BIN_DIR:-$(dirname "$0")}/qvm-start" if ! "$qvm_start"; then die "Failed to start VM" diff --git a/bin/qvm-ssh b/bin/qvm-ssh index 4489657..458debc 100755 --- a/bin/qvm-ssh +++ b/bin/qvm-ssh @@ -78,7 +78,7 @@ main() { # Ensure VM is running (auto-start if needed) if ! is_vm_running; then log_info "VM is not running, starting it..." - "$QVM_LIB_DIR/../bin/qvm-start" + " "${QVM_BIN_DIR:-$(dirname "$0")}/qvm-start"" fi # Get SSH port diff --git a/bin/qvm-start b/bin/qvm-start index 0a5b712..f926ea7 100755 --- a/bin/qvm-start +++ b/bin/qvm-start @@ -130,8 +130,8 @@ main() { log_info "First run detected - building VM..." log_info "This may take several minutes." - SCRIPT_DIR="$(dirname "$0")" - if ! "$SCRIPT_DIR/qvm-rebuild"; then + local qvm_rebuild="${QVM_BIN_DIR:-$(dirname "$0")}/qvm-rebuild" + if ! "$qvm_rebuild"; then die "Failed to build VM. Run 'qvm rebuild' manually to debug." fi fi diff --git a/flake.nix b/flake.nix index 880e023..f2d0c72 100644 --- a/flake.nix +++ b/flake.nix @@ -109,7 +109,8 @@ pkgs.sshpass ] } \ - --set QVM_LIB_DIR "$out/lib/qvm" + --set QVM_LIB_DIR "$out/lib/qvm" \ + --set QVM_BIN_DIR "$out/bin" done runHook postInstall