summary refs log tree commit diff
path: root/nixos/modules/installer/cd-dvd/iso-image.nix
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2013-11-14 18:18:27 -0500
committerShea Levy <shea@shealevy.com>2013-11-14 18:18:46 -0500
commitcc69da4314d4f315f5b178f0796efdc80e0141d4 (patch)
tree1d85514930fa3b1c34db32033dbf2303ac7ebe19 /nixos/modules/installer/cd-dvd/iso-image.nix
parentac6bc8c990ac8298abd010ed262769bf09616185 (diff)
downloadnixpkgs-cc69da4314d4f315f5b178f0796efdc80e0141d4.tar
nixpkgs-cc69da4314d4f315f5b178f0796efdc80e0141d4.tar.gz
nixpkgs-cc69da4314d4f315f5b178f0796efdc80e0141d4.tar.bz2
nixpkgs-cc69da4314d4f315f5b178f0796efdc80e0141d4.tar.lz
nixpkgs-cc69da4314d4f315f5b178f0796efdc80e0141d4.tar.xz
nixpkgs-cc69da4314d4f315f5b178f0796efdc80e0141d4.tar.zst
nixpkgs-cc69da4314d4f315f5b178f0796efdc80e0141d4.zip
Put /efi and /loader on the main livecd partition for efi booting with unetbootin
Fixes #248, mostly

Signed-off-by: Shea Levy <shea@shealevy.com>
Diffstat (limited to 'nixos/modules/installer/cd-dvd/iso-image.nix')
-rw-r--r--nixos/modules/installer/cd-dvd/iso-image.nix40
1 files changed, 22 insertions, 18 deletions
diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix
index b803a3f188b..00a9e91c733 100644
--- a/nixos/modules/installer/cd-dvd/iso-image.nix
+++ b/nixos/modules/installer/cd-dvd/iso-image.nix
@@ -44,31 +44,29 @@ let
 
 
   # The efi boot image
+  efiDir = pkgs.runCommand "efi-directory" {} ''
+    mkdir -p $out/efi/boot
+    cp -v ${pkgs.gummiboot}/lib/gummiboot/gummiboot${targetArch}.efi $out/efi/boot/boot${targetArch}.efi
+    mkdir -p $out/loader/entries
+    echo "title NixOS LiveCD" > $out/loader/entries/nixos-livecd.conf
+    echo "linux /boot/bzImage" >> $out/loader/entries/nixos-livecd.conf
+    echo "initrd /boot/initrd" >> $out/loader/entries/nixos-livecd.conf
+    echo "options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" >> $out/loader/entries/nixos-livecd.conf
+    echo "default nixos-livecd" > $out/loader/loader.conf
+    echo "timeout 5" >> $out/loader/loader.conf
+  '';
+
   efiImg = pkgs.runCommand "efi-image_eltorito" { buildInputs = [ pkgs.mtools ]; }
     ''
       #Let's hope 10M is enough
       dd bs=2048 count=5120 if=/dev/zero of="$out"
       ${pkgs.dosfstools}/sbin/mkfs.vfat "$out"
-      mmd -i "$out" efi
-      mmd -i "$out" efi/boot
-      mmd -i "$out" efi/nixos
-      mmd -i "$out" loader
-      mmd -i "$out" loader/entries
-      mcopy -v -i "$out" \
-        ${pkgs.gummiboot}/lib/gummiboot/gummiboot${targetArch}.efi \
-        ::efi/boot/boot${targetArch}.efi
+      mcopy -svi "$out" ${efiDir}/* ::
+      mmd -i "$out" boot
       mcopy -v -i "$out" \
-        ${config.boot.kernelPackages.kernel}/bzImage ::bzImage
+        ${config.boot.kernelPackages.kernel}/bzImage ::boot/bzImage
       mcopy -v -i "$out" \
-        ${config.system.build.initialRamdisk}/initrd ::efi/nixos/initrd
-      echo "title NixOS LiveCD" > boot-params
-      echo "linux /bzImage" >> boot-params
-      echo "initrd /efi/nixos/initrd" >> boot-params
-      echo "options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" >> boot-params
-      mcopy -v -i "$out" boot-params ::loader/entries/nixos-livecd.conf
-      echo "default nixos-livecd" > boot-params
-      echo "timeout 5" >> boot-params
-      mcopy -v -i "$out" boot-params ::loader/loader.conf
+        ${config.system.build.initialRamdisk}/initrd ::boot/initrd
     '';
 
   targetArch = if pkgs.stdenv.isi686 then
@@ -263,6 +261,12 @@ in
         { source = efiImg;
           target = "/boot/efi.img";
         }
+        { source = "${efiDir}/efi";
+          target = "/efi";
+        }
+        { source = "${efiDir}/loader";
+          target = "/loader";
+        }
       ] ++ mapAttrsToList (n: v: { source = v; target = "/boot/${n}"; }) config.boot.loader.grub.extraFiles;
 
     # The Grub menu.