Context: @z-mitchell.bsky.social on Bluesky
iTerm zsh from ~
antti@harju ~ % flox --version
1.3.8
antti@harju ~ % echo $FLOX_ENV
/Users/antti/.flox/run/aarch64-darwin.default.run
antti@harju ~ % which git
/Users/antti/.flox/run/aarch64-darwin.default.run/bin/git
antti@harju ~ % echo $PATH
/Users/antti/.flox/run/aarch64-darwin.default.run/bin:/Users/antti/.flox/run/aarch64-darwin.default.run/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Applications/iTerm.app/Contents/Resources/utilities
antti@harju ~ % code tmp
VS Code integrated terminal (also zsh)
antti@harju tmp % flox --version
1.3.8
antti@harju tmp % echo $FLOX_ENV
/Users/antti/.flox/run/aarch64-darwin.default.run
antti@harju tmp % which git
/usr/bin/git
antti@harju tmp % echo $PATH
/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Users/antti/.flox/run/aarch64-darwin.default.run/bin:/Users/antti/.flox/run/aarch64-darwin.default.run/sbin:/Applications/iTerm.app/Contents/Resources/utilities:/Users/antti/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand
antti@harju tmp % cat ~/.zshrc
eval "$(flox activate -m run -d ~)"
antti@harju tmp % cat ~/.zprofile
eval "$(flox activate -m run -d ~)"
antti@harju tmp % flox activate -d ~
❌ ERROR: Environment 'default' is already active
Happens the same way on two different macs.
Goal is to replace homebrew with flox.
I’m expecting default env to be on or off, now it seems to be in a halfway mode where it’s active but executing git doesn’t call the one installed by flox. In other words I can’t activate the environment or use the git installed in it
zsh/flox config should be as instructed under initial setup here The default environment - Flox Docs
It looks like VS Code does a couple of weird things to your shell when using the integrated terminal. Could you try disabling these settings one at a time?
I tried disabling the following settings
"terminal.integrated.enablePersistentSessions": false,
"terminal.integrated.persistentSessionReviveProcess": "never",
"terminal.integrated.inheritEnv": false,
"terminal.integrated.shellIntegration.enabled": false,
"terminal.integrated.shellIntegration.showCommandGuide": false,
"terminal.integrated.allowChords": false,
"terminal.integrated.detectLocale": "off",
"terminal.integrated.suggest.quickSuggestions": false,
"terminal.integrated.suggest.suggestOnTriggerCharacters": false,
"terminal.integrated.shellIntegration.decorationsEnabled": "never",
"terminal.integrated.initialHint": false
And the issue persists. Are you able to reproduce?
I tried Googling the issue again and found conda - PATH variable in Visual Studio Code different from Terminal on Mac - Stack Overflow which points to Where PATHs come from – Scripting OS X
which explains
Imagine you are pre- pending ~/bin
to your PATH
because you want to override some standard tools with your own. (Dangerous, but let’s assume you know what you are doing.) Then some process launches a subshell which can call path_helper
again. path_helper
will ‘find’ your additions to the defined PATH
, but it will append to the list of default paths from /etc/paths
and /etc/paths.d
, changing your order and thus which tools will be used.
A better way to override built-in commands which is not affected by path_helper
would be to use bash
aliases or functions in your profile.
I hope the above is relevant or helpful, I’m out of my depth here.
Hi @anttiharju,
Apologies for the extended [holiday] delay getting back to you, and many thanks for the bug report! We’ve seen a few PATH-related issues with 1.3.8 and have been working on a fix in PR2552.
Would it be possible for you to try again with the following flox
version, created from the above PR? There are a few ways to do this, but I suspect the easiest/quickest would be to run the following commands:
nix copy --extra-experimental-features nix-command --from https://cache.flox.dev /nix/store/b1ci4l9j3wdw0pca24xpz9mwaspsfzy4-flox-1.3.8
sudo mv /usr/local/bin/flox /usr/local/bin/flox.orig
sudo ln -s /nix/store/b1ci4l9j3wdw0pca24xpz9mwaspsfzy4-flox-1.3.8/bin/flox /usr/local/bin/flox
Important: following the above you’ll need to make a trivial (whitespace in hook or package addition/removal) change to your default environment with flox edit -d ~
and then fully log out of all shells and VScode sessions before trying again. This should get you using the correct version of git
from within VScode - please let us know!
And if for whatever reason you encounter problems with this new version you can of course back it out with sudo mv -f /usr/local/bin/flox.orig /usr/local/bin/flox
.
Again, many thanks for the feedback and for using Flox!