The util-linux patch in particular causes a lot of rebuilds / cache
misses (linux kernel, llvm and hence clang, rustc, & ghc, etc.) in the
guest.
If the host is also building large stuff like the kernel locally for
other reasons, this can result in two sets of large, local builds. :(
Users sensitive to this may wish to harmonize the host and guest config
to get back down to one set of large local builds. So we make the
squashfs-label patches easy to also apply to the host, for those that
wish to do so.
}/nix-store.img";
squashfs =
"${hostPkgs.callPackage (modulesPath + "/../lib/make-squashfs.nix") {
}/nix-store.img";
squashfs =
"${hostPkgs.callPackage (modulesPath + "/../lib/make-squashfs.nix") {
- squashfsTools = hostPkgs.squashfsTools.overrideAttrs (old: {
- # We patch in support for squashfs labels because
- # https://github.com/NixOS/nixpkgs/pull/236656 requires filesystems to have labels and
- # https://github.com/plougher/squashfs-tools/issues/59 squashfs doesn't support labels
- patches = (old.patches or []) ++ [ ./squashfs-tools-label.patch ];
- buildInputs = (old.buildInputs or []) ++ [ hostPkgs.makeWrapper ];
- postInstall = (old.postInstall or "") + ''
- wrapProgram "$out/bin/mksquashfs" \
- --append-flags "-label nix-store"
- '';
- });
+ 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;
}}";
};
storeContents = config.virtualisation.additionalPaths;
}}";
};
optional (cfg.nixStoreFilesystemType == "erofs") "erofs";
nixpkgs.overlays = optional (cfg.nixStoreFilesystemType == "squashfs")
optional (cfg.nixStoreFilesystemType == "erofs") "erofs";
nixpkgs.overlays = optional (cfg.nixStoreFilesystemType == "squashfs")
- (final: prev: {
- util-linux = prev.util-linux.overrideAttrs (old: {
- # We patch in support for squashfs labels because
- # https://github.com/NixOS/nixpkgs/pull/236656 requires filesystems to have labels and
- # https://github.com/plougher/squashfs-tools/issues/59 squashfs doesn't support labels
- patches = (old.patches or [ ]) ++ [ ./util-linux-squashfs-label.patch ];
- });
- });
+ (import ../overlays/squashfs-labels);
fileSystems = mkVMOverride {
"${storeMountPath}" = {
fileSystems = mkVMOverride {
"${storeMountPath}" = {
--- /dev/null
+# We patch in support for squashfs labels because
+# https://github.com/NixOS/nixpkgs/pull/236656 requires filesystems to have labels and
+# https://github.com/plougher/squashfs-tools/issues/59 squashfs doesn't support labels
+final: prev: {
+ squashfsTools = prev.squashfsTools.overrideAttrs (old: {
+ patches = (old.patches or [ ]) ++ [ ./squashfs-tools-label.patch ];
+ });
+
+ util-linux = prev.util-linux.overrideAttrs (old: {
+ patches = (old.patches or [ ]) ++ [ ./util-linux-squashfs-label.patch ];
+ });
+}