summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaito Bezarius <masterancpp@gmail.com>2023-04-23 23:28:54 +0200
committerRaito Bezarius <masterancpp@gmail.com>2023-04-23 23:58:46 +0200
commit0df5257b8217dcbd43b195cc25e9fbc309017487 (patch)
tree0d5dd67f9c1f4bc64ba758619aa10829db2031d6
parentMerge pull request #227622 from fabaff/google-cloud-kms-bump (diff)
downloadnixpkgs-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.nix22
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";
};