}/nix-store.img";
squashfs =
"${hostPkgs.callPackage (modulesPath + "/../lib/make-squashfs.nix") {
+ squashfsTools =
+ (hostPkgs.extend (import ../overlays/squashfs-labels)).squashfsTools.overrideAttrs
+ (old: {
+ buildInputs = (old.buildInputs or [ ]) ++ [ hostPkgs.makeWrapper ];
+ postInstall = (old.postInstall or "") + ''
+ wrapProgram "$out/bin/mksquashfs" \
+ --append-flags "-label nix-store"
+ '';
+ });
storeContents = config.virtualisation.additionalPaths;
}}";
};
erofs is more compact than ext4, but less mature.
- squashfs support currently requires a dubious kludge that results in these
- VMs not being able to mount any other squashfs volumes besides the nix store.
+ squashfs is best, but requires patches to set the filesystem label.
'';
type = lib.types.enum [ "ext4" "erofs" "squashfs" ];
default = "ext4";
optional (cfg.nixStoreFilesystemType == "erofs") "erofs";
nixpkgs.overlays = optional (cfg.nixStoreFilesystemType == "squashfs")
- (final: prev: {
- util-linux = prev.util-linux.overrideAttrs (old: {
- patches = (old.patches or [ ])
- ++ [ ./libblkid-squashfs-nix-store-kludge.patch ];
- });
- });
+ (import ../overlays/squashfs-labels);
fileSystems = mkVMOverride {
"${storeMountPath}" = {