These aliases help to check the PATH variables. There may be a better way.
# run with `env | pathtr` or `env | covia`
alias pathtr='tr ":" "\n"' # splits .*_PATH variables onto multiple lines
alias covia='sed -e "s/:/\n:\t/g"' # same as `pathtr`, but indents lines
These filter environment variables
# run `env | nenvia` to show all variables that don't end with PATH
alias envia='grep -e '\''^[A-Za-z0-9_]*PATH='\'' | sort | uniq'
alias nenvia='grep -ve '\''^[A-Za-z0-9_]*PATH='\'' | sort | uniq'
These diff environments. So for systemd-based distributions like NixOS, I can run systemctl --user show-environment | diffia and check for how that’s different from what’s in hyprland,
# this diffs .*PATH variables
alias diffia='envia | covia | diff - <(env | envia | covia)'
# difnia will check other environment variables
alias difnia='nenvia | diff - <(env | nenvia)'
On Guix, running this will highlight how the environment was modified.
export t=$(mktemp)
env > $t # save current env to a temp file
guix shell qttools # enter a guix shell
echo $GUIX_ENVIRONMENT # /gnu/store/j7l2znwpcl0npadddydgdd52dr10sl1r-profile
cat $t | diffia
And that shows that PATH has $GUIX_ENVIRONMENT/bin
36a37
> : /gnu/store/drapg7ap0g0n2hilibvrp9snhplrb0zx-glibc-utf8-locales-2.41/lib/locale
94c95,96
< PATH=/home/dc/.local/share/mise/installs/node/latest/bin
---
> PATH=/gnu/store/j7l2znwpcl0npadddydgdd52dr10sl1r-profile/bin
> : /home/dc/.local/share/mise/installs/node/latest/bin
Moving from Arch to Guix to NixOS has been a bit rough for me. Most distributions set this stuff up slightly differently.