Nix 生态系统

Revision as of 23:18, 6 December 2024 by Weijia (talk | contribs)

Nix 核心生态系统是一组技术的集合,旨在以可复现的方式构建、声明性地配置和管理软件包、系统及其依赖项。它通过将函数式编程范式从程序领域扩展到系统领域来实现这一目标,并使用一种动态的、函数式的、惰性求值的领域特定语言(DSL),即 Nix 语言,来指定可复现的构建过程。

此外,还有许多由 Nix 社区开发的 应用程序Nix 扩展生态系统)利用并支持了这些核心技术。

官方生态系统

Nix 生态系统核心组件
组件 手册(Manual) 描述 用途 协议
NixOS NixOS 手册 一个由 Nix 构建所有组件的 Linux 发行版,因此支持可重现的、声明式的全系统配置管理以及原子升级和回滚。 声明式配置桌面、服务器和集群。 MIT
Nixpkgs Nixpkgs 手册 最大的社区维护的 Nix 软件包和 NixOS 模块仓库,NixOS 的标准版本也托管在这里。 分享 Nix 软件包和 NixOS 模块 MIT
Hydra Hydra 手册 基于 Nix 的持续构建系统 持续构建集群 GPL-3.0
Nix Nix 手册 一款软件包管理器,能解析指定可重现构建的 Nix 表达式,并将结果与依赖关系树的哈希值一起放入存储地址,从而避免依赖关系地狱,并支持多版本安装和回滚。 Linux 和 Darwin 中的可重现构建和软件包管理 LGPL-2.1
Nix 核心生态系统技术栈
NixOS

一个用 Nixpkgs 构建的 Linux 发行版和配置系统

Nixpkgs

一个巨大的,社区维护的软件仓库

Hydra

一个基于 Nix 的持续构建系统

Nix

一个纯函数式的构建系统

NixOS 的使用方式

用户可以像安装其他 Linux 发行版一样,将 NixOS 发行版安装到他们的电脑上。他们通过 https://search.nixos.org 和本维基查阅有关 Nixpkgs 中可安装的软件包和配置选项的信息。他们使用 Nix 语言以声明式的方式,在一个文本文件中描述应该安装哪些软件包以及如何配置系统。然后,他们在终端中运行两个命令行程序,将系统转变为所描述的系统。此后,他们像使用任何其他 Linux 系统一样使用该系统。

NixOS 的开发

NixOS的开发人员主要在Nixpkgs上工作,用Nix语言的文本文件描述软件包应该如何构建。经过同行评审后,这些修改将被整合到 Nixpkgs 中。其中一些软件包预先在Hydra上构建,以减少NixOS用户的更新时间。