如何在 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 --add
和 nix-channel --update
步骤。
我希望能够从 configuration.nix
安装我的系统,而无需首先 运行 nix-channel --add
和 nix-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
];
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 --add
和 nix-channel --update
步骤。
我希望能够从 configuration.nix
安装我的系统,而无需首先 运行 nix-channel --add
和 nix-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
];