Pacman hooks creating unified kernel images for snapshots created by snap-pac.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Adrian Wannenmacher 53cc21a6f1
Update to match snap-pac v3
1 year ago
pacman Update to new snap-pac version 1 year ago
src feat: read config from a file inside /etc 2 years ago
systemd feat: add cleaning facilities 2 years ago
LICENSE chore: 📄 Add LICENSE 2 years ago docs: 📝 mention martix room in README 2 years ago feat: improve install script and add unistall script 2 years ago Update to new snap-pac version 1 year ago


Need help? Talk to me at

What is this?

This is a collection of scripts, pacman hooks and and systemd units for creating and managing unified kernel images (UKIs) based on snapper. It originally expected to be executed as a pacman hook after snap-pac, but this is no longer required (though the name remains).



This tool expects that you already set up snapper. It also expects that each snapshots linux and initramfs files (/boot/vmlinuz-linux and /boot/initramfs-linux.img) as well as a kernel command line file (/etc/snap-pac-uki/kernel-cmd) are available within each snapshot.

The fallback initramfs (/boot/initramfs-linux-fallback.img) and fallback command line file (/etc/snap-pac-uki/kernel-cmd-fallback) are only required on the current system.

EFI boot options are only created for each snapshot. If you want the UKIs created for the current system, you'll need to add boot entries yourself:

# template
efibootmgr -c \
    -d <EFI DEVICE> \
    -l <EFI PATH> \
    -L <LABEL>

# example
efibootmgr -c \
    -d /dev/nvme0n1 \
    -p 1 \
    -l "\EFI\Linux\arch-linux.efi" \
    -L "Arch Linux"

# example for fallback
efibootmgr -c \
    -d /dev/nvme0n1 \
    -p 1 \
    -l "\EFI\Linux\arch-linux-fallback.efi" \
    -L "Arch Linux (Fallback)"

Using the install script

  1. You can install the dependencies of this program with the following command:

    pacman -S fish efibootmgr jq ripgrep sbsigntools sed snapper
  2. Download the latest release from here and unpack it.

  3. Then run the install script (you need to be in the same directory):



Creating snapshot UKIs

This creates a new UKI for all snapshots where none is found:

snap-pac-uki snapshots

Create current UKIs

This creates a new UKI for the current system (including a fallback variant):

snap-pac-uki current

Clean up UKIs

This removes all UKIs without corresponding snapshot (solely based on number):

snap-pac-uki clean

Enable periodic cleanups using systemd timer

systemctl enable --now snap-pac-uki-cleanup.timer


Simply run the following command in this directory: