Как написать новый файл конфигурации .nix для пакетов - PullRequest
0 голосов
/ 10 февраля 2019

Я хочу, чтобы мой список установленных пакетов находился в отдельном файле .nix из файла configuration.nix.Я следовал инструкции и придумал следующее:

{ config, pkgs }:

{
  environment.systemPackages = [
    pkgs.firefox
  ];
}

Попытка скомпилировать дает ошибку:

[root@nixos:/dev/disk]# nixos-rebuild build
building Nix...
error: anonymous function at /etc/nixos/packages.nix:1:1 called with unexpected argument 'options', at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:170:8
(use '--show-trace' to show detailed location information)
building the system configuration...
error: anonymous function at /etc/nixos/packages.nix:1:1 called with unexpected argument 'options', at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:170:8
(use '--show-trace' to show detailed location information)

1 Ответ

0 голосов
/ 11 февраля 2019

Из-за ошибки кажется, что вы пропустили ... в списке аргументов, поэтому это должно работать:

{ config, pkgs, ... }:

{
  environment.systemPackages = [
    pkgs.firefox
  ];
}

(попытка более подробного объяснения следует :)

Ваш packages.nix является функцией, а config и pkgs являются некоторыми из ее параметров.Однако, при более быстром тестировании я получил config, pkgs, lib, options, modulesPath в качестве полного списка аргументов.

Ваш /etc/nixos/configuration.nix является просто одним из многих модулей NixOS, и он оценивается с использованием механизма модулей NixOS вlib.evalModules (определено в <nixpkgs/lib/modules.nix>).Это немного особенный (но только немного), и он не оценивается напрямую, а через <nixpkgs/nixos/lib/eval-config.nix>, который является точкой входа для оценки всей конфигурации NixOS (также используется в NixOps и при создании установочного носителя).для NixOS).Вы можете прочитать больше о модулях NixOS в руководстве в главе «Написание модулей NixOS» , хотя это на самом деле не нужно просто для использования NixOS.Возможно, было бы хорошо прокрутить его, прежде чем углубляться в исходный код модулей NixOS, что я узнал слишком поздно.

...