Stop the Nix profiles overriding mise's per-project pins

Contribution Date
Contribution Project
Contribution Details
Stop the Nix profiles overriding mise's per-project pins The PATH reordering added earlier broke every pinned project version. Inside ~/Code/work/aws-mgmt, terraform resolved to the global Nix 1.16.0 instead of the pinned 1.15.8; travel-rn got node 24 instead of 18; HealthSyncer got xcodegen 2.44.1 instead of 2.45.4; ~/damrs got rust 1.97.1 and pnpm 11 instead of its pinned 1.94.0 and 10. mise knew the right versions - `mise which terraform` reported 1.15.8 - but its tool directories sat behind the Nix profile entries, so command -v never reached them. This also explains why the hand-written entries existed at all: nothing was putting the Nix profiles on PATH, because nix-darwin only writes /etc/zshenv when its zsh integration is enabled. So Nix worked only by virtue of the very lines that broke mise. programs.zsh.enable puts the profiles in /etc/zshenv, which runs before the user's .zshrc, leaving mise free to prepend over them. .zshrc keeps its original array and stays hand-written and home-manager-linked. Homebrew still sits ahead of Nix in that array, which no longer matters: it is down to mas and zsh-autosuggestions and does not overlap the Nix package set. Earlier validation of this claimed the pins were fine. It checked `mise current`, which reports what the config declares, not what the shell resolves - a check that could not have caught this.
Contribution Author
Bassam Ismail
Files count
0
Patches count
1