Adds includeStorePaths, allowing the omission of the store paths.
You generally want to leave it on, but tooling may disable this
to insert the store paths more efficiently via other means, such
as bind mounting the host store.
(cherry picked from commit 5259d66b7487b94233821e28aafb0683ae3f1df6)
Currently the docker client is only available on non-linux platforms as `docker`,
this makes the client available on linux and other platforms as `docker-client`.
(cherry picked from commit 7233acd515546107e5902a8fef6832f4f319390c)
I'm not sure how the build broke[1] or how it worked before, but
the problem is zip is being used in place of p7zip, which obviously
fail as the flags have different meanings.
[1]: https://hydra.nixos.org/build/143354937
(cherry picked from commit 302d6b1b8b94f2082f9937d04e27c2aaefb93aa2)
libccd has the common bug of assuming CMAKE_INSTALL_*DIR is relative. I have
submitted the fix upstream, but don't have much hope of getting it merged
because there have been no updates since 2018.
(cherry picked from commit 3d2092ab58fe83e89a3162728e9d4b733295b561)
This is because we are in a huge "rec" that takes precedence for
symbols in its scope, despite the more nested "with".
(cherry picked from commit 7ee8945a120da5b10fa0eac9fc59b92531ac8552)
The root filesystem resizing step, `resize2fs -M', does not provide any
control over the amount of slack left in the result. It can produce an
arbitrarily tight fit, depending on how well the payload aligns with
ext4 data structures.
This is problematic, as NixOS must create a few files and directories
during its first boot, before the root is enlarged to match the size of
the containing SD card.
An overly tight fit can cause failures in the first stage:
mkdir: can't create directory '/mnt-root/proc': No space left on device
or in the second stage:
install: cannot create directory '/var': No space left on device
A previous version of `make-ext4-fs' (before PR #79368) was explicitly
"reserving" 16 MiB of free space in the final filesystem. Manually
calculating the size of an ext4 filesystem is a perilous endeavor,
however, and the method it employed was apparently unreliable.
Reverting is consequently not a good option.
A solution would be to create some sort of "balloon" occupying inodes
and blocks in the image prior to invoking `resize2fs -M', and to remove
these temporary files/directories before the compression step.
This changeset takes the simpler approach of simply dropping the
resizing step.
Note that this does *not* result in a larger image in general, as the
current procedure does not truncate the `.img' file anyway. In fact, it
has been observed to yield *smaller* compressed images---probably
because of some "noise" left after resizing. E.g., before-vs-after:
-r--r--r-- 2 root root 607M 1. Jan 1970 nixos-sd-image-21.11pre-git-x86_64-linux.img.zst
-r--r--r-- 2 root root 606M 1. Jan 1970 nixos-sd-image-21.11pre-git-x86_64-linux.img.zst
(cherry picked from commit 7c2adb1d5c1f0b05dc030365f9a811a6431af0e1)