Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【开源自荐】NixOS 与 Flakes 新手指南 #3315

Open
ryan4yin opened this issue Jul 28, 2023 · 0 comments
Open

【开源自荐】NixOS 与 Flakes 新手指南 #3315

ryan4yin opened this issue Jul 28, 2023 · 0 comments
Labels

Comments

@ryan4yin
Copy link

ryan4yin commented Jul 28, 2023

先简单介绍下 NixOS 与其实验特性 Flakes

【科技爱好者周刊】中最近已经有过几份 NixOS 相关的资料,NixOS 是个非常特殊的 Linux 发行版,,它构建在 Nix 包管理器之上,设计哲学也跟传统的 Ubuntu, CentOS, Arch Linux 等发行版大相径庭。

NixOS 相比其他发行版最大的优势,是它的可复现能力(即在多台机器上复现出一致的系统环境的能力)以及声明式配置。

NixOS 很强大,但它的强大也带来了系统复杂度的提升,提高了使用门槛。一方面你在 Linux 发行版上积累很多经验很难在 NixOS 上复用,另一方面 NixOS 又一直因为官方文档与社区文档的散乱陈旧而饱受诟病。这些问题都困扰着许多 NixOS 新手。

再说到 Nix 包管理器的实验特性 Flakes,它借鉴了 npm/cargo 等包管理器的设计思路,使用 flake.nix 记录所有外部依赖项,使用 flake.lock 锁定所有依赖的版本,极大地增强了 Nix 包管理器及 NixOS 的可复现能力跟配置可组合能力。
因为 Flakes 的好处很大,社区非常喜欢它。据官方调查,目前 GitHub 新建的 nix 仓库超过半数都使用了 Flakes,传统的 Nix 配置方式已经不再是主流。

但是另一方面 Flakes 作为一个实验性能力存在不确定性,官方文档为了保持稳定性,几乎未包含任何 Flakes 相关的内容。
这使许多 Nix/NixOS 用户感到相当困惑——他们看到大家都在用 Flakes,也想学习下它,但却发现无处学起,只能到处拼凑零散的资料、翻 Nixpkgs 源码,或者找前辈高人请教。

开源书籍《NixOS 与 Flakes 新手指南》

本书最初源于我入坑 NixOS 时的一份零散学习笔记。

我在今年(2023) 4 月份入坑 NixOS 时就深深地爱上了它的设计哲学,同时在朋友的推荐下我了解到了 Nix 的 Flakes 实验特性。
在对比了 Flakes 与传统的 NixOS 配置方式后,我意识到只有带上了 Flakes 的 NixOS 才符合我对它的期待。
于是我完全忽略掉了传统的 Nix 配置方式,在入门阶段就直接学习使用 Flakes 来配置我的 NixOS 系统。

在学习的过程中,我发现适合新手的 Flakes 文档几乎没有,大量的文档都是传统的 Nix 配置方法,我需要从 NixOS Wiki、Zero to Nix、Nixpkgs Manual、Nixpkgs 源码等各种资料中提取出我需要的信息,同时还要忽略掉所有非 Flakes 的内容。
这个学习过程非常曲折痛苦。为了避免后面再次踩坑,我在学习过程中记录了大量的零散笔记。

在拥有了一定使用经验后,今年 5 月初的时候我将自己的主力 PC 切换到了 NixOS,然后将这份写了大半个月的 NixOS 新手笔记整理润色后发布到了我的博客,并分享到了 NixOS 中文社区。
中文社区的朋友们表示写得很棒,在他们的建议下,我又将这篇文章翻译成了英文并分享到了 Reddit,收到了非常强烈的正反馈。

这份笔记分享出来后好评不断,这让我备感振奋,继续完善它的热情也高涨。
在我的持续更新下这份笔记的内容不断增多,逐渐扩充到了 2 万多字,有读者反馈阅读体验不太好,于是在他的建议下,
我将文章内容迁移到了一个 GitHub 仓库,搭建了一个专门的文档站点,方便大家阅读与贡献。
同时也调整了内容的表述,去掉了一些过于个人化的内容,使其更贴近一本新手指南的风格,而不是一份随性而为的个人笔记。

至此,一本中英双语的开源书籍诞生了,我给它取名叫 <NixOS & Flakes Book>,中文名叫《NixOS 与 Flakes 新手指南》。

这本开源书藉的特点是:

  1. 以 NixOS 与 Flakes 为核心进行讲解,摈弃了传统的 Nix 配置方式
  2. 新手友好,内容尽可能地从拥有一定 Linux 使用经验与编程经验的 NixOS 初学者角度出发进行讲解
  3. step-by-step,渐进式地学习
  4. 内容连贯,组织良好,比较成体系。读者既可以渐进式地阅读本书,也可以快速定位自己需要的信息

书籍地址如下:

https://github.com/ryan4yin/nixos-and-flakes-book

@ruanyf ruanyf added the weekly label Aug 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants