如何在 configuration.nix 中以声明方式添加 NixOS 不稳定通道

how to add NixOS unstable channel declaratively in configuration.nix

NixOS 备忘单描述了如何在 configuration.nix 中安装来自 unstable 的软件包。

它首先说要像这样添加不稳定的频道:

$ sudo nix-channel --add https://nixos.org/channels/nixpkgs-unstable
$ sudo nix-channel --update

然后,很容易在 configuration.nix 中使用此频道(因为它现在应该在 NIX_PATH 上):

nixpkgs.config = {
  allowUnfree = true;
  packageOverrides = pkgs: {
    unstable = import <nixos-unstable> {
      config = config.nixpkgs.config;
    };
  };
};

environment = {
  systemPackages = with pkgs; [
    unstable.google-chrome
  ];
};

我不想执行手动 nix-channel --addnix-channel --update 步骤。

我希望能够从 configuration.nix 安装我的系统,而无需首先 运行 nix-channel --addnix-channel --update 步骤。

有没有办法从 configuration.nix 自动执行此操作?

根据@EmmanuelRosa 的建议,我得以实现此功能。

以下是我的/etc/nixos/configuration.nix的相关部分:

{ config, pkgs, ... }:

let
  unstableTarball =
    fetchTarball
      https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz;
in
{
  imports =
    [ # Include the results of the hardware scan.
      /etc/nixos/hardware-configuration.nix
    ];

  nixpkgs.config = {
    packageOverrides = pkgs: {
      unstable = import unstableTarball {
        config = config.nixpkgs.config;
      };
    };
  };

  ...
};

这添加了一个可以在 environment.systemPackages 中使用的 unstable 导数。

这里是一个使用它从 nixos-unstable 安装 htop 包的例子:

  environment.systemPackages = with pkgs; [
    ...
    unstable.htop
  ];