尝试 NixOS
这次装新机用专门开始尝试 NixOS
。总体上说 NixOS
的文档相对不太丰富。而且 NixOS
一上来选择也过多,很容易诱发选择困难症。我这次体验下来,最大的感受就是新手应当先在自己熟悉的发行版下从 home-manager
开始,先搞清楚 nix
语言和其包管理器这些的基本概念,最后再选 NixOS
。
举两个我自己感到困惑的地方。我是在 NixOS
安装好以后,才发现它目前的默认并不能锁定软件包的版本,查了以后我才发现可以锁定版本的功能还处于实验阶段。需要专门开启 flakes
,如果是从头安装,需要使用 Determinate Nix Installer
,这样 nix
文件语法也是不一样的。
另一个是在安装配置 home-manager
过程中。这里其实有两个选项,一个作为 NixOS
下的模块;另一个是独立部署(standalone)的 home-manager
。我当然是选 NixOS
模块。只是这里目前的官方文档并没有提到说需要在 /etc/nixos/configuration.nix
导入 home.nix
文件,同时也没有给出样例。当然它还有一个官方百科,那个页面对这个问题进行的描述。
我先试了 home-manager
的模块部署,最后还是觉得独立部署更合适一点。主要是新的桌面要熟悉,需要大量的调试直接用 nixos-rebuild
命令,不如 home-manager
命令来得方便。
依个人的理解, NixOS
本身是通过各类链接和补丁缝合起来的。对于这种系统,执行文件所在的目录非常关系。作为中文用户,理解这个知识最直接的方法就是分析 /run/current-system/sw/bin/fcitx5
和 ${pkgs.fcitx5}/bin/fcitx5
关系。
关于这个,最有冲击的一点可能是脚本语言解释器的路径问题。=NixOS=中不存在 /bin/bash
。脚本首行 Shebang
就只能写在成 #!/usr/bin/env <interpreter>
而不是 #!/usr/bin/<interpreter>
。否则就会报找不到解释器执行文件。肯定会有不少脚本折在这个地方。
当然,还有许多能讲的东西,不过这篇暂时先到这里。