Jump to content

Nix 生態系統

From NixOS Wiki
Revision as of 19:51, 28 August 2025 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 用戶的更新時間。

Various examples of NixOS development along with links.
Type of development Location of Development Examples
Platform Agnostic Packaging Nixpkgs coreutils package, stdenv framework, Libreoffice package
Platform Agnostic Tooling Nixpkgs and various repositories upstream/default Nix implementation (CppNix), Hydra source code, Nixpkgs merge bot
NixOS Tooling mostly Nixpkgs nixos-rebuild-ng source code, NixOS Installation ISOs
NixOS Module System Nixpkgs Display Manager configuration, MySQL (and derivative) database configuration
Infrastructure Infrastructure for this Wiki, NixOS infra
Documentation This Wiki, stdenv documentation, NixOS IPv6 configuration (visible in the IPv6 section of the NixOS manual), Nixpkgs Contribution Guidelines
Tech Organisation NixOS RelEng, Nix and NixOS RFCs
Other NixOS artwork, NixOS (and related) discourse, NixOS Foundation