mkMerge를 사용하여 두 속성 세트를 병합하는 Nixos 구성을 구축하면 "'가져오기' 옵션이 없습니다. 값 정의..."라는 오류가 발생합니다.

mkMerge를 사용하여 두 속성 세트를 병합하는 Nixos 구성을 구축하면 "'가져오기' 옵션이 없습니다. 값 정의..."라는 오류가 발생합니다.

내가 하려는 일:

Nixos 구성을 정의하려고 합니다.

  1. configuration-pineapple.nix설치됨(이 파일 이 됩니다 )
  2. vmExtra가상 머신 으로 설치/실행하기 위해 몇 가지 추가 구성() nixos-shell을 설정하여 nix-build '<nixpkgs/nixos>' -A vm....

vm-pineapple.nix:

{ config, lib, pkgs, ... }: 
let vmExtra = 
  {
    virtualisation = {
      cores = 6;
      memorySize = 8000;
      qemu.guestAgent.enable = true;
      diskSize = 1024*20;
      graphics = false;
    };
  };
in
  lib.mkMerge [
    ((import (./configuration-pineapple.nix)) { config = config; pkgs = pkgs; })
    vmExtra
  ]

위의 오류는 다음과 같습니다.

 nixos-shell /etc/nixos/vm-pineapple.nix
error: The option `imports' does not exist. Definition values:
       - In `/etc/nixos/vm-pineapple.nix':
           [
             /etc/nixos/hardware-configuration.nix
             /etc/nixos/services.nix
             /etc/nixos/desktop-services.nix
             /etc/nixos/services/pgbouncer.nix
           ...
(use '--show-trace' to show detailed location information)

내 질문:이 오류가 발생하는 이유는 무엇입니까? 위의 목표를 어떻게 달성할 수 있나요?

내가 시도한 것:

mkMerge무엇이 잘못되었는지 더 잘 이해하기 위해 간단한 예를 만들려고 합니다 . 파일 을 만들었습니다 x.nix.

{}: 
let
  a = { a.example = "hi"; };
  b = { a.example2 = "bye" ; b.example2 = "hello"; };
  nixpkgs = import <nixpkgs> {};
in
  { fv = nixpkgs.lib.mkMerge [ a b ]; }

nix eval --file x.nix fv결과를 살펴보세요.

{ _type = "merge"; contents = [ { a = { example = "hi"; }; } { a = { example2 = "bye"; }; b = { example2 = "hello"; }; } ]; }

이것은 내가 예상한 것과 많이 달라 보입니다(래퍼 구조는 예상하지 못했습니다). 이 경우에는 이것이 mkMerge내가 원하는 기능에 적합한 기능이 아니라고 생각하게 됩니다 .

관련 정보