最近我一直在学习 Nix。起初我的印象并不好:它能提供哪些 Docker 无法提供的东西?然后我走向了另一个极端:现在我到处都能看到它的用处。
我有一个 dotfiles 仓库,用来设置我的环境。其中一部分是我的 neovim 配置。这些年来,我不断向其中添加各种东西:插件、键位映射、语言服务器,以及一些自定义配置。
尽管 dotfiles 应该安装好一切,但 neovim 在初次使用时总是出问题,我需要修复它。这是因为它使用了很多不同的组件:
- Vim plug 安装插件的当前版本
- Mason 安装语言服务器
- 插件需要工具,例如 Telescope 需要 ripgrep,gitsigns 需要 git
Nix 在这里的承诺是,我可以获得一个可靠地包含 nvim 所需一切的二进制文件。它管理插件、语言服务器、编译器以及插件所需的所有其他工具。
我一开始有点害怕着手做这件事,因为有一些恐怖故事,即使是更熟悉 Nix 的人也失败了。但在过去的几周里,我有一些空闲时间,于是决定尝试。
结果:我拥有了一个可工作的 nvim 配置,并且已经在日常工作中使用它了。令人惊讶的是,它比预期的要容易得多:我使用的所有插件在 Nixpkgs 中都有。
有了这个,我可以执行 nix-build,然后使用 result/bin/nvim 启动。我在 shell 中为其设置了别名,所以 nvim 命令也能用。
作为一个额外的好处,我可以用它来配置 Landlock。默认情况下,它只能访问当前目录、几个额外的文件,并且不能访问互联网。这应该能限制各种插件和工具可能造成的损害。
到目前为止,我对此很满意。