LnL7 / nix-darwin

nix modules for darwin
MIT License
2.84k stars 432 forks source link

Environment shell aliases #886

Open alecandido opened 7 months ago

alecandido commented 7 months ago

The content of environment.shellAliases is treated in a (at least) inconsistent way.

For Bash, it ends up in /etc/bashrc: https://github.com/LnL7/nix-darwin/blob/bbde06bed1b72eddff063fa42f18644e90a0121e/modules/programs/bash/default.nix#L48-L71 while for ZSH, it's put in /etc/zprofile: https://github.com/LnL7/nix-darwin/blob/bbde06bed1b72eddff063fa42f18644e90a0121e/modules/programs/zsh/default.nix#L146-L155 (for both, only first and last lines are relevant)

Personally, I spend most of the time in a non-login shell, so it is a bit annoying to not have aliases defined there. However, I'm not sure what is the most suitable recommendation, and whether you could abuse(?) zshenv for this purpose. But I'm pretty sure it would make sense to have it consistent on the two shells.

alecandido commented 7 months ago

Btw, in NixOS the aliases are actually set in /etc/zshrc.

https://github.com/NixOS/nixpkgs/blob/fcea2b6260dd566c28c894b4207a5f2b56c2cba3/nixos/modules/programs/zsh/zsh.nix#L279-L280

madsbv commented 5 months ago

Note that Home-Manager also sets aliases in the user's zshrc: https://github.com/nix-community/home-manager/blob/bfa7c06436771e3a0c666ccc6ee01e815d4c33aa/modules/programs/zsh.nix#L666

Personally, this caused quite a bit of confusion for me since Zellij seems to launch shells as interactive, non-login shells, so Home-Manager defined aliases worked as expected but Nix-Darwin defined aliases did not.

I think it makes semantically more sense to put aliases in zshrc, and that would bring consistency with NixOS and Home-Manager as well.