Nix 生态系统
Nix 核心生态系统是一组技术的集合,旨在以可复现的方式构建、声明性地配置和管理软件包、系统及其依赖项。它通过将函数式编程范式从程序领域扩展到系统领域来实现这一目标,并使用一种动态的、函数式的、惰性求值的领域特定语言(DSL),即Nix 语言,来指定可复现的构建过程。
此外,Nix社区开发了许多其他的 应用程序 (“Nix扩展生态”),这些应用程序使用并为核心技术提供支持。
官方生态
组件 | 手册(Manual) | 描述 | 用途 | 协议 |
---|---|---|---|---|
NixOS | NixOS Manual | 一个由 Nix 构建所有组件的 Linux 发行版,因此支持可重现的、声明式的全系统配置管理以及原子升级和回滚。 | 声明式配置桌面、服务器和集群。 | MIT |
Nixpkgs | Nixpkgs Manual | 最大的社区维护的 Nix 软件包和 NixOS 模块仓库,NixOS的标准发行版也托管在这里。 | 分享 Nix 软件包和 NixOS 模块 | MIT |
Hydra | Hydra Manual | 基于 Nix 的持续构建系统 | CI build farms | GPL-3.0 |
Nix | Nix Manual | 一款软件包管理器,能解析指定可重现构建的 Nix 表达式,并将结果与依赖关系树的哈希值一起放入存储地址,从而避免依赖关系地狱,并支持多版本安装和回滚。 | Linux 和 Darwin 中的可重现构建和软件包管理 | LGPL-2.1 |
NixOS
一个用Nixpkgs构建的linux发行版和配置系统 |
|
Nixpkgs
一个巨大的,社区维护的软件仓库 |
Hydra
一个基于Nix的可持续构建系统 |
Nix
一个纯粹而实用的构建系统 |
NixOS的使用方式
用户在自己的电脑上安装 NixOS 发行版,就像安装其他 Linux 发行版一样。阅读 https://search.nixos.org 和本维基来了解 Nixpgs 中的的软件包安装和配置选项。使用 Nix 语言在一个文本文件中,声明式的描述应安装哪些软件包以及如何配置系统。在终端运行两个命令行程序,来将系统转换到所描述的系统。像使用其他 Linux 系统一样使用该系统。
NixOS 的开发
NixOS的开发人员主要在Nixpkgs上工作,用Nix语言的文本文件描述软件包应该如何构建。经过同行评审后,这些修改将被整合到 Nixpkgs 中。其中一些软件包预先在Hydra上构建,以减少NixOS用户的更新时间。