有时候在vscode、terminal里面如果用了写了 default.nix
或者 shell.nix
。普通的做法是手动 nix-shell
进入到对应的环境里面,但是可以有更加自动化的方法
先装一个
ubuntu里面可以用 apt install direnv
来安装,nixos里面需要把这个放到 systemPackages 里面去
官方文档:https://direnv.net/docs/hook.html
需要在自己的shell里面添加direnv激活的代码,对于fish来说是在 ~/.config/fish/config.fish
下面添加
function __direnv_export_eval --on-event fish_postexec
if command -v direnv &>/dev/null
command direnv export fish | source
end
end
__direnv_export_eval
这个里面相比起官方文档,会先检查direnv这个命令是否存在,如果存在的话才会调用它
在 ~/.bashrc
下面添加
eval "$(direnv hook bash)"
在 ~/.zshrc
下面添加
eval "$(direnv hook zsh)"
在 default.nix
的同一级目录下面写一个 .envrc
内容是