From 76299b87bdadf201b5512f0ea6d15a70443928cb Mon Sep 17 00:00:00 2001 From: dawn Date: Sun, 5 Jul 2026 22:28:15 +0300 Subject: [PATCH] shuttle: set XDG_CACHE_HOME to while running user steps prevent the service level one from leaking into the steps Signed-off-by: dawn --- shuttle/src/exec.rs | 5 +++++ spindle/engines/microvm/test-spindle-microvm.sh | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/shuttle/src/exec.rs b/shuttle/src/exec.rs index 93a1f699..b1868444 100644 --- a/shuttle/src/exec.rs +++ b/shuttle/src/exec.rs @@ -125,10 +125,15 @@ struct ResolvedUser { impl ResolvedUser { fn login_env(&self) -> Vec<(OsString, OsString)> { + let xdg_cache_home = PathBuf::from(&self.home).join(".cache"); vec![ (OsString::from("USER"), OsString::from(&self.name)), (OsString::from("LOGNAME"), OsString::from(&self.name)), (OsString::from("HOME"), self.home.clone()), + ( + OsString::from("XDG_CACHE_HOME"), + xdg_cache_home.into_os_string(), + ), (OsString::from("SHELL"), self.shell.clone()), ] } diff --git a/spindle/engines/microvm/test-spindle-microvm.sh b/spindle/engines/microvm/test-spindle-microvm.sh index 49170e6e..57dd6e30 100755 --- a/spindle/engines/microvm/test-spindle-microvm.sh +++ b/spindle/engines/microvm/test-spindle-microvm.sh @@ -643,6 +643,9 @@ test_activation_dependencies() { env_file=/run/spindle/devshell-env.sh [ -f "$env_file" ] && echo "env_file=present" || echo "env_file=missing" echo "shuttle_env=$(systemctl show shuttle -p Environment --value)" +echo "step_xdg_cache_home=${XDG_CACHE_HOME:-unset}" +mkdir -p "$XDG_CACHE_HOME/go-build" +[ -w "$XDG_CACHE_HOME/go-build" ] && echo "go_build_cache_writable=yes" if [ -d /var/cache/shuttle ] && [ "$(stat -c %d /var/cache/shuttle)" = "$(stat -c %d /workspace)" ]; then echo "shuttle_cache_on_persist=yes" else @@ -684,6 +687,7 @@ echo "hello=$(hello)" check_needles "$out" \ "env_file=present" "shuttle_env=.*XDG_CACHE_HOME=/var/cache/shuttle" \ + "step_xdg_cache_home=/workspace/.cache" "go_build_cache_writable=yes" \ "shuttle_cache_on_persist=yes" "shuttle_nix_cache_written=yes" \ "pkgconfig=[0-9]" "openssl_found=yes" "openssl_version=[0-9]" \ "dev_headers=found" "hello=Hello, world!" || return 1 @@ -697,6 +701,7 @@ echo "hello=$(hello)" check_needles "$out" \ "realizing cached NixOS config" \ "env_file=present" "shuttle_env=.*XDG_CACHE_HOME=/var/cache/shuttle" \ + "step_xdg_cache_home=/workspace/.cache" "go_build_cache_writable=yes" \ "shuttle_cache_on_persist=yes" "pkgconfig=[0-9]" "openssl_found=yes" \ "openssl_version=[0-9]" "dev_headers=found" "hello=Hello, world!" || return 1 echo "success: cache-hit run re-read the devshell env from the cached profile (no drv) and all deps resolved" -- 2.51.2