尝试 NixOS

trying nixos, a declarative linux distro

zping

nixoslinux

604 字

2025-04-08 23:13 +0000


这次装新机用专门开始尝试 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> 。否则就会报找不到解释器执行文件。肯定会有不少脚本折在这个地方。

当然,还有许多能讲的东西,不过这篇暂时先到这里。