From 5c7adf481e7292fc1646f1555cf0472371f10aae Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Mon, 10 Aug 2026 05:45:29 -0400 Subject: [PATCH] Added initial vibe-coded project from Gemini --- README.md | 30 ++++++++++++++++- blender/init.sls | 45 +++++++++++++++++++++++++ blender/map.jinja | 23 +++++++++++++ blender/templates/blender.desktop.jinja | 10 ++++++ pillar.example | 6 ++++ 5 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 blender/init.sls create mode 100644 blender/map.jinja create mode 100644 blender/templates/blender.desktop.jinja create mode 100644 pillar.example diff --git a/README.md b/README.md index c8e86cb..36fef12 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,31 @@ # blender-formula -SaltStack formula to install Blender \ No newline at end of file +Formula to manage Blender installations + +## Available States + +### blender + +Includes all of the states required to install Blender. + +### blender.install + +Installs blender from the tarball source package. + +## Configuring Blender + +The most important variable to worry about is the `version` setting. This will tell the formula which version to download and install from [Blender](https://blender.org) + +```yaml +blender: + version: 4.1.0 +``` + +You can also modify the `download_url_base` setting if you wish to download Blender from another service: + +```yaml +blender: + download_url_base: 'https://download.example.com/blender/' +``` + +Please refer to `pillar.example` for a complete reference. diff --git a/blender/init.sls b/blender/init.sls new file mode 100644 index 0000000..65ec4d9 --- /dev/null +++ b/blender/init.sls @@ -0,0 +1,45 @@ +{% from "blender/map.jinja" import blender with context %} + +# 1. Download and extract archive +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 + +# 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 \ No newline at end of file diff --git a/blender/map.jinja b/blender/map.jinja new file mode 100644 index 0000000..0cd6c25 --- /dev/null +++ b/blender/map.jinja @@ -0,0 +1,23 @@ +{% set default_version = '4.2.0' %} +{% set default_major = default_version.split('.')[0] ~ '.' ~ default_version.split('.')[1] %} + +{% set defaults = { + 'version': default_version, + 'install_root': '/opt', + 'bin_dir': '/usr/local/bin', + 'desktop_dir': '/usr/share/applications', + 'download_url_base': 'https://download.blender.org/release/Blender' ~ default_major +} %} + +{# Merge pillar data under the 'blender' key over defaults #} +{% set blender = salt['pillar.get']('blender', default=defaults, merge=True) %} + +{# Calculate derived paths dynamically #} +{% set major_version = blender.version.split('.')[0] ~ '.' ~ blender.version.split('.')[1] %} +{% set archive_name = 'blender-' ~ blender.version ~ '-linux-x64' %} + +{% do blender.update({ + 'archive_dir': blender.install_root ~ '/' ~ archive_name, + 'symlink_dir': blender.install_root ~ '/blender', + 'download_url': blender.download_url_base ~ '/' ~ archive_name ~ '.tar.xz' +}) %} \ No newline at end of file diff --git a/blender/templates/blender.desktop.jinja b/blender/templates/blender.desktop.jinja new file mode 100644 index 0000000..239e54f --- /dev/null +++ b/blender/templates/blender.desktop.jinja @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Blender {{ version }} +GenericName=3D modeller +Comment=3D creation suite +Exec={{ exec_path }} +Icon={{ icon_path }} +Terminal=false +Type=Application +Categories=Graphics;3DGraphics; +MimeType=application/x-blender; \ No newline at end of file diff --git a/pillar.example b/pillar.example new file mode 100644 index 0000000..4b3df38 --- /dev/null +++ b/pillar.example @@ -0,0 +1,6 @@ +blender: + version: 4.1.0 + install_root: /opt + bin_dir: /usr/local/bin + desktop_dir: /usr/share/applications + download_url_base: https://download.blender.org/release/Blender