{% from "blender/map.jinja" import blender with context %} # 1. Download and extract directly from download.blender.org blender_extract_tarball: archive.extracted: - name: {{ blender.archive_dir }} - source: {{ blender.download_url }} - skip_verify: True - enforce_ownership_on: {{ blender.archive_dir }} - options: '--strip-components=1' - if_missing: {{ blender.archive_dir }}/blender # Pass a modern browser User-Agent to bypass CDN bot filters - http_headers: User-Agent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' # 2. Maintain generic symlink pointing to active version blender_opt_symlink: file.symlink: - name: {{ blender.symlink_dir }} - target: {{ blender.archive_dir }} - force: True - require: - archive: blender_extract_tarball # 3. Create CLI launcher symlink blender_bin_symlink: file.symlink: - name: {{ blender.bin_dir }}/blender - target: {{ blender.symlink_dir }}/blender - force: True - require: - file: blender_opt_symlink # 4. Deploy desktop menu shortcut blender_desktop_entry: file.managed: - name: {{ blender.desktop_dir }}/blender.desktop - source: salt://blender/templates/blender.desktop.jinja - template: jinja - mode: '0644' - user: root - group: root - context: version: "{{ blender.version }}" exec_path: "{{ blender.symlink_dir }}/blender %f" icon_path: "{{ blender.symlink_dir }}/blender.svg" - require: - file: blender_opt_symlink