diff --git a/.remoteenv b/.remoteenv
index 56147a2..8784f2e 100644
--- a/.remoteenv
+++ b/.remoteenv
@@ -6,8 +6,18 @@ flake_shell=.#remoteenv
 if [[ ! -f /run/current-system/nixos-version ]]; then
   flake_shell+=-fhs
 fi
-eval "$(nix print-dev-env "$flake_shell")"
-unset flake_shell
+
+# `test A -nt B` deferences symlinks
+t1=$(stat --format=%Z flake.nix  2>/dev/null || printf 0)
+t2=$(stat --format=%Z flake.lock  2>/dev/null || printf 0)
+t3=$(stat --format=%Z .direnv/flake-remote-devshell-profile  2>/dev/null || printf 0)
+if [[ "$t1" -gt "$t3" || "$t2" -gt "$t3" ]]; then
+  mkdir -p .direnv/
+  eval "$(nix --extra-experimental-features "nix-command flakes" print-dev-env --profile ".direnv/flake-remote-devshell-profile" "$flake_shell")"
+else
+  eval "$(nix --extra-experimental-features "nix-command flakes" print-dev-env ".direnv/flake-remote-devshell-profile")"
+fi
+unset t1 t2 t3 flake_shell
 
 echo Entered "$(hostname --fqdn)"
 df -h /nix/store