NixOS速查表描述了如何从unstable中的configuration.nix安装软件包。

首先,要说添加不稳定通道,如下所示:

$ 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-channels/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派生词。

这是一个使用它从nixos-unstable安装htop软件包的示例:

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

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

10-13 02:51