salt-statetree/system/bootloader.sls
2023-07-16 18:15:40 +02:00

76 lines
2.5 KiB
Text

include:
- .base
system_bootloader_pkgs:
pkg.installed:
- pkgs:
- grub
- grub-efi
- mkinitfs
- mkinitfs-doc
- efibootmgr
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_config:
cmd.run:
- name: 'grub-mkconfig -o /efi/grub/grub.cfg'
- require:
- system_bootloader_pkgs
- system_bootloader_install
- system_bootloader_grub_dir
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_install
{% 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_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
- require:
- system_base_pkgs
- system_bootloader_pkgs
system_bootloader_cmdline:
file.append:
- name: /etc/default/grub
- text: 'GRUB_CMDLINE_LINUX_DEFAULT="root="LABEL=ROOT" rootflags=subvol=@root_{{ CURRENT_SUBVOLUME_TIMESTAMP }} lockdown=confidentiality"'
- require:
- system_base_pkgs
- system_bootloader_pkgs