refactor(bootstrap): restructure package lists to self-contained per-OS dicts with base/extra/conditional

This commit is contained in:
2026-02-21 02:39:06 +01:00
parent f0c0b54e7f
commit ff1a4df960
8 changed files with 425 additions and 227 deletions

View File

@@ -1,21 +1,25 @@
--- ---
- name: Bootstrap Alpine Linux - name: Bootstrap Alpine Linux
vars: vars:
bootstrap_alpine_packages: >- _config: "{{ lookup('vars', bootstrap_var_key) }}"
_base_packages: "{{ _config.base | join(' ') }}"
_extra_packages: >-
{{ {{
lookup('vars', bootstrap_var_key) | reject('equalto', '') | join(' ') ((_config.extra | default([])) + (_config.conditional | default([])))
| reject('equalto', '')
| join(' ')
}} }}
block: block:
- name: Install Alpine Linux packages - name: Install Alpine Linux base
ansible.builtin.command: > ansible.builtin.command: >
apk --root /mnt --no-cache add alpine-base apk --root /mnt --no-cache add {{ _base_packages }}
register: bootstrap_alpine_bootstrap_result register: bootstrap_alpine_bootstrap_result
changed_when: bootstrap_alpine_bootstrap_result.rc == 0 changed_when: bootstrap_alpine_bootstrap_result.rc == 0
- name: Install extra packages - name: Install extra packages
when: bootstrap_alpine_packages | length > 0 when: _extra_packages | trim | length > 0
ansible.builtin.command: > ansible.builtin.command: >
apk --root /mnt add {{ bootstrap_alpine_packages }} apk --root /mnt add {{ _extra_packages }}
register: bootstrap_alpine_extra_result register: bootstrap_alpine_extra_result
changed_when: bootstrap_alpine_extra_result.rc == 0 changed_when: bootstrap_alpine_extra_result.rc == 0

View File

@@ -1,11 +1,14 @@
--- ---
- name: Bootstrap ArchLinux - name: Bootstrap ArchLinux
vars: vars:
_config: "{{ lookup('vars', bootstrap_var_key) }}"
bootstrap_archlinux_packages: >- bootstrap_archlinux_packages: >-
{{ {{
lookup('vars', bootstrap_var_key) ((_config.base | default([])) + (_config.conditional | default([])))
| reject('equalto', '')
| list
}} }}
ansible.builtin.command: >- ansible.builtin.command: >-
pacstrap /mnt {{ bootstrap_archlinux_packages | reject('equalto', '') | join(' ') }} --asexplicit pacstrap /mnt {{ bootstrap_archlinux_packages | join(' ') }} --asexplicit
register: bootstrap_result register: bootstrap_result
changed_when: bootstrap_result.rc == 0 changed_when: bootstrap_result.rc == 0

View File

