[{"data":1,"prerenderedAt":322},["ShallowReactive",2],{"tag-data-linux":3},[4],{"id":5,"title":6,"alt":7,"body":8,"categories":307,"date":309,"description":310,"extension":311,"image":7,"meta":312,"navigation":314,"path":315,"published":314,"seo":316,"stem":317,"tags":318,"__hash__":321},"content/posts/nixos-introduction/index.md","NixOS 种草指南",null,{"type":9,"value":10,"toc":289},"minimark",[11,15,35,38,43,46,68,71,93,97,102,105,124,127,143,147,150,164,167,175,179,182,193,196,199,203,206,217,220,234,237,240,243,251,254,264,267],[12,13,14],"p",{},"如果你和我一样，经历过这些场景：",[16,17,18,22,25,32],"ul",{},[19,20,21],"li",{},"新机器重装后，环境要手动配半天。",[19,23,24],{},"某次升级后系统抽风，不知道是哪个包或配置导致的。",[19,26,27,28],{},"同一份 dotfiles 在不同机器上总会有“玄学偏差” ",[29,30,31],"del",{},"（在我的机器上能跑啊.jpg）",[19,33,34],{},"系统维护一段时间之后，完全忘了自己做过哪些更改，成为“黑箱”系统。",[12,36,37],{},"那么快来试试 NixOS 吧（",[39,40,42],"h2",{"id":41},"why-nixos","Why NixOS?",[12,44,45],{},"NixOS 最核心的魅力，不是“包多”，而是这三件事：",[47,48,49,56,62],"ol",{},[19,50,51,55],{},[52,53,54],"strong",{},"声明式配置","：你描述“我想要什么”，系统去构建“如何做到”。",[19,57,58,61],{},[52,59,60],{},"可复现","：同一份配置，在不同机器上尽量得到一致结果。",[19,63,64,67],{},[52,65,66],{},"可回滚","：每次系统切换都保留 generation，翻车可以一键回退。",[12,69,70],{},"在日常使用里，这些特性会直接转化为：",[16,72,73,76,88],{},[19,74,75],{},"换机器时迁移成本非常低。",[19,77,78,79,83,84,87],{},"可以通过 ",[80,81,82],"code",{},"generations"," 或是版本管理工具（如 ",[80,85,86],{},"git","）回退系统状态。",[19,89,90],{},[29,91,92],{},"妈妈再也不用担心我的系统爆炸啦。",[39,94,96],{"id":95},"nixos-的几个关键概念","NixOS 的几个关键概念",[98,99,101],"h3",{"id":100},"_1-flakes把依赖和入口规范化","1. Flakes：把依赖和入口规范化",[12,103,104],{},"Flakes 的作用很简单：",[16,106,107,110],{},[19,108,109],{},"统一定义输入依赖（inputs）和输出（outputs）。",[19,111,112,113,116,117],{},"配合 ",[80,114,115],{},"flake.lock"," 锁定版本，提升复现性 ",[29,118,119,120,123],{},"（虽然说对于我这种每天跑若干次 ",[80,121,122],{},"sudo nix flake update"," 的人来说没什么意义吧）",[12,125,126],{},"借助 Flakes 还能实现一些神奇的功能，包括但不限于：",[16,128,129,132],{},[19,130,131],{},"同时使用多个版本的 Nixpkgs 中的包。",[19,133,134,135,138,139,142],{},"在项目目录中通过 ",[80,136,137],{},"flake.nix"," 定义当前项目的开发环境，并通过 ",[80,140,141],{},"direnv"," 自动激活。",[98,144,146],{"id":145},"_2-nixos-module-home-manager系统层和用户层分治","2. NixOS Module + Home Manager：系统层和用户层分治",[12,148,149],{},"我的仓库里就是这种分层思路：",[16,151,152,158],{},[19,153,154,157],{},[80,155,156],{},"modules/nixos/*","：系统级配置（服务、内核、网络、桌面会话等）。",[19,159,160,163],{},[80,161,162],{},"modules/home/*","：用户级配置（shell、编辑器、应用、主题、开发工具等）。",[12,165,166],{},"这个拆分的好处是：",[16,168,169,172],{},[19,170,171],{},"系统策略和个人习惯解耦，便于同时管理日用配置和服务器配置。",[19,173,174],{},"目录结构清晰，后续维护更轻松。",[98,176,178],{"id":177},"_3-generation-与回滚","3. generation 与回滚",[12,180,181],{},"NixOS 的每次切换都会生成一份可启动快照（generation）。",[12,183,184,185,188,189,192],{},"可以直接在 ",[80,186,187],{},"grub"," 中选择启动项，也可以用 ",[80,190,191],{},"nixos-rebuild switch --rollback"," 回滚到上一次。",[12,194,195],{},"如果改完配置，发现系统炸了，可以直接 rollback 回去。",[12,197,198],{},"相比文件系统快照，generation 更轻量。",[39,200,202],{"id":201},"nixos-的优缺点","NixOS 的优缺点",[98,204,205],{"id":205},"优点",[16,207,208,211,214],{},[19,209,210],{},"配置可追踪、可回滚、可复现。",[19,212,213],{},"新机迁移速度快，多机器部署简单。",[19,215,216],{},"对“折腾党”极其友好，试错成本低。",[98,218,219],{"id":219},"缺点",[16,221,222,228,231],{},[19,223,224,225],{},"学习曲线陡，尤其是 Nix 语言表达方式 ",[29,226,227],{},"（Nix 的报错信息真的不是给人看的）",[19,229,230],{},"某些小众场景仍需要额外适配。",[19,232,233],{},"相比 Arch Linux 的 AUR，Nixpkgs 的包生态还是不够丰富，偶尔还是需要自己打包。",[12,235,236],{},"如果你愿意接受前期投入，长期回报非常可观。",[39,238,239],{"id":239},"结语",[12,241,242],{},"NixOS 不一定适合所有人，但它非常适合：",[16,244,245,248],{},[19,246,247],{},"希望完完全全掌控自己系统的人。",[19,249,250],{},"经常重装、换机、跨设备同步环境的人。",[12,252,253],{},"我的配置仓库会持续更新，欢迎参考或提 issue：",[16,255,256],{},[19,257,258],{},[259,260,261],"a",{"href":261,"rel":262},"https://github.com/RhenCloud/NixOS-Config",[263],"nofollow",[39,265,266],{"id":266},"参考链接",[16,268,269,276,283],{},[19,270,271,272],{},"NixOS Wiki: ",[259,273,274],{"href":274,"rel":275},"https://wiki.nixos.org",[263],[19,277,278,279],{},"NixOS & Flakes Book: ",[259,280,281],{"href":281,"rel":282},"https://nixos-and-flakes.thiscute.world/",[263],[19,284,285,286],{},"我的配置仓库：",[259,287,261],{"href":261,"rel":288},[263],{"title":290,"searchDepth":291,"depth":292,"links":293},"",2,4,[294,295,301,305,306],{"id":41,"depth":291,"text":42},{"id":95,"depth":291,"text":96,"children":296},[297,299,300],{"id":100,"depth":298,"text":101},3,{"id":145,"depth":298,"text":146},{"id":177,"depth":298,"text":178},{"id":201,"depth":291,"text":202,"children":302},[303,304],{"id":205,"depth":298,"text":205},{"id":219,"depth":298,"text":219},{"id":239,"depth":291,"text":239},{"id":266,"depth":291,"text":266},[308],"Technology","2026-04-21T00:00:00.000Z","结合我的真实经历，聊聊为什么 NixOS 值得尝试。","md",{"updatedDate":313},"2026-04-21",true,"/posts/nixos-introduction",{"title":6,"description":310},"posts/nixos-introduction/index",[319,320],"Linux","NixOS","zlNrS0RbrfNYmkTMvkLjtD9WdeNVajptyogQ_G6fuSs",1776704557302]