make-iso9660-image: use `__structuredAttrs`

Makes it easier to enable discarding of references, a feature of Nix
2.14 which requires structured attrs.

Changed files
+11 -20
nixos
+3 -3
nixos/lib/make-iso9660-image.nix
···
stdenv.mkDerivation {
name = isoName;
-
builder = ./make-iso9660-image.sh;
+
__structuredAttrs = true;
+
+
buildCommandPath = ./make-iso9660-image.sh;
nativeBuildInputs = [ xorriso syslinux zstd libossp_uuid ];
inherit isoName bootable bootImage compressImage volumeID efiBootImage efiBootable isohybridMbrImage usbBootable;
-
# !!! should use XML.
sources = map (x: x.source) contents;
targets = map (x: x.target) contents;
-
# !!! should use XML.
objects = map (x: x.object) storeContents;
symlinks = map (x: x.symlink) storeContents;
+8 -17
nixos/lib/make-iso9660-image.sh
···
-
source $stdenv/setup
-
-
sources_=($sources)
-
targets_=($targets)
-
-
objects=($objects)
-
symlinks=($symlinks)
-
-
# Remove the initial slash from a path, since genisofs likes it that way.
stripSlash() {
res="$1"
···
# The -boot-info-table option modifies the $bootImage file, so
# find it in `contents' and make a copy of it (since the original
# is read-only in the Nix store...).
-
for ((i = 0; i < ${#targets_[@]}; i++)); do
-
stripSlash "${targets_[$i]}"
+
for ((i = 0; i < ${#targets[@]}; i++)); do
+
stripSlash "${targets[$i]}"
if test "$res" = "$bootImage"; then
-
echo "copying the boot image ${sources_[$i]}"
-
cp "${sources_[$i]}" boot.img
+
echo "copying the boot image ${sources[$i]}"
+
cp "${sources[$i]}" boot.img
chmod u+w boot.img
-
sources_[$i]=boot.img
+
sources[$i]=boot.img
fi
done
···
# Add the individual files.
-
for ((i = 0; i < ${#targets_[@]}; i++)); do
-
stripSlash "${targets_[$i]}"
-
addPath "$res" "${sources_[$i]}"
+
for ((i = 0; i < ${#targets[@]}; i++)); do
+
stripSlash "${targets[$i]}"
+
addPath "$res" "${sources[$i]}"
done