Try linux:ep1 llm时代的linux版本答案 – nixos

1.why linux?
众所周知,笨人是个不折不扣的“Windows hater”。诚然Windows的兼容性有目共睹地优秀,但是繁杂的注册表,难用到极点的PowerShell都很让人感到劝退。所以笨人的开发、学习、娱乐(是的此应有我有一个叔叔.jpg)都在macos上这一个unix-like的系统上完成。得益于m系列芯片的强大cpu和不俗的gpu、unified memory提供地高速内存带宽、pcie4.0的高速ssd,笨人甚至在macos上用crossover+wine+d3dmetal的方案通关了包括但不限于荒野大镖客、2077、天国拯救2等等次世代游戏。其实这背后的功丞便是v社和wine社区,也是在那个时候第一次知道了Linux。其实当时是对Linux开源社区的维护者有一种中二病式地幻想,就好像看门狗里面的黑客,在手机上打开kali Linux(不兑手机上怎么用kali,emmm其实好像也行),动动手指,整个城市为ta关灯。
虽然上一段痛骂Windows,但不得不说,macos27beta的恶性bug一个不少,一些菜单栏应用会因为沙箱权限失效陷入不停写入快照的bug,再叠加electron阴影失效导致强制重绘,再又加上我外接的是160hz的显示器,cpu就被占用地几乎无法正常使用了,正巧笨人从古早笔记本中翻出了一条古早的nvme,于是就想要在雷电4硬盘盒上装一个Linux虚拟机,大不了还可以当docker用,于是便有了这篇blog。
2.why nixos?
linux有大量地发行版。笨人的vps上用的就是Ubuntu,想试试看新的os于是就首先排除了ta。在b站/YouTube上关于Linux的高播放量视频十有八九是关于Arch Linux的。但是由于是在外接的硬盘盒里,笨人并不敢轻举妄动,毕竟一个更新回滚就可能全盘皆输;同时,Arch的“宗教意味”有点过于浓厚了,笨人不是很喜欢这种氛围(在Arch CN社区经常能看到吵架的,但是隔壁nixCN社区大家总体会和谐很多)。
扯远了,个人认为nixos简直是为llm的时代量身打造的。agent现阶段所有生产力工作中最擅长地就是coding,而nixos的整个系统就是一份配置文件,可以说是“Everything is a file.“的完美体现,所有都可以在 ~/nixos-config 文件中完成。之后在任何设备上只要有这一个config文件我就能完美复现我的工作环境。不仅如此,nixos-rebuild switch 的每一个generation都可以像git一样一键回滚。(关于nixos的更多内容,非常推荐一个视频:【什么是“原子系统”?】 【什么是“原子系统”?】 )

当然nix并不是完美的,nix的学习曲线很陡峭;文档和隔壁Arch比要碎片化很多,中文文档约等于没有; 改一个很小的系统配置也要rebuild;为了实现快速回滚硬盘占用很高;nixpkg常年挤压一堆pr无人维护 ;nix表达式不能复现所以又引入了flake,而更新一次flake.lock等于所有的nixpkgs闭包换新,nix/store占用磁盘量暴涨,必须手动gc;falke和channel两套技术栈又有陈年悬案… 但笨人认为在ai大人面前这些都不是问题,一个人类不友好的系统可能恰恰是llm友好的,之前折腾所付出的精力和时间成本在现在这个时代可能只是几b的token罢了。
3.my nixos setup
正如前文所说,nix的所有系统设置就是一份configration.nix。可以直接在GitHub上找到我的nix配置:
GitHub - BUKOWSKIREAL/nixos-config · GitHub
我用的桌面是niri+noctalia+waybar,有常用的开发环境uv、cargo、zed(ide)、gcc。同时也对外接在硬盘盒里做了一些性能的调优:

zramSwap = {
enable = true;
algorithm = "zstd"; # 压缩比高
memoryPercent = 50; # 用一半内存做压缩交换区
priority = 100; # 高于 /swapfile(-2)
};
swapDevices = [ { device = "/swapfile"; size = 8192; } ]; # 8G 慢盘兜底 fileSystems."/".options = [ "noatime" ]; # 关掉访问时间更新,少写盘
# udev 规则:虚拟盘调度交给宿主,客户机不排队
KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
boot.tmp.useTmpfs = true; # /tmp 走内存(40%)nix的自动gc被限制在了3d,同时min-free=2g。如果有朋友想在移动硬盘上用虚拟机启动一个arrch64的nixos可以参考。
4.outro
这就是trylinux的ep1。很庆幸生活在这样一个llm的时代,让我这样一个笨蛋也能享受到折腾地快乐,同时技术和知识也不再被老登们垄断。接下来可能会继续深入nix的kernel。just have fun。
written by Bukowskiiiiii with deepseek