大家好!最近我发现身边越来越多的人开始讨论 Nix 了。作为一个技术小白,虽然在写代码方面涉猎不多,但在日常使用中,我深深感受到 macOS 下 HomeBrew 作为 package manager 的种种不便。
于是,我决定尝试一下 Nix 来进行包管理!迈出了技术小白的一大步!
我使用的机器是 Mac mini M1,相信同类型苹果硅的机器也可以参考我的经验。网上关于 macOS 安装 Nix 的中文内容实在是太少了,所以我决定写一些自己的经验,希望能帮助到更多的小伙伴!
更换 zsh
为 bash
在 macOS 下,默认使用的是 zsh
,这里我建议首先更换为bash
,更换的方式有两种:
- 在“终端(TERMINAL)”内执行
chsh -s /bin/bash
,执行完成后关闭终端重新打开,就可以看到成功更改。 - 打开“系统设置”-“用户与群组”-在“管理员”的用户上右键-“高级选项”-“登陆shell”,更换为
/bin/bash
安装 Nix: the package manager
接下来,我们来安装 Nix: the package manager (MacOS)
sh <(curl -L https://nixos.org/nix/install)
在安装过程中,作为一个自动化脚本,它会详细告诉你它都做了些什么,非常贴心!如果你不放心自动化脚本,可以仔细看一下输出,来判断是否接受。
安装完毕后,请关闭终端再打开!
重新打开终端后,通过以下命令测试是否安装成功:
nix-shell --version
成功的话会返回版本号。
如果安装失败,或者你想重新安装 Nix,请重新执行安装脚本。根据它输出的内容,需要你删除/备份后删除 /etc/bashrc
和 /etc/bashrc.backup-before-nix
rm /etc/bashrc /etc/bashrc.backup-before-nix
之后再重新执行安装脚本。
那么,欢迎你正式进入到 Nix 的大家庭!
这里我简单介绍两种使用方式。
- 如果你想将包安装到实际的当前用户使用环境中,请使用
nix-env
,例如我要安装python3
:
nix-env -iA nixpkgs.python3
- 如果你只是想在临时环境中测试一下要使用的包(退出
nix-shell
则无法使用),请使用nix-shell
,例如我要使用python3
:
nix-shell -p python3
成功的话会输出:
[nix-shell:~]$
一些常用命令:
- 升级实际用户使用的包可以使用:
nix-env --upgrade
- 清理不再需要的包(应该是会清理那些你在
nix-shell
里面拉的包):
nix-collect-garbage -d
- 查看已经安装的包列表:
nix-env --query --installed
- 卸载你不需要的包:
nix-env --uninstall <package-name>
使用 Nix Flakes
Nix Flakes 是 Nix 的一个新特性,它提供了一种更现代化和模块化的方式来管理 Nix 包。以下是启用和使用 Nix Flakes 的步骤:
启用 Nix Flakes
首先,需要在 Nix 配置中启用 Flakes 支持。编辑或创建 ~/.config/nix
文件,并添加以下内容:
mkdir ~/.config/nix
echo "experimental-features = nix-command flakes" > ~/.config/nix/nix.conf
使用 nix profile
启用 Flakes 后,可以使用 nix profile
命令来管理包。例如,安装 hello
包:
nix profile install nixpkgs#hello
这将 hello
包安装到当前用户的环境中。
要查看已安装的包,可以使用以下命令:
nix profile list
要卸载已安装的包,可以使用以下命令:
nix profile remove nixpkgs#hello
通过这些命令,你可以方便地管理使用 Nix Flakes 安装的包。
查找想要安装的包可以在 search.nixos.org 里找到你所需要的东西。
参考链接:
https://www.howtogeek.com/444596/how-to-change-the-default-shell-to-bash-in-macos-catalina/