私がやろうとしていること:
Nixos構成を定義しようとしています。
configuration-pineapple.nix
インストール済み(このファイルになります)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
私が望む機能に適した機能ではないと思います。