#! @bash@/bin/sh -e shopt -s nullglob export PATH=/empty for i in @path@; do PATH=$PATH:$i/bin; done default=$1 if test -z "$1"; then echo "Syntax: grub-menu-builder.sh " exit 1 fi bootMount="@bootMount@" if test -z "$bootMount"; then bootMount=/boot; fi target=/boot/grub/menu.lst tmp=$target.tmp cat > $tmp << GRUBEND # Automatically generated. DO NOT EDIT THIS FILE! default 0 timeout 5 GRUBEND if test -n "@grubSplashImage@"; then splashLocation=@grubSplashImage@ # !!! image in /nix/store doesn't seem to work #if test -n "@copyKernels@"; then cp -f $splashLocation /boot/background.xpm.gz splashLocation="$bootMount/background.xpm.gz" #fi echo "splashimage $splashLocation" >> $tmp fi configurationCounter=0 configurationLimit="@configurationLimit@" numAlienEntries=$(cat < /boot/nixos-grub-config <> $tmp << GRUBEND title $name kernel $kernel systemConfig=$(readlink -f $path) init=$(readlink -f $path/init) $(cat $path/kernel-params) initrd $initrd GRUBEND } rm -rf /boot/kernels if test -n "@copyKernels@"; then mkdir -p /boot/kernels fi # Additional entries specified verbatim by the configuration. extraGrubEntries=$(cat <> $tmp fi addEntry "NixOS - Default" $default "" if test -z "@extraGrubEntriesBeforeNixos@"; then echo "$extraGrubEntries" >> $tmp fi # Add all generations of the system profile to the menu, in reverse # (most recent to least recent) order. for link in $((ls -d $default/fine-tune/* ) | sort -n); do date=$(stat --printf="%y\n" $link | sed 's/\..*//') addEntry "NixOS - variation" $link "" done for generation in $( (cd /nix/var/nix/profiles && ls -d system-*-link) \ | sed 's/system-\([0-9]\+\)-link/\1/' \ | sort -n -r); do echo $generation link=/nix/var/nix/profiles/system-$generation-link date=$(stat --printf="%y\n" $link | sed 's/\..*//') kernelVersion=$(cd $(dirname $(readlink -f $link/kernel))/lib/modules && echo *) addEntry "NixOS - Configuration $generation ($date - $kernelVersion)" $link "$generation ($date)" done cp $tmp $target