diff options
Diffstat (limited to 'nixpkgs/nixos/lib/make-squashfs.nix')
-rw-r--r-- | nixpkgs/nixos/lib/make-squashfs.nix | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/nixpkgs/nixos/lib/make-squashfs.nix b/nixpkgs/nixos/lib/make-squashfs.nix new file mode 100644 index 00000000000..ee76c9c5bf2 --- /dev/null +++ b/nixpkgs/nixos/lib/make-squashfs.nix @@ -0,0 +1,28 @@ +{ stdenv, squashfsTools, closureInfo + +, # The root directory of the squashfs filesystem is filled with the + # closures of the Nix store paths listed here. + storeContents ? [] +, # Compression parameters. + # For zstd compression you can use "zstd -Xcompression-level 6". + comp ? "xz -Xdict-size 100%" +}: + +stdenv.mkDerivation { + name = "squashfs.img"; + + nativeBuildInputs = [ squashfsTools ]; + + buildCommand = + '' + closureInfo=${closureInfo { rootPaths = storeContents; }} + + # Also include a manifest of the closures in a format suitable + # for nix-store --load-db. + cp $closureInfo/registration nix-path-registration + + # Generate the squashfs image. + mksquashfs nix-path-registration $(cat $closureInfo/store-paths) $out \ + -keep-as-directory -all-root -b 1048576 -comp ${comp} + ''; +} |