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

标签 nix nixos

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

它首先说添加不稳定的 channel ,如下所示:

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

然后,很容易在configuration.nix中使用这个 channel (因为它现在应该在 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;
      };
    };
  };

  ...
};
这增加了一个 unstable可用于 environment.systemPackages 的导数.
这是一个使用它来安装 htop 的示例来自 nixos-unstable 的软件包:
  environment.systemPackages = with pkgs; [
    ...
    unstable.htop
  ];

关于nix - 如何在 configuration.nix 中以声明方式添加 NixOS 不稳定 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48831392/

相关文章:

overlay - 尼克斯): Set "permittedInsecurePackages" only for one package build (in an overlay?)

ruby - Nix:用 Ruby 编译 Vim

nixos - 是否可以(或建议)使用 NixOps 将 NixOS 安装到 USB 闪存驱动器?

nix - 如何在 NixOS 中启用 Caddy 插件?

nix - 如何在 Nix 中组合两个列表?

nix - 使用 buildPythonPackage 时如何添加 nix 包?

nix - Nix 中的构建与运行时依赖关系

Linux 可执行文件在 patchelf 后不起作用

ftp - 在 nixos 上运行 ftp 服务器

php - 通过 Nix flake 安装时,Composer 读取的 PHP 版本不正确