@@ -10,53 +10,33 @@
else 'sid' if (os_version | string) == 'unstable' else 'sid' if (os_version | string) == 'unstable'
else 'trixie' else 'trixie'
}} }}
bootstrap_debian_package_config: >- _config: "{{ lookup('vars', bootstrap_var_key) }}"
{{ bootstrap_debian_base_csv: "{{ (['ca-certificates'] + _config.base) | unique | join(',') }}"
lookup('vars', bootstrap_var_key)
}}
bootstrap_debian_base_packages: >-
{{
bootstrap_debian_package_config.base
| default([])
| reject('equalto', '')
| list
}}
bootstrap_debian_extra_packages: >-
{{
bootstrap_debian_package_config.extra
| default([])
| reject('equalto', '')
| list
}}
bootstrap_debian_base_csv: "{{ bootstrap_debian_base_packages | join(',') }}"
bootstrap_debian_extra_args: >- bootstrap_debian_extra_args: >-
{{ {{
bootstrap_debian_extra_packages ((_config.extra | default([])) + (_config.conditional | default([])))
| reject('equalto', '')
| join(' ') | join(' ')
}} }}
block: block:
- name: Validate Debian package configuration - name: Validate Debian package configuration
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- bootstrap_debian_package_config is mapping - _config is mapping
- bootstrap_debian_package_config.base is defined - _config.base is sequence
- bootstrap_debian_package_config.base is sequence - _config.extra is sequence
- bootstrap_debian_package_config.base is not string fail_msg: "{{ bootstrap_var_key }} must be a dict with base/extra/conditional keys."
- bootstrap_debian_package_config.extra is defined
- bootstrap_debian_package_config.extra is sequence
- bootstrap_debian_package_config.extra is not string
fail_msg: "bootstrap package definition for {{ bootstrap_var_key }} must be a mapping with base/extra lists."
quiet: true quiet: true
- name: Install Debian base system - name: Install Debian base system
ansible.builtin.command: >- ansible.builtin.command: >-
debootstrap --include={{ bootstrap_debian_base_csv }} debootstrap --include={{ bootstrap_debian_base_csv }}
{{ bootstrap_debian_release }} /mnt http://deb.debian.org/debian/ {{ bootstrap_debian_release }} /mnt https://deb.debian.org/debian/
register: bootstrap_debian_base_result register: bootstrap_debian_base_result
changed_when: bootstrap_debian_base_result.rc == 0 changed_when: bootstrap_debian_base_result.rc == 0
- name: Install extra packages - name: Install extra packages
when: bootstrap_debian_extra_packages | length > 0 when: bootstrap_debian_extra_args | trim | length > 0
ansible.builtin.command: "{{ chroot_command }} apt install -y {{ bootstrap_debian_extra_args }}" ansible.builtin.command: "{{ chroot_command }} apt install -y {{ bootstrap_debian_extra_args }}"
register: bootstrap_debian_extra_result register: bootstrap_debian_extra_result
changed_when: bootstrap_debian_extra_result.rc == 0 changed_when: bootstrap_debian_extra_result.rc == 0

View File

@@ -1,21 +1,25 @@
--- ---
- name: Bootstrap openSUSE - name: Bootstrap openSUSE
vars: vars:
bootstrap_opensuse_packages: >- _config: "{{ lookup('vars', bootstrap_var_key) }}"
_base_patterns: "{{ _config.base | join(' ') }}"
_extra_packages: >-
{{ {{
lookup('vars', bootstrap_var_key) | reject('equalto', '') | join(' ') ((_config.extra | default([])) + (_config.conditional | default([])))
| reject('equalto', '')
| join(' ')
}} }}
block: block:
- name: Install openSUSE base packages - name: Install openSUSE base patterns
ansible.builtin.command: > ansible.builtin.command: >
zypper --root /mnt --non-interactive install -t pattern patterns-base-base zypper --root /mnt --non-interactive install -t pattern {{ _base_patterns }}
register: bootstrap_opensuse_base_result register: bootstrap_opensuse_base_result
changed_when: bootstrap_opensuse_base_result.rc == 0 changed_when: bootstrap_opensuse_base_result.rc == 0
- name: Install openSUSE extra packages - name: Install extra packages
when: bootstrap_opensuse_packages | length > 0 when: _extra_packages | trim | length > 0
ansible.builtin.command: > ansible.builtin.command: >
zypper --root /mnt --non-interactive install {{ bootstrap_opensuse_packages }} zypper --root /mnt --non-interactive install {{ _extra_packages }}
register: bootstrap_opensuse_extra_result register: bootstrap_opensuse_extra_result
changed_when: bootstrap_opensuse_extra_result.rc == 0 changed_when: bootstrap_opensuse_extra_result.rc == 0

View File

