summary refs log tree commit diff
path: root/nixos/modules/installer/cd-dvd
diff options
context:
space:
mode:
authorBob van der Linden <bobvanderlinden@gmail.com>2014-11-16 20:11:56 +0100
committerVladimír Čunát <vcunat@gmail.com>2015-03-24 22:03:30 +0100
commita12ddc1964d0c66d81e9e5f05aedaec55bd3a1cd (patch)
tree68180075625e612131d1d0462091310c1cd722e1 /nixos/modules/installer/cd-dvd
parent16a936be90ee442a00b397a8f62060d5e4c062c9 (diff)
downloadnixlib-a12ddc1964d0c66d81e9e5f05aedaec55bd3a1cd.tar
nixlib-a12ddc1964d0c66d81e9e5f05aedaec55bd3a1cd.tar.gz
nixlib-a12ddc1964d0c66d81e9e5f05aedaec55bd3a1cd.tar.bz2
nixlib-a12ddc1964d0c66d81e9e5f05aedaec55bd3a1cd.tar.lz
nixlib-a12ddc1964d0c66d81e9e5f05aedaec55bd3a1cd.tar.xz
nixlib-a12ddc1964d0c66d81e9e5f05aedaec55bd3a1cd.tar.zst
nixlib-a12ddc1964d0c66d81e9e5f05aedaec55bd3a1cd.zip
nixos: iso-image: use generic boot-loader timeout
Syslinux uses different values than grub for timeout.
It uses 1/10 seconds as its unit and it uses 0 to disable timeouts.

In response to PR #5772.
Diffstat (limited to 'nixos/modules/installer/cd-dvd')
-rw-r--r--nixos/modules/installer/cd-dvd/iso-image.nix15
1 files changed, 14 insertions, 1 deletions
diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix
index 57e1601a87b4..8db7ae366f17 100644
--- a/nixos/modules/installer/cd-dvd/iso-image.nix
+++ b/nixos/modules/installer/cd-dvd/iso-image.nix
@@ -7,14 +7,25 @@
 with lib;
 
 let
+  # Timeout in syslinux is in units of 1/10 of a second.
+  # 0 is used to disable timeouts.
+  syslinuxTimeout = if config.boot.loader.timeout == null then
+      0
+    else
+      max (config.boot.loader.timeout * 10) 1;
+
+
+  max = x: y: if x > y then x else y;
 
   # The configuration file for syslinux.
   baseIsolinuxCfg =
     ''
     SERIAL 0 38400
+    TIMEOUT ${builtins.toString syslinuxTimeout}
     UI vesamenu.c32
     MENU TITLE NixOS
     MENU BACKGROUND /isolinux/background.png
+    DEFAULT boot
 
     LABEL boot
     MENU LABEL Boot NixOS
@@ -47,7 +58,7 @@ let
     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
+    echo "timeout ${builtins.toString config.boot.loader.gummiboot.timeout}" >> $out/loader/loader.conf
   '';
 
   efiImg = pkgs.runCommand "efi-image_eltorito" { buildInputs = [ pkgs.mtools ]; }
@@ -280,6 +291,8 @@ in
         }
       ];
 
+    boot.loader.timeout = 10;
+
     # Create the ISO image.
     system.build.isoImage = import ../../../lib/make-iso9660-image.nix ({
       inherit (pkgs) stdenv perl pathsFromGraph xorriso syslinux;