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 Issue Link
Files count
0
Patches count
1