@@ -1,12 +1,22 @@
--- ---
- name: Bootstrap RHEL System - name: Bootstrap RHEL System
vars:
_rhel_config: "{{ lookup('vars', bootstrap_var_key) }}"
_rhel_repos: "{{ _rhel_config.repos | map('regex_replace', '^', '--repo=') | join(' ') }}"
_rhel_groups: "{{ _rhel_config.base | join(' ') }}"
_rhel_extra: >-
{{
((_rhel_config.extra | default([])) + (_rhel_config.conditional | default([])))
| reject('equalto', '')
| join(' ')
}}
block: block:
- name: Install base packages in chroot environment - name: Install base packages in chroot environment
ansible.builtin.command: >- ansible.builtin.command: >-
dnf --releasever={{ os_version_major }} --repo=rhel{{ os_version_major }}-baseos dnf --releasever={{ os_version_major }} {{ _rhel_repos }}
--installroot=/mnt --installroot=/mnt
--setopt=install_weak_deps=False --setopt=optional_metadata_types=filelists --setopt=install_weak_deps=False --setopt=optional_metadata_types=filelists
groupinstall -y core base standard groupinstall -y {{ _rhel_groups }}
register: bootstrap_result register: bootstrap_result
changed_when: bootstrap_result.rc == 0 changed_when: bootstrap_result.rc == 0
failed_when: failed_when:
@@ -40,15 +50,8 @@
remote_src: true remote_src: true
- name: Install additional packages in chroot - name: Install additional packages in chroot
vars:
bootstrap_rhel_extra: >-
{{
lookup('vars', bootstrap_var_key)
| reject('equalto', '')
| join(' ')
}}
ansible.builtin.command: >- ansible.builtin.command: >-
{{ chroot_command }} dnf --releasever={{ os_version_major }} {{ chroot_command }} dnf --releasever={{ os_version_major }}
--setopt=install_weak_deps=False install -y {{ bootstrap_rhel_extra }} --setopt=install_weak_deps=False install -y {{ _rhel_extra }}
register: bootstrap_result register: bootstrap_result
changed_when: bootstrap_result.rc == 0 changed_when: bootstrap_result.rc == 0

View File

@@ -6,38 +6,22 @@
ubuntu: plucky ubuntu: plucky
ubuntu-lts: noble ubuntu-lts: noble
bootstrap_ubuntu_release: "{{ bootstrap_ubuntu_release_map[os] | default('noble') }}" bootstrap_ubuntu_release: "{{ bootstrap_ubuntu_release_map[os] | default('noble') }}"
bootstrap_ubuntu_package_config: >- _config: "{{ lookup('vars', bootstrap_var_key) }}"
bootstrap_ubuntu_base_csv: "{{ (['ca-certificates'] + _config.base) | unique | join(',') }}"
bootstrap_ubuntu_extra_args: >-
{{ {{
lookup('vars', bootstrap_var_key) ((_config.extra | default([])) + (_config.conditional | default([])))
}}
bootstrap_ubuntu_base_packages: >-
{{
bootstrap_ubuntu_package_config.base
| default([])
| reject('equalto', '') | reject('equalto', '')
| list | join(' ')
}} }}
bootstrap_ubuntu_extra_packages: >-
{{
bootstrap_ubuntu_package_config.extra
| default([])
| reject('equalto', '')
| list
}}
bootstrap_ubuntu_base_csv: "{{ bootstrap_ubuntu_base_packages | join(',') }}"
bootstrap_ubuntu_extra: "{{ bootstrap_ubuntu_extra_packages | join(' ') }}"
block: block:
- name: Validate Ubuntu package configuration - name: Validate Ubuntu package configuration
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- bootstrap_ubuntu_package_config is mapping - _config is mapping
- bootstrap_ubuntu_package_config.base is defined - _config.base is sequence
- bootstrap_ubuntu_package_config.base is sequence - _config.extra is sequence
- bootstrap_ubuntu_package_config.base is not string fail_msg: "{{ bootstrap_var_key }} must be a dict with base/extra/conditional keys."
- bootstrap_ubuntu_package_config.extra is defined
- bootstrap_ubuntu_package_config.extra is sequence
- bootstrap_ubuntu_package_config.extra is not string
fail_msg: "bootstrap package definition for {{ bootstrap_var_key }} must be a mapping with base/extra lists."
quiet: true quiet: true
- name: Install Ubuntu base system - name: Install Ubuntu base system
@@ -46,7 +30,7 @@
--keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg
--include={{ bootstrap_ubuntu_base_csv }} --include={{ bootstrap_ubuntu_base_csv }}
{{ bootstrap_ubuntu_release }} /mnt {{ bootstrap_ubuntu_release }} /mnt
http://archive.ubuntu.com/ubuntu/ https://archive.ubuntu.com/ubuntu/
register: bootstrap_ubuntu_base_result register: bootstrap_ubuntu_base_result
changed_when: bootstrap_ubuntu_base_result.rc == 0 changed_when: bootstrap_ubuntu_base_result.rc == 0
@@ -62,7 +46,7 @@
changed_when: bootstrap_ubuntu_update_result.rc == 0 changed_when: bootstrap_ubuntu_update_result.rc == 0
- name: Install extra packages - name: Install extra packages
when: bootstrap_ubuntu_extra_packages | length > 0 when: bootstrap_ubuntu_extra_args | trim | length > 0
ansible.builtin.command: "{{ chroot_command }} apt install -y {{ bootstrap_ubuntu_extra }}" ansible.builtin.command: "{{ chroot_command }} apt install -y {{ bootstrap_ubuntu_extra_args }}"
register: bootstrap_ubuntu_extra_result register: bootstrap_ubuntu_extra_result
changed_when: bootstrap_ubuntu_extra_result.rc == 0 changed_when: bootstrap_ubuntu_extra_result.rc == 0

View File

@@ -1,21 +1,25 @@
--- ---
- name: Bootstrap Void Linux - name: Bootstrap Void Linux
vars: vars:
bootstrap_void_packages: >- _config: "{{ lookup('vars', bootstrap_var_key) }}"
_base_packages: "{{ _config.base | join(' ') }}"
_extra_packages: >-
{{ {{
lookup('vars', bootstrap_var_key) | reject('equalto', '') | join(' ') ((_config.extra | default([])) + (_config.conditional | default([])))
| reject('equalto', '')
| join(' ')
}} }}
block: block:
- name: Install Void Linux base packages - name: Install Void Linux base
ansible.builtin.command: > ansible.builtin.command: >
xbps-install -Sy -r /mnt -R https://repo-default.voidlinux.org/current void-repo-nonfree base-system xbps-install -Sy -r /mnt -R https://repo-default.voidlinux.org/current {{ _base_packages }}
register: bootstrap_void_base_result register: bootstrap_void_base_result
changed_when: bootstrap_void_base_result.rc == 0 changed_when: bootstrap_void_base_result.rc == 0
- name: Install extra packages - name: Install extra packages
when: bootstrap_void_packages | length > 0 when: _extra_packages | trim | length > 0
ansible.builtin.command: > ansible.builtin.command: >
xbps-install -Su -r /mnt {{ bootstrap_void_packages }} xbps-install -Su -r /mnt {{ _extra_packages }}
register: bootstrap_void_extra_result register: bootstrap_void_extra_result
changed_when: bootstrap_void_extra_result.rc == 0 changed_when: bootstrap_void_extra_result.rc == 0

View File

@@ -1,6 +1,6 @@
--- ---
# Common feature-gated packages. Built as a clean list (no empty strings). # Feature-gated packages shared across all distros.
# Arch overrides nftables → iptables-nft; SSH package names vary per distro. # Arch has special nftables handling and composes this differently.
bootstrap_common_conditional: >- bootstrap_common_conditional: >-
{{ {{
( (
@@ -14,158 +14,374 @@ bootstrap_common_conditional: >-
) )
}} }}
bootstrap_rhel_base: >- # ---------------------------------------------------------------------------
{{ # Per-OS package definitions: base (rootfs/group install), extra (post-base),
['bind-utils', 'dhcp-client', 'efibootmgr', # conditional (feature/version-gated, appended by task files).
'glibc-langpack-de', 'glibc-langpack-en', 'lrzsz', # DNF-based distros also carry repos (dnf --repo) and use base as group names.
'lvm2', 'mtr', 'ncurses-term', 'nfs-utils', # ---------------------------------------------------------------------------
'policycoreutils-python-utils', 'shim', 'tmux', 'vim', 'zstd']
+ bootstrap_common_conditional
}}
bootstrap_rhel_versioned: >- bootstrap_rhel:
{{ repos:
['grub2'] - "rhel{{ os_version_major }}-baseos"
+ (['grub2-efi-x64'] if os_version_major | default('') == '8' else ['grub2-efi']) base:
+ (['grub2-tools-extra'] if os_version_major | default('') in ['8', '9'] else []) - core
+ (['python39'] if os_version_major | default('') == '8' else ['python']) - base
+ (['kernel'] if os_version_major | default('') == '10' else []) - standard
+ (['zram-generator'] if os_version_major | default('') in ['9', '10'] else []) extra:
}} - bind-utils
- dhcp-client
- efibootmgr
- glibc-langpack-de
- glibc-langpack-en
- grub2
- lrzsz
- lvm2
- mtr
- ncurses-term
- nfs-utils
- policycoreutils-python-utils
- shim
- tmux
- vim
- zstd
conditional: >-
{{
(['grub2-efi-x64'] if os_version_major | default('') == '8' else ['grub2-efi'])
+ (['grub2-tools-extra'] if os_version_major | default('') in ['8', '9'] else [])
+ (['python39'] if os_version_major | default('') == '8' else ['python'])
+ (['kernel'] if os_version_major | default('') == '10' else [])
+ (['zram-generator'] if os_version_major | default('') in ['9', '10'] else [])
+ bootstrap_common_conditional
}}
bootstrap_rhel: "{{ bootstrap_rhel_base + bootstrap_rhel_versioned }}" bootstrap_almalinux:
repos:
- baseos
- appstream
base:
- core
extra:
- bind-utils
- dhcp-client
- efibootmgr
- glibc-langpack-de
- glibc-langpack-en
- grub2
- grub2-efi
- lrzsz
- lvm2
- mtr
- nc
- ncurses-term
- nfs-utils
- nfsv4-client-utils
- policycoreutils-python-utils
- ppp
- python3
- shim
- tmux
- vim
- zram-generator
- zstd
conditional: >-
{{
(['dbus-daemon'] if (os_version_major | default('10') | int) >= 9 else [])
+ bootstrap_common_conditional
}}
bootstrap_almalinux: >- bootstrap_rocky:
{{ repos:
bootstrap_rhel_base - baseos
+ ['grub2', 'grub2-efi', - appstream
'nfsv4-client-utils', 'nc', 'ppp', 'python3', 'zram-generator'] base:
+ (['dbus-daemon'] if (os_version_major | default('10') | int) >= 9 else []) - core
}} extra:
- bind-utils
- dhcp-client
- efibootmgr
- glibc-langpack-de
- glibc-langpack-en
- grub2
- grub2-efi
- lrzsz
- lvm2
- mtr
- nc
- ncurses-term
- nfs-utils
- nfsv4-client-utils
- policycoreutils-python-utils
- ppp
- python3
- shim
- telnet
- tmux
- util-linux-core
- vim
- wget
- zram-generator
- zstd
conditional: "{{ bootstrap_common_conditional }}"
bootstrap_rocky: >- bootstrap_fedora:
{{ repos:
bootstrap_rhel_base - fedora
+ ['grub2', 'grub2-efi', 'nfsv4-client-utils', 'nc', 'ppp', - fedora-updates
'python3', 'telnet', 'util-linux-core', 'wget', 'zram-generator'] base:
}} - critical-path-base
- core
bootstrap_fedora: >- extra:
{{ - bat
['bat', 'bind-utils', 'btrfs-progs', 'cronie', 'dhcp-client', - bind-utils
'duf', 'efibootmgr', 'entr', 'fish', 'fzf', - btrfs-progs
'glibc-langpack-de', 'glibc-langpack-en', 'grub2', 'grub2-efi', - cronie
'htop', 'iperf3', 'logrotate', 'lrzsz', 'lvm2', - dhcp-client
'nc', 'nfs-utils', 'nfsv4-client-utils', 'polkit', 'ppp', - duf
'python3', 'ripgrep', 'shim', 'tmux', 'vim-default-editor', - efibootmgr
'wget', 'zoxide', 'zram-generator', 'zstd'] - entr
+ bootstrap_common_conditional - fish
}} - fzf
- glibc-langpack-de
bootstrap_debian_base_common: >- - glibc-langpack-en
{{ - grub2
['btrfs-progs', 'cron', 'gnupg', 'grub-efi', 'grub-efi-amd64-signed', - grub2-efi
'grub2-common', 'locales', 'logrotate', 'lvm2', 'python3', 'xfsprogs'] - htop
+ (['cryptsetup-initramfs'] if system_cfg.luks.enabled | bool else []) - iperf3
+ (['openssh-server'] if system_cfg.features.ssh.enabled | bool else []) - logrotate
}} - lrzsz
- lvm2
bootstrap_debian_extra_common: - nc
- apparmor-utils - nfs-utils
- bat - nfsv4-client-utils
- chrony - polkit
- curl - ppp
- entr - python3
- fish - ripgrep
- fzf - shim
- htop - tmux
- jq - vim-default-editor
- libpam-pwquality - wget
- lrzsz - zoxide
- mtr - zram-generator
- ncdu - zstd
- net-tools conditional: "{{ bootstrap_common_conditional }}"
- network-manager
- python-is-python3
- ripgrep
- rsync
- screen
- sudo
- syslog-ng
- tcpd
- vim
- wget
- zstd
bootstrap_debian_extra_versioned: >-
{{
['linux-image-amd64']
+ (['duf'] if (os_version | string) not in ['10', '11'] else [])
+ (['fastfetch'] if (os_version | string) in ['13', 'unstable'] else [])
+ (['neofetch'] if (os_version | string) == '12' else [])
+ (['software-properties-common'] if (os_version | string) not in ['13', 'unstable'] else [])
+ (['systemd-zram-generator'] if (os_version | string) not in ['10', '11'] else [])
+ (['tldr'] if (os_version | string) not in ['13', 'unstable'] else [])
}}
bootstrap_debian: bootstrap_debian:
base: "{{ bootstrap_debian_base_common }}" base:
extra: >- - btrfs-progs
- cron
- cryptsetup-initramfs
- gnupg
- grub-efi
- grub-efi-amd64-signed
- grub2-common
- locales
- logrotate
- lvm2
- openssh-server
- python3
- xfsprogs
extra:
- apparmor-utils
- bat
- chrony
- curl
- entr
- fish
- fzf
- htop
- jq
- libpam-pwquality
- linux-image-amd64
- lrzsz
- mtr
- ncdu
- net-tools
- network-manager
- python-is-python3
- ripgrep
- rsync
- screen
- sudo
- syslog-ng
- tcpd
- vim
- wget
- zstd
conditional: >-
{{ {{
bootstrap_debian_extra_common (['duf'] if (os_version | string) not in ['10', '11'] else [])
+ bootstrap_debian_extra_versioned + (['fastfetch'] if (os_version | string) in ['13', 'unstable'] else [])
+ (['neofetch'] if (os_version | string) == '12' else [])
+ (['software-properties-common'] if (os_version | string) not in ['13', 'unstable'] else [])
+ (['systemd-zram-generator'] if (os_version | string) not in ['10', '11'] else [])
+ (['tldr'] if (os_version | string) not in ['13', 'unstable'] else [])
+ bootstrap_common_conditional + bootstrap_common_conditional
}} }}
bootstrap_ubuntu: bootstrap_ubuntu:
base: base:
- btrfs-progs
- cron
- cryptsetup-initramfs
- gnupg
- grub-efi
- grub-efi-amd64-signed
- grub2-common
- initramfs-tools - initramfs-tools
- linux-image-generic - linux-image-generic
extra: >- - locales
- logrotate
- lvm2
- openssh-server
- python3
- xfsprogs
extra:
- apparmor-utils
- bash-completion
- bat
- chrony
- curl
- dnsutils
- duf
- entr
- eza
- fdupes
- fio
- fish
- fzf
- htop
- jq
- libpam-pwquality
- lrzsz
- mtr
- ncdu
- ncurses-term
- net-tools
- network-manager
- python-is-python3
- ripgrep
- rsync
- screen
- software-properties-common
- sudo
- syslog-ng
- systemd-zram-generator
- tcpd
- tldr
- traceroute
- util-linux-extra
- vim
- wget
- yq
- zoxide
- zstd
conditional: "{{ bootstrap_common_conditional }}"
bootstrap_archlinux:
base:
- base
- btrfs-progs
- cronie
- dhcpcd
- efibootmgr
- fastfetch
- fish
- fzf
- grub
- htop
- libpwquality
- linux
- logrotate
- lrzsz
- lsof
- lvm2
- ncdu
- networkmanager
- nfs-utils
- ppp
- python
- reflector
- rsync
- sudo
- tldr
- tmux
- vim
- zram-generator
extra: []
conditional: >-
{{ {{
bootstrap_debian_base_common (['openssh'] if system_cfg.features.ssh.enabled | bool else [])
+ bootstrap_debian_extra_common + (['iptables-nft'] if system_cfg.features.firewall.toolkit == 'nftables' and system_cfg.features.firewall.enabled | bool else [])
+ ['bash-completion', 'dnsutils', 'duf', 'eza', 'fdupes', 'fio', + (bootstrap_common_conditional | reject('equalto', 'nftables') | list)
'ncurses-term', 'software-properties-common', 'systemd-zram-generator', }}
'tldr', 'traceroute', 'util-linux-extra', 'yq', 'zoxide']
bootstrap_alpine:
base:
- alpine-base
extra:
- btrfs-progs
- chrony
- curl
- e2fsprogs
- linux-lts
- logrotate
- lvm2
- python3
- rsync
- sudo
- util-linux
- vim
- xfsprogs
conditional: >-
{{
(['openssh'] if system_cfg.features.ssh.enabled | bool else [])
+ bootstrap_common_conditional + bootstrap_common_conditional
}} }}
bootstrap_archlinux: >- bootstrap_opensuse:
{{ base:
['base', 'btrfs-progs', 'cronie', 'dhcpcd', 'efibootmgr', 'fastfetch', - patterns-base-base
'fish', 'fzf', 'grub', 'htop', 'libpwquality', 'linux', 'logrotate', extra:
'lrzsz', 'lsof', 'lvm2', 'ncdu', 'networkmanager', 'nfs-utils', - btrfs-progs
'ppp', 'python', 'reflector', - chrony
'rsync', 'sudo', 'tldr', 'tmux', 'vim', 'zram-generator'] - curl
+ (['openssh'] if system_cfg.features.ssh.enabled | bool else []) - e2fsprogs
+ (['iptables-nft'] if system_cfg.features.firewall.toolkit == 'nftables' and system_cfg.features.firewall.enabled | bool else []) - glibc-locale
+ (bootstrap_common_conditional | reject('equalto', 'nftables') | list) - kernel-default
}} - logrotate
- lvm2
- NetworkManager
- python3
- rsync
- sudo
- vim
- xfsprogs
conditional: >-
{{
(['openssh'] if system_cfg.features.ssh.enabled | bool else [])
+ bootstrap_common_conditional
}}
bootstrap_alpine: >- bootstrap_void:
{{ base:
['alpine-base', 'btrfs-progs', 'chrony', 'curl', 'e2fsprogs', - base-system
'linux-lts', 'logrotate', 'lvm2', 'python3', 'rsync', 'sudo', - void-repo-nonfree
'util-linux', 'vim', 'xfsprogs'] extra:
+ (['openssh'] if system_cfg.features.ssh.enabled | bool else []) - btrfs-progs
+ bootstrap_common_conditional - chrony
}} - curl
- dhcpcd
bootstrap_opensuse: >- - e2fsprogs
{{ - logrotate
['btrfs-progs', 'chrony', 'curl', 'e2fsprogs', - lvm2
'glibc-locale', 'kernel-default', 'logrotate', 'lvm2', 'NetworkManager', - python3
'python3', 'rsync', 'sudo', 'vim', 'xfsprogs'] - rsync
+ (['openssh'] if system_cfg.features.ssh.enabled | bool else []) - sudo
+ bootstrap_common_conditional - vim
}} - xfsprogs
conditional: >-
bootstrap_void: >- {{
{{ (['openssh'] if system_cfg.features.ssh.enabled | bool else [])
['btrfs-progs', 'chrony', 'curl', 'dhcpcd', 'e2fsprogs', + bootstrap_common_conditional
'logrotate', 'lvm2', 'python3', 'rsync', 'sudo', }}
'vim', 'xfsprogs']
+ (['openssh'] if system_cfg.features.ssh.enabled | bool else [])
+ bootstrap_common_conditional
}}