28 lines
903 B
Nix
28 lines
903 B
Nix
{pkgs, ...}: {
|
|
# hibernate and reboot to firmware
|
|
# this allows me to save linux state and boot into another os (such as windows)
|
|
# make sure not to mount any filesystems from the other os or you risk losing data
|
|
environment.systemPackages = [
|
|
(pkgs.writeShellScriptBin "hib-boot" ''
|
|
set -e
|
|
|
|
if [ ! -v 1 ]; then
|
|
echo "no argument provided"
|
|
echo "please provide the id for the os you want to boot"
|
|
echo "these are the valid id's:"
|
|
echo ""
|
|
${pkgs.efibootmgr}/bin/efibootmgr
|
|
exit
|
|
fi
|
|
|
|
if [ ! -w /sys/power/disk -o ! -w /sys/power/state ]; then
|
|
echo "you lack permission to write to /sys/power/{disk,state}, are you not running this script as root?"
|
|
exit
|
|
fi
|
|
|
|
${pkgs.efibootmgr}/bin/efibootmgr -n "$1" >/dev/null
|
|
echo reboot >/sys/power/disk
|
|
echo disk >/sys/power/state
|
|
'')
|
|
];
|
|
}
|