Skip to content

Instantly share code, notes, and snippets.

@LeifW
Created December 3, 2018 05:52
Show Gist options
  • Save LeifW/33a8778519982fc327240616f1aa0b50 to your computer and use it in GitHub Desktop.
Save LeifW/33a8778519982fc327240616f1aa0b50 to your computer and use it in GitHub Desktop.
YAML EFI boot entries
{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
import GHC.Generics (Generic())
import Data.Yaml (decodeFileThrow, FromJSON, ToJSON)
import System.Process (callProcess)
import System.Environment (getArgs)
createEntry (BootEntry label kernel args) =
callProcess "sudo" ["efibootmgr", "--disk", "/dev/nvme0n1", "--part", "1", "--create", "--label", label, "--loader", kernel, "-u", unwords args]
data BootEntry = BootEntry {
label :: String,
kernel :: String,
args :: [String]
} deriving (Show, Eq, Generic, ToJSON, FromJSON)
main = do
[fileName] <- getArgs
bootEntry <- decodeFileThrow fileName
createEntry bootEntry
label: Arch Linux
kernel: /vmlinuz-linux
args:
- root=/dev/nvme0n1p2
- rw
- initrd=/intel-ucode.img
- initrd=/initramfs-linux.img
- net.ifnames=0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment