--- # Supplements whatever profile is active (detected or full-override) rather than # replacing it: vendor lists union, booleans OR, cpu overrides when set. - name: Merge declarative hardware group over detection vars: _hw: "{{ system_cfg.features.hardware }}" _det: "{{ hardware_profile_active }}" ansible.builtin.set_fact: hardware_profile_active: cpu: "{{ (_hw.cpu | default('') | string | lower) if (_hw.cpu | default('') | length > 0) else _det.cpu }}" gpus: "{{ ((_det.gpus | default([])) + (_hw.gpus | default([]) | map('lower') | list)) | unique | list }}" nvidia_supports_open: "{{ _det.nvidia_supports_open | default(true) | bool }}" wireless: "{{ ((_det.wireless | default([])) + (_hw.wireless | default([]) | map('lower') | list)) | unique | list }}" audio: "{{ ((_det.audio | default([])) + (_hw.audio | default([]) | map('lower') | list)) | unique | list }}" fingerprint: "{{ (_det.fingerprint | default(false) | bool) or (_hw.fingerprint | default(false) | bool) }}" bluetooth: "{{ (_det.bluetooth | default(false) | bool) or (_hw.bluetooth | default(false) | bool) }}" camera: uvc: "{{ (_det.camera.uvc | default(false) | bool) or (_hw.camera.uvc | default(false) | bool) }}" ipu6: "{{ (_det.camera.ipu6 | default(false) | bool) or (_hw.camera.ipu6 | default(false) | bool) }}" _hardware_profile_packages: "{{ _hw.packages | default({}) }}" _hardware_profile_disable: "{{ _hw.disable | default([]) | list }}" _hardware_profile_kernel_params: "{{ _hw.kernel_params | default([]) | list }}"