评价一下基于nix的linux发行版本nixos。

我大概一个月之前从用了5年多的archlinux切换成nixos,作为我的日常系统,使用之后我认为nixos有如下几个优点:

  1. 只要你坚持只通过修改/etc/nixos/里的nix文件来配置系统,那么整个系统的状态就是历史无关的。比如说,如果发现做了某个修改之后系统崩了(其实很少见,我貌似还没遇到过),只要改回去,就能还原到之前可以运行的状态
  2. 重装系统方便,只要备份/etc/nixos下的配置文件就能还原回一个一样的nixos,同理批量安装方便。
  3. 系统干净,不用担心随着使用时间的增加,旧的遗留的配置文件像垃圾一样塞得到处都是。没错,我说的就是archlinux的pacnew和pacsave。
  4. 由于系统状态的历史无关性,所以如果遇到什么问题,只需要提交/etc/nixos下的nix文件,别人就能知道你的系统状态,从而更容易获得帮助。

如果说nixos有什么缺点的话,那么如下几点是我认为需要改进:

  1. 对于假设了标准文件目录结构的软件,特别是闭源软件不够友好,当然有patchelf可以用,但是并不是所有问题都能解决的
  2. wps在nixos上处于半残废状态,wps组件中的wpp(做ppt的)一放映ppt就崩溃
  3. VirtualBox的extension pack需要编译才能安装,编译时间长达一个小时
  4. 在我的hp 工作站上运行不正常,可以安装,但是一upgrade就无法再成功启动(尽管如此,upgrade之前的那个snapshot仍然在,所以可以在grub中切回原来的snapshot从而正常启动)。
  5. 编程的时候,系统中安装的库并不会自动可用,必须显式声名才行(比如写一个default.nix,并启动一个nix-shell环境),这算是伴随环境隔离带来的代价吧,习惯了的话并不算是一个太大的缺点。
  6. 如果版本库中没有某一个软件,需要自定义安装的话比较麻烦,需要熟悉nix语言和nix的工作方式,这倒也不算是很大的问题,习惯就好。

以上是系统本身的评价,对于nix社区,我认为还是非常友好的。体现在如下几个方面:

  1. discourse上回答问题比较快,有开发人员参与,发现的bug经常能得到比较快的修复
  2. 更新比较频繁,基本上当前稳定版本和stable 每隔几天都会有更新,从中可见开发比较活跃。

总体而言,对于有精力和乐于折腾的人来说,nixos是值得推荐的,使用体验和archlinux类似。