diff options
| author | Raito Bezarius <masterancpp@gmail.com> | 2023-04-23 23:28:54 +0200 |
|---|---|---|
| committer | Raito Bezarius <masterancpp@gmail.com> | 2023-04-23 23:58:46 +0200 |
| commit | 0df5257b8217dcbd43b195cc25e9fbc309017487 (patch) | |
| tree | 0d5dd67f9c1f4bc64ba758619aa10829db2031d6 | |
| parent | Merge pull request #227622 from fabaff/google-cloud-kms-bump (diff) | |
| download | nixpkgs-origin/qemu-vm/mount-host-nix-store.tar.gz | |
nixos/qemu-vm: introduce `virtualisation.mountHostNixStore` optionorigin/qemu-vm/mount-host-nix-store
Now that `useBootLoader` produces a full system image, moving disk
images can be slow because they have a full Nix store in them.
It does not make sense to keep the 9p mountpoint to shadow the
/nix/store of the VM.
We disable it if we have `useBootLoader` and introduce an option for
easy overrides.
| -rw-r--r-- | nixos/modules/virtualisation/qemu-vm.nix | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index cbc58344791d..5b515a29ae62 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -574,12 +574,15 @@ in virtualisation.writableStore = mkOption { type = types.bool; - default = true; # FIXME + default = cfg.mountHostNixStore; + defaultText = literalExpression "cfg.mountHostNixStore"; description = lib.mdDoc '' If enabled, the Nix store in the VM is made writable by layering an overlay filesystem on top of the host's Nix store. + + By default, this is enabled if you mount a host Nix store. ''; }; @@ -713,6 +716,21 @@ in For applications which do a lot of reads from the store, this can drastically improve performance, but at the cost of disk space and image build time. + + As an alternative, you can use a bootloader which will provide you + with a full NixOS system image containing a Nix store and + avoid mounting the host nix store through + {option}`virtualisation.mountHostNixStore`. + ''; + }; + + virtualisation.mountHostNixStore = + mkOption { + type = types.bool; + default = !cfg.useNixStoreImage && !cfg.useBootLoader; + defaultText = literalExpression "!cfg.useNixStoreImage && !cfg.useBootLoader"; + description = lib.mdDoc '' + Mount the host Nix store as a 9p mount. ''; }; @@ -933,7 +951,7 @@ in virtualisation.additionalPaths = [ config.system.build.toplevel ]; virtualisation.sharedDirectories = { - nix-store = mkIf (!cfg.useNixStoreImage) { + nix-store = mkIf cfg.mountHostNixStore { source = builtins.storeDir; target = "/nix/store"; }; |
