feat: ✨ tell the efi about snapshot ukis
This commit is contained in:
parent
0bbca8b8ff
commit
53279cb983
@ -7,7 +7,7 @@ function error -d "prints an error and terminates the program" -a error
|
|||||||
end
|
end
|
||||||
|
|
||||||
function checkdeps -d "check for depenencies"
|
function checkdeps -d "check for depenencies"
|
||||||
set -l deps "jq" "snapper"
|
set -l deps "jq" "snapper" "efibootmgr"
|
||||||
|
|
||||||
for dep in $deps
|
for dep in $deps
|
||||||
which $dep >/dev/null 2>/dev/null
|
which $dep >/dev/null 2>/dev/null
|
||||||
@ -21,6 +21,7 @@ function load_config -d "loads the config from a config file" -a cfg
|
|||||||
# set default values
|
# set default values
|
||||||
set -g BUILD_PATH "/tmp/snap-pac-uki"
|
set -g BUILD_PATH "/tmp/snap-pac-uki"
|
||||||
set -g EFI_DIR "/efi/EFI/Linux/"
|
set -g EFI_DIR "/efi/EFI/Linux/"
|
||||||
|
set -g EFI_PATH '\EFI\Linux'
|
||||||
set -g SNAPPER_CONFIG "root"
|
set -g SNAPPER_CONFIG "root"
|
||||||
set -g SNAPSHOT_SUBVOL "@snapshots"
|
set -g SNAPSHOT_SUBVOL "@snapshots"
|
||||||
set -g ROOT_SUBVOL "@"
|
set -g ROOT_SUBVOL "@"
|
||||||
@ -29,7 +30,7 @@ function load_config -d "loads the config from a config file" -a cfg
|
|||||||
set -l cfg (jq -c <$cfg)
|
set -l cfg (jq -c <$cfg)
|
||||||
|
|
||||||
# parse config
|
# parse config
|
||||||
set -l cfgs "build_path" "efi_dir" "kernel_cmd" "fallback_cmd" "snapper_config" "snapshot_subvol" "root_subvol"
|
set -l cfgs "build_path" "efi_dir" "efi_dev" "efi_part" "efi_path" "kernel_cmd" "fallback_cmd" "snapper_config" "snapshot_subvol" "root_subvol"
|
||||||
for c in $cfgs
|
for c in $cfgs
|
||||||
echo $cfg | jq -e ".$c" >/dev/null
|
echo $cfg | jq -e ".$c" >/dev/null
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ function load_config -d "loads the config from a config file" -a cfg
|
|||||||
end
|
end
|
||||||
|
|
||||||
# check for mandatory options
|
# check for mandatory options
|
||||||
set -l mandatory_cfgs "kernel_cmd" "fallback_cmd"
|
set -l mandatory_cfgs "kernel_cmd" "fallback_cmd" "efi_dev" "efi_part"
|
||||||
for mc in $mandatory_cfgs
|
for mc in $mandatory_cfgs
|
||||||
set -gq (echo $mc | sed "s/./\U&/g")
|
set -gq (echo $mc | sed "s/./\U&/g")
|
||||||
|
|
||||||
@ -64,8 +65,8 @@ function create_uki -d "creates a new uki"
|
|||||||
|
|
||||||
# os-release
|
# os-release
|
||||||
cp /usr/lib/os-release "$bp/os-release"
|
cp /usr/lib/os-release "$bp/os-release"
|
||||||
sed "s/BUILD_ID=.*/BUILD_ID=fallback/" </usr/lib/os-release >"$bp/os-release-fallback"
|
sed "s/BUILD_ID=.*/BUILD_ID=fallback/" </usr/lib/os-release | sed "s/PRETTY_NAME=\"\(.*\)\"/PRETTY_NAME=\"\1 (Fallback)\"" >"$bp/os-release-fallback"
|
||||||
sed "s/BUILD_ID=.*/BUILD_ID=\"snapshot $SNAPSHOT_ID\"/" </usr/lib/os-release >"$bp/os-release-snapshot"
|
sed "s/BUILD_ID=.*/BUILD_ID=\"snapshot $SNAPSHOT_ID\"/" </usr/lib/os-release | sed "s/PRETTY_NAME=\"\(.*\)\"/PRETTY_NAME=\"\1 (Snapshot $SNAPSHOT_ID)\"" >"$bp/os-release-snapshot"
|
||||||
|
|
||||||
# kernel cmd
|
# kernel cmd
|
||||||
echo $KERNEL_CMD | sed "s/SNAPSHOT/$ROOT_SUBVOL/" >"$bp/kernel-cmd"
|
echo $KERNEL_CMD | sed "s/SNAPSHOT/$ROOT_SUBVOL/" >"$bp/kernel-cmd"
|
||||||
@ -96,12 +97,17 @@ function create_uki -d "creates a new uki"
|
|||||||
"/usr/lib/systemd/boot/efi/linuxx64.efi.stub" "$bp/arch-linux-$SNAPSHOT_ID.efi"
|
"/usr/lib/systemd/boot/efi/linuxx64.efi.stub" "$bp/arch-linux-$SNAPSHOT_ID.efi"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function add_efi_entry -d "adds a boot entry to efi"
|
||||||
|
efibootmgr -C -d $EFI_DEV -p $EFI_PART -l "$EFI_PATH\arch-linux-$SNAPSHOT_ID.efi" -L (rg "PRETTY_NAME" "$BUILD_PATH/$SNAPSHOT_ID/os-release-snapshot" | sed "s/PRETTY_NAME=\"\(.*\)\"/\1/")
|
||||||
|
end
|
||||||
|
|
||||||
function main -d "the main function"
|
function main -d "the main function"
|
||||||
checkdeps
|
checkdeps
|
||||||
load_config "/etc/snap-pac-uki.json"
|
load_config "/etc/snap-pac-uki.json"
|
||||||
|
|
||||||
get_last_snapshot
|
get_last_snapshot
|
||||||
create_uki
|
create_uki
|
||||||
|
add_efi_entry
|
||||||
|
|
||||||
cp $BUILD_PATH/$SNAPSHOT_ID/*.efi "$EFI_DIR"
|
cp $BUILD_PATH/$SNAPSHOT_ID/*.efi "$EFI_DIR"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user