--- # Split out of _hardware.yml so fixtures can seed the inputs and assert the # resolved _hardware_packages list with no chroot/install. - name: Resolve hardware package set vars: _family: "{{ bootstrap_hardware_packages[os_family] }}" _disable: "{{ _hardware_profile_disable | default([]) | list }}" _profile_packages: "{{ (_hardware_profile_packages | default({}))[os_family] | default([]) | list }}" _cpu: "{{ hardware_profile_active.cpu | default('') | string }}" _gpus: "{{ hardware_profile_active.gpus | default([]) | difference(_disable) | list }}" _wifi: "{{ hardware_profile_active.wireless | default([]) | difference(_disable) | list }}" _fp_detected: "{{ hardware_profile_active.fingerprint | default(false) | bool }}" _audio: "{{ hardware_profile_active.audio | default([]) | difference(_disable) | list }}" _bt_detected: "{{ hardware_profile_active.bluetooth | default(false) | bool }}" _firmware_on: "{{ system_cfg.features.firmware.enabled | bool }}" _microcode_on: "{{ _firmware_on and (system_cfg.features.firmware.microcode | bool) }}" _gpu_on: "{{ system_cfg.features.gpu.enabled | bool }}" _peripherals_on: "{{ system_cfg.features.peripherals.enabled | bool }}" _camera_pref: "{{ system_cfg.features.peripherals.camera | default('auto') }}" _camera_uvc: "{{ hardware_profile_active.camera.uvc | default(false) | bool }}" _camera_ipu6: "{{ hardware_profile_active.camera.ipu6 | default(false) | bool }}" _fp_pref: "{{ system_cfg.features.peripherals.fingerprint | default('auto') }}" _audio_pref: "{{ system_cfg.features.peripherals.audio | default('auto') }}" _bt_pref: "{{ system_cfg.features.peripherals.bluetooth | default('auto') }}" _dl_on: "{{ (system_cfg.features.peripherals.displaylink | bool) and ('displaylink' not in _disable) }}" _camera_on: >- {{ _peripherals_on and ('camera' not in _disable) and (_camera_pref == 'true' or (_camera_pref == 'auto' and (_camera_uvc or _camera_ipu6))) }} _fp_on: >- {{ _peripherals_on and ('fingerprint' not in _disable) and (_fp_pref == 'true' or (_fp_pref == 'auto' and _fp_detected)) }} _audio_on: >- {{ _peripherals_on and ('audio' not in _disable) and (_audio_pref == 'true' or (_audio_pref == 'auto' and (_audio | length > 0))) }} _bt_on: >- {{ _peripherals_on and ('bluetooth' not in _disable) and (_bt_pref == 'true' or (_bt_pref == 'auto' and _bt_detected)) }} # Union of GPU/wireless/CPU vendors; CPU vendor is included so Intel-CPU # systems pull i915/iwlwifi firmware via the same vendor split. _cpu_vendor_list: "{{ ([_cpu] if (_cpu | length > 0 and _cpu not in _disable) else []) | list }}" _firmware_vendors: >- {{ (_firmware_on | ternary( (_gpus + _wifi + _cpu_vendor_list) | reject('equalto', '') | unique | list, [] )) }} _microcode_pkgs: >- {{ ((_microcode_on and _cpu | length > 0 and _cpu not in _disable) | ternary( _family.cpu_microcode[_cpu] | default([]), [] )) | list }} _firmware_pkgs: >- {{ (_firmware_on | ternary( (_family.firmware_base | default([]) | list) + (_firmware_vendors | map('extract', _family.firmware | default({})) | select('truthy') | list | sum(start=[])), [] )) | list }} _gpu_base_pkgs: "{{ (_gpu_on | ternary(_family.gpu_base | default([]), [])) | list }}" _gpu_vendor_pkgs: >- {{ (_gpu_on | ternary( (_gpus | reject('equalto', 'nvidia') | list) | map('extract', _family.gpu | default({})) | select('truthy') | list | sum(start=[]), [] )) | list }} _gpu_nvidia_pkgs: >- {{ ((_gpu_on and ('nvidia' in _gpus)) | ternary( _family.gpu_nvidia[_nvidia_driver_resolved] | default([]), [] )) | list }} _camera_base_pkgs: >- {{ (_camera_on | ternary(_family.camera_base | default([]), [])) | list }} _peripherals_fingerprint_pkgs: >- {{ (_fp_on | ternary(_family.peripherals_fingerprint | default([]), [])) | list }} _peripherals_displaylink_pkgs: >- {{ (_dl_on | ternary(_family.peripherals_displaylink | default([]), [])) | list }} _audio_base_pkgs: "{{ (_audio_on | ternary(_family.audio_base | default([]), [])) | list }}" _bluetooth_base_pkgs: "{{ (_bt_on | ternary(_family.bluetooth_base | default([]), [])) | list }}" ansible.builtin.set_fact: _hardware_packages: >- {{ (_microcode_pkgs + _firmware_pkgs + _gpu_base_pkgs + _gpu_vendor_pkgs + _gpu_nvidia_pkgs + _audio_base_pkgs + _bluetooth_base_pkgs + _camera_base_pkgs + _peripherals_fingerprint_pkgs + _peripherals_displaylink_pkgs + _profile_packages) | reject('equalto', '') | unique | list }}