NixOS 是一个基于 Nix 的 Linux 发行版,由 Eelco Dolstra 和 Armijn Hemel 创建,最初于 2003 年发布。
在 NixOS 中,系统的所有组件(包括内核、已安装的包和系统配置文件)都是由 Nix 从 Nix 表达式构建的。
稳定的 NixOS 版本每年发布两次(大约在 5 月底和 11 月底)。[1][2][3]
历史
2003 年,Eelco Dolstra 开始把 Nix 作为研究项目。[4][5] 他曾表示该项目的目的是创建一个能正确部署软件的系统。[6] 在 2006 年, Armijn Hemel 在乌得勒支大学提交了 NixOS 作为其硕士论文的成果。[7]
2011 年,NixOS 迁移项目到 Github。[8]
2015 年,NixOS 基金会在荷兰成立。[9]
2024 年,第一届 Nix 指导委员会选举被举办。[10]
历史版本
Name
|
Date
|
NixOS 13.10 "Aardvark" |
000000002013-10-01-00002013年10月
|
NixOS 14.04 "Baboon" |
000000002014-04-01-00002014年4月
|
NixOS 14.12 "Caterpillar" |
000000002014-12-01-00002014年12月
|
NixOS 15.09 "Dingo" |
000000002015-09-01-00002015年9月
|
NixOS 16.03 "Emu" |
000000002016-03-01-00002016年3月
|
NixOS 16.09 "Flounder" |
000000002016-09-01-00002016年9月
|
NixOS 17.03 "Gorilla" |
000000002017-03-01-00002017年3月
|
NixOS 17.09 "Hummingbird" |
000000002017-09-01-00002017年9月
|
NixOS 18.03 "Impala" |
000000002018-03-01-00002018年3月
|
NixOS 18.09 "Jellyfish" |
000000002018-09-01-00002018年9月
|
NixOS 19.03 "Koi" |
000000002019-03-01-00002019年3月
|
NixOS 19.09 "Loris" |
000000002019-09-01-00002019年9月
|
NixOS 20.03 "Markhor" |
000000002020-03-01-00002020年3月
|
NixOS 20.09 "Nightingale" |
000000002020-09-01-00002020年9月
|
NixOS 21.05 "Okapi" |
000000002021-05-01-00002021年5月
|
NixOS 21.11 "Porcupine" |
000000002021-11-01-00002021年11月
|
NixOS 22.05 "Quokka" |
000000002022-05-01-00002022年5月
|
NixOS 22.11 "Raccoon" |
000000002022-11-01-00002022年11月
|
NixOS 23.05 "Stoat" |
000000002023-05-01-00002023年5月
|
NixOS 23.11 "Tapir" |
000000002023-11-01-00002023年11月
|
NixOS 24.05 "Uakari" |
000000002024-05-01-00002024年5月
|
NixOS 24.11 "Vicuna" |
000000002024-11-01-00002024年11月
|
特点
声明式配置
NixOS 通过 Nix 语言写的中心化的配置文件进行管理。你在 Nix 表达式中声明了某个东西要怎么构建,Nix 包管理器会提供同样的环境来构建它。[11]
在修改 Nix 文件后,通过 nixos-rebuild
命令即可更新系统。这将完成创建新版本系统所需的一切操作,包括下载和安装软件包以及生成配置文件。
可复现性
Nix 要保证输入和输出是对应的,因此相同的配置文件可以得到一个相同的系统。你可以很轻松地分享你的构建流程或者开发环境给别人,因为它们都声明在 Nix 文件中。
回滚机制
NixOS 直接在启动菜单里提供了选项,可以选择启动到某一次特定部署,因此你可以把系统回滚到之前的状态。注意 NixOS 的这套机制不是真正的文件系统快照,无法回滚程序的数据文件。
编译缓存
NixOS 使用的 Nix 语言指定了如何从源代码构建软件包。这使得系统能够轻松地适应用户需求。但是,从源代码构建是一个缓慢的过程,因此软件包管理器会在缓存服务器可用时自动下载预构建的二进制文件。
不遵守 FHS 标准
NixOS 不遵守 FHS 标准,它的所有二进制程序和配置文件都在 /nix/store 里,并且 Nix 构建出来的文件应该是不可变的。因此,除非静态链接,否则为其它 Linux 下编译的二进制文件将完全无法在 NixOS 下运行。
参考链接
外部链接
- 社群