NixOS 与 Nix Flakes 新手入门

2023-05-09 12:23:57 +08:00
 ryan4yin

好几年前就听说过 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 新手笔记~

https://thiscute.world/posts/nixos-and-flake-basics/

6563 次点击
所在节点    Linux
47 条回复
moonjourney
2023-06-06 23:13:00 +08:00
@Miy4mori 哪里不对了?哪里不懂了?另外 toolbox 是这个 https://containertoolbx.org/
tywtyw2002
352 天前
@SaltyKitkat
@chronos
nix store 在设计的时候就已经考虑到去重了。如果想要更好的去重,上 zfs ,扫 block ,不过增加一些开销。

qq 什么的,真的建议 remote desktop 到个 win10 ,用起来方便很多。

官方的 nixpkgs 是自动 build cache 的,安装的时候直接从 binary cache 里面拉编译好的。
自己写的 nixpkgs 包,可以用 github action 去编译然后 push 到 cachix ,不同二次编译。
https://nixos.wiki/wiki/Binary_Cache
SaltyKitkat
352 天前
@tywtyw2002 现在看感觉对 nix store 再从文件系统层面进行去重意义不大,倒是透明压缩的潜力挺大的
qq 什么的,win 确实是最佳方案,但问题是目前手里面没有多的机子😂
试过虚拟机,但感觉还是有点太麻烦
SaltyKitkat
352 天前
@chronos 才了解到,nixpkgs 里面有 npm 和 yarn 的支持,但貌似暂时还没有打包 pnpm 的函数…
有兴趣的可以去 pr
chronos
351 天前
@SaltyKitkat 没用过 NixOS ,一直用着 Archlinux ,暂时没有换的打算,重新搞整套环境太麻烦了。
aur3l14no
261 天前
@tywtyw2002 cachix 好贵啊...
tywtyw2002
260 天前
@aur3l14no 一般情况下 cachix 用不超啊 自带垃圾回收,免费的够用了。

需要空间大自建 nix cache 就好了 后端可以 s3 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/938569

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX