NixOS 是一套基于 Nix 包管理器 构建的 Linux 发行版1). 与传统的 Linux 发行版不同,NixOS 使用一种函数式语言来描述整个系统的配置,生成完整的系统配置文件(profile),从而实现可复现的部署2).
NixOS 使用 Nixpkgs 软件包集合和 Nix 表达式语言 来声明软件包和系统选项。它是 MIT 许可证下的自由开源软件。
NixOS 的特色总结:可复现(隔离构建)、声明式(配置即代码)、可靠(原子升级与回滚)。
Nix 包管理器最初于 2003 年由 Eelco Dolstra 在乌得勒支大学作为研究项目发起。Dolstra 在 2006 年的博士论文 《The Purely Functional Software Deployment Model》3) 中描述了一种声明式、函数式的软件部署模型,奠定了 Nix 包管理器的设计基础。
首个 NixOS 原型由 Armijn Hemel 于 2006 年在其硕士论文 《NixOS: The Nix Based Operating System》 中创建4), 探索了将 Nix 原理应用于 Linux 发行版的可能性。经过持续开发后,NixOS 于 2013 年发布了第一个稳定版本 13.10。
NixOS 基金会 成立于 2015 年,是一家荷兰非营利组织,负责支持 NixOS 及相关 Nix 项目的开发和社区基础设施建设5).
自 2021 年起,NixOS 每年发布两个稳定版本(五月和十一月)。最新稳定版为 NixOS 26.056).
在 NixOS 中,整个操作系统——包括内核、应用程序、系统包和配置文件——都由 Nix 包管理器根据 Nix 语言的定义进行构建。构建新版本不会覆盖之前的版本。
NixOS 系统的配置通过编辑一个 Nix 表达式文件来完成(通常位于 /etc/nixos/configuration.nix)7).
配置示例:
修改配置后,运行以下命令即可应用更改:
sudo nixos-rebuild switch — 构建并切换至新配置sudo nixos-rebuild test — 测试配置但不设为默认sudo nixos-rebuild boot — 仅构建下次启动生效NixOS 最强大的特性之一是其事务性升级机制:
nixos-rebuild switch –rollback这种方式彻底解决了传统 Linux 发行版中常见的“升级后系统损坏”问题。
NixOS 将已安装的包存储在只读目录 /nix/store 中8). 每个包通过其所有构建输入的加密哈希来标识:
例如,bash 的路径可能是 /nix/store/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-bash-4.3.43/bin/bash——版本号嵌入路径中,多版本共存成为可能。
除了系统级配置外,NixOS 中的每个普通用户都拥有自己的 profile,可以在不需要特殊权限的情况下安装软件包:
nix-shell 命令允许开发者启动一个基于 Nix 表达式的交互式 shell,在隔离的依赖环境中工作,不影响系统全局。
Flakes 为 Nix 表达式提供了标准化的结构,明确声明依赖关系和输出。每个 flake 包含一个 flake.nix 文件,指定其输入(依赖、外部 flakes、仓库)和输出(包、NixOS 配置、开发环境)。Flakes 使用锁文件(lock file)锁定精确的依赖版本,确保评估结果随时间可复现9).
新的 nix 命令提供了重新设计的命令行界面,统一了传统的 nix-env、nix-build 等命令,引入了一致的语法:
nix build — 构建包nix develop — 进入开发环境nix run — 直接运行包Nixpkgs 是 Nix 包管理器的软件包集合,提供了超过 14 万个软件包10). 从日常桌面应用到服务器软件、开发工具,几乎应有尽有。
Nix 的构建语言指定了如何从源代码构建所有包,但同时 Nix 会自动从缓存服务器下载预编译的二进制文件,兼顾了源码包管理的灵活性和二进制包管理的效率。
NixOS 获得了业界和用户的好评:
法国政府的 DINUM(跨部门数字事务局) 正在基于 NixOS 开发 Sécurix——一个安全、可复现的操作系统基础12)。这是法国计划要求所有部委在 2026 年秋季前采用非美国技术战略的一部分,涵盖 PC 操作系统、协作工具、防病毒软件、AI 和数据库等领域。
NixOS 以其声明式配置、原子升级、可复现构建三大核心特性,在 Linux 发行版中独树一帜。虽然学习曲线较为陡峭,但它为系统管理员和 DevOps 工程师提供了一种前所未有的系统管理方式。对于那些需要在多台机器上维护一致、可复现的系统环境的人来说,NixOS 是一个非常值得投入学习的发行版。