Files
blender-formula/blender/init.sls
T
2026-08-10 06:09:38 -04:00

72 lines
2.2 KiB
Plaintext

{% from "blender/map.jinja" import blender with context %}
# 1. Install prerequisites self-contained inside the formula
blender_prereqs:
pkg.installed:
- pkgs: {{ blender.pkgs | json }}
# 2. Download tarball via system curl (preserves User-Agent across CDN redirects)
blender_download_tarball:
cmd.run:
- name: |
curl -sSL -A "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" \
-o /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz \
{{ blender.download_url }}
- creates: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
- unless:
- test -d {{ blender.archive_dir }}
- require:
- pkg: blender_prereqs
# 3. Extract tarball
blender_extract_tarball:
archive.extracted:
- name: {{ blender.archive_dir }}
- source: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
- enforce_ownership_on: {{ blender.archive_dir }}
- options: '--strip-components=1'
- if_missing: {{ blender.archive_dir }}/blender
- require:
- cmd: blender_download_tarball
- pkg: blender_prereqs
# 4. 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
# 5. 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
# 6. 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
# 7. Clean up downloaded archive
blender_cleanup_tarball:
file.absent:
- name: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
- require:
- archive: blender_extract_tarball