Flake 的 outputs 
flake.nix 中的 outputs 是一个 attribute set,是整个 Flake 的构建结果,每个 Flake 都可以有许多不同的 outputs。
一些特定名称的 outputs 有特殊用途,会被某些 Nix 命令识别处理,比如:
- Nix packages: 名称为 
apps.<system>.<name>,packages.<system>.<name>或legacyPackages.<system>.<name>的 outputs,都是 Nix 包,通常都是一个个应用程序。- 可以通过 
nix build .#name来构建某个 nix 包 
 - 可以通过 
 - Nix Helper Functions: 名称为 
lib的 outputs 是 Flake 函数库,可以被其他 Flake 作为 inputs 导入使用。 - Nix development environments: 名称为 
devShells的 outputs 是 Nix 开发环境- 可以通过 
nix develop命令来使用该 Output 创建开发环境 
 - 可以通过 
 - NixOS configurations: 名称为 
nixosConfigurations.<hostname>的 outputs,是 NixOS 的系统配置。nixos-rebuild switch .#<hostname>可以使用该 Output 来部署 NixOS 系统
 - Nix templates: 名称为 
templates的 outputs 是 flake 模板- 可以通过执行命令 
nix flake init --template <reference>使用模板初始化一个 Flake 包 
 - 可以通过执行命令 
 - 其他用户自定义的 outputs,可能被其他 Nix 相关的工具使用
 
NixOS Wiki 中给出的使用案例:
nix
{ self, ... }@inputs:
{
  # Executed by `nix flake check`
  checks."<system>"."<name>" = derivation;
  # Executed by `nix build .#<name>`
  packages."<system>"."<name>" = derivation;
  # Executed by `nix build .`
  packages."<system>".default = derivation;
  # Executed by `nix run .#<name>`
  apps."<system>"."<name>" = {
    type = "app";
    program = "<store-path>";
  };
  # Executed by `nix run . -- <args?>`
  apps."<system>".default = { type = "app"; program = "..."; };
  # Formatter (alejandra, nixfmt or nixpkgs-fmt)
  formatter."<system>" = derivation;
  # Used for nixpkgs packages, also accessible via `nix build .#<name>`
  legacyPackages."<system>"."<name>" = derivation;
  # Overlay, consumed by other flakes
  overlays."<name>" = final: prev: { };
  # Default overlay
  overlays.default = {};
  # Nixos module, consumed by other flakes
  nixosModules."<name>" = { config }: { options = {}; config = {}; };
  # Default module
  nixosModules.default = {};
  # Used with `nixos-rebuild --flake .#<hostname>`
  # nixosConfigurations."<hostname>".config.system.build.toplevel must be a derivation
  nixosConfigurations."<hostname>" = {};
  # Used by `nix develop .#<name>`
  devShells."<system>"."<name>" = derivation;
  # Used by `nix develop`
  devShells."<system>".default = derivation;
  # Hydra build jobs
  hydraJobs."<attr>"."<system>" = derivation;
  # Used by `nix flake init -t <flake>#<name>`
  templates."<name>" = {
    path = "<store-path>";
    description = "template description goes here?";
  };
  # Used by `nix flake init -t <flake>`
  templates.default = { path = "<store-path>"; description = ""; };
}