# Create an ISO from a list of files. Zips are automatically extracted. # Nix store hash prefixes are stripped from filenames. # Usage: # makeFilesISO { name = "my-stuff"; files = [ ./foo.exe someZip anotherFile ]; } # makeFilesISO { name = "my-stuff"; files = [ (pkgs.fetchurl { ... }) ]; } { pkgs, ... }: { name ? "files", files }: pkgs.runCommand "${name}.iso" { nativeBuildInputs = with pkgs; [ unzip cdrkit file ]; } '' mkdir -p content ${builtins.concatStringsSep "\n" (map (f: '' if file --mime-type -b "${f}" | grep -q "application/zip"; then unzip -q -o "${f}" -d content else # Strip nix store hash prefix (e.g. "abc123-foo.exe" -> "foo.exe") fname=$(basename "${f}") stripped="''${fname#*-}" cp "${f}" "content/$stripped" fi '') files)} genisoimage -o $out -joliet -joliet-long -rational-rock content ''