好几年前就听说过 Nix ,用 DSL 来管理系统依赖,还能随时回滚到任一历史状态。 虽然听着很牛,但是不仅要多学一门语言,装个包还得写代码,当时觉得太麻烦就没研究。 但是最近搞系统迁移遇到两件麻烦事,使我决定尝试下 Nix.
第一件事是在新组装的 PC 主机上安装 EndeavourOS ( Arch Linux 的一个衍生发行版),因为旧系统也是 EndeavourOS 系统,安装完为了省事,我就直接把旧电脑的 Home 目录 rsync 同步到了新 PC 上。 这一同步就出了问题,所有功能都工作正常,但是视频播放老是卡住,firefox/chrome/mpv 都会卡住,网上找各种资料都没解决,还是我灵光一闪想到是不是 Home 目录同步的锅,清空了 Home 目录,问题立马就解决了…后面又花好长时间从旧电脑一点点恢复 Home 目录下的东西。
第二件事是,想尝鲜 wayland ,把桌面从 i3wm 换成了 sway ,但是因为用起来区别不明显,再加上诸多不便( hidpi 、sway 配置调优要花时间精力,另外我用的是 sway 官方不支持的 nvidia 显卡),就还是回退到了 i3wm 。结果回退后,每次系统刚启动时,有一段时间 firefox/thunar 等 GUI 程序会一直卡着,要大概 1 分钟后才能正常启动…
发生第二件事时我就懒得折腾了,想到归根结底还是系统没有版本控制跟回滚机制,导致系统出了问题不能还原,装新系统时各种软件包也全靠自己手工从旧机器导出软件包清单,再在新机器安装恢复。就打算干脆换成 NixOS 试试。
然后就研究了半个月 Nix 与 Flakes ,将 PC 从之前用的 EndeavourOS 切换到了 NixOS 。
我折腾的第一步是在我 homelab 上开了台 NixOS 虚拟机,在这台虚拟机里把我物理机的 EndeavourOS i3 配置迁移到 NixOS + Flakes ,还原出了整个桌面环境。 在虚拟机里搞定后问题就不大了,直接备份好我办公电脑的 Home 目录、软件清单,然后将系统重装为 NixOS ,再 git clone 我调试好的 NixOS 配置,改一改硬盘挂载相关的参数,额外补充下 Nvidia 显卡相关的 NixOS 配置,最后一行命令部署配置。几行命令就在我全新的 NixOS 系统上还原出了整个 i3 桌面环境跟我的常用软件,那一刻真的很有成就感!
NixOS 的回滚能力给了我非常大的底气,使我前几天我又进一步迁移到了 hyprland 桌面,确实比 i3 香多了,它的动画效果我吹爆!(在以前 EndeavourOS 上我肯定是不太敢做这样的切换的,原因前面已经解释过了——万一把系统搞出问题,会非常麻烦。)
如果看完上面这些,你对 NixOS 也产生了一些兴趣,如下是我最近折腾时记录的 NixOS 新手笔记~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.