include: - .base system_bootloader_pkgs: pkg.installed: - pkgs: - grub - grub-efi - mkinitfs - mkinitfs-doc - efibootmgr {% set CURRENT_SUBVOLUME_TIMESTAMP = salt['cmd.shell']('CURRENT_SUBVOLUME=$(LC_ALL=C btrfs sub show / | LC_ALL=C grep Name: | tr -d \'[:space:]\'); TIMESTAMP_FORMAT=\'[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}_[[:digit:]]{2}-[[:digit:]]{2}-[[:digit:]]{2}\'; echo "$CURRENT_SUBVOLUME" | grep -Eo "$TIMESTAMP_FORMAT"') %} {% set CURRENT_SUBVOLUME_TIMESTAMP_HUMAN = salt['cmd.shell']('CURRENT_SUBVOLUME_TIMESTAMP=\'' + CURRENT_SUBVOLUME_TIMESTAMP + '\'; echo "${CURRENT_SUBVOLUME_TIMESTAMP:0:10} ${CURRENT_SUBVOLUME_TIMESTAMP:11:2}:${CURRENT_SUBVOLUME_TIMESTAMP:14:2}"') %} {% set KERNEL_VERSION = salt['cmd.shell']('uname -r') %} system_bootloader_install: cmd.run: - name: "grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=alpine-{{ CURRENT_SUBVOLUME_TIMESTAMP }}" - require: - system_bootloader_pkgs system_bootloader_grub_dir: file.directory: - name: /efi/grub - makedirs: true - user: root - group: root - mode: '0755' - require: - system_bootloader_pkgs - system_bootloader_install system_bootloader_mkinitfs_conf: file.keyvalue: - name: /etc/mkinitfs/mkinitfs.conf - key_values: features: '"ata base cdrom ext4 btrfs keymap kms mmc nvme raid scsi usb virtio"' - separator: '=' - uncomment: '# ' - key_ignore_case: false - value_ignore_case: false - append_if_not_found: true - require: - system_base_pkgs - system_bootloader_pkgs system_bootloader_os-release: file.keyvalue: - name: /etc/os-release - key_values: VERSION_ID: '"Timestamp: {{ CURRENT_SUBVOLUME_TIMESTAMP_HUMAN }} | Kernel: {{ KERNEL_VERSION }}"' - separator: '=' - uncomment: '# ' - key_ignore_case: False - append_if_not_found: True {% if salt['cmd.shell']('ls /etc/grub.d | grep 10_linux') %}} system_bootloader_remove_default_menuentry: file.absent: - name: /etc/grub.d/10_linux - require: - system_bootloader_install - system_bootloader_config {% endif %} system_bootloader_menuentry: {% if not salt['cmd.shell']('ls /etc/grub.d | grep 10_noveria') %} file.managed: - name: /etc/grub.d/10_noveria - source: salt://{{ tpldir }}/files/bootloader_menuentry - template: jinja - context: CURRENT_SUBVOLUME_TIMESTAMP_HUMAN: {{ CURRENT_SUBVOLUME_TIMESTAMP_HUMAN }} CURRENT_SUBVOLUME_TIMESTAMP: {{ CURRENT_SUBVOLUME_TIMESTAMP }} - require: - system_base_pkgs - system_bootloader_pkgs - system_bootloader_remove_default_menuentry {% else %} file.replace: - name: /etc/grub.d/10_noveria - pattern: {{ "#!/bin/sh" | regex_escape }} - "''" - require: - system_base_pkgs - system_bootloader_pkgs file.prepend: - name: /etc/grub.d/10_noveria - source: salt://{{ tpldir }}/files/bootloader_menuentry - template: jinja - context: CURRENT_SUBVOLUME_TIMESTAMP_HUMAN: {{ CURRENT_SUBVOLUME_TIMESTAMP_HUMAN }} CURRENT_SUBVOLUME_TIMESTAMP: {{ CURRENT_SUBVOLUME_TIMESTAMP }} {% endif %} file.prepend: - name: /etc/grub.d/10_noveria - text: "#!/bin/sh" system_bootloader_config: cmd.run: - name: 'grub-mkconfig -o /efi/grub/grub.cfg' - require: - system_bootloader_pkgs - system_bootloader_install - system_bootloader_grub_dir