Commit 0df5257b authored by Raito Bezarius's avatar Raito Bezarius
Browse files

nixos/qemu-vm: introduce `virtualisation.mountHostNixStore` option

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.
parent 6d691716
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -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";
      };