diff options
35 files changed, 62 insertions, 299 deletions
diff --git a/roles/host/tasks/poudriere.yml b/roles/host/tasks/poudriere.yml index 83098b7..1d0fd58 100644 --- a/roles/host/tasks/poudriere.yml +++ b/roles/host/tasks/poudriere.yml @@ -47,14 +47,6 @@ shell: poudriere ports -c -p custom -m null -M /usr/ports/custom when: _poudriere_custom_exists.rc != 0 -- name: Deploy poudriere package list - template: - src: usr_local_etc_poudriere_pkglist.j2 - dest: /usr/local/etc/poudriere-pkglist - owner: root - group: wheel - mode: "0644" - - name: Deploy poudriere-start-build script template: src: usr_local_bin_poudriere_start_build.sh.j2 diff --git a/roles/host/templates/poudriere_build_make.conf.j2 b/roles/host/templates/poudriere_build_make.conf.j2 index 6bc860f..4205292 100644 --- a/roles/host/templates/poudriere_build_make.conf.j2 +++ b/roles/host/templates/poudriere_build_make.conf.j2 @@ -1,2 +1,3 @@ DEFAULT_VERSIONS+=python=3.12 python3=3.12 +DEFAULT_VERSIONS+=php=8.4 DISABLE_LICENSES=yes diff --git a/roles/host/templates/usr_local_bin_update_ports.sh.j2 b/roles/host/templates/usr_local_bin_update_ports.sh.j2 index ad4102d..7063652 100644 --- a/roles/host/templates/usr_local_bin_update_ports.sh.j2 +++ b/roles/host/templates/usr_local_bin_update_ports.sh.j2 @@ -53,6 +53,13 @@ custom) rm -rf "${BASEDIR}/custom" git clone "$REMOTE_CUSTOM" "${BASEDIR}/custom" fi + + # Regenerate poudriere pkglist from all ports in the overlay + echo "Regenerating poudriere pkglist..." + find "${BASEDIR}/custom" -name Makefile -mindepth 3 -maxdepth 3 | \ + sed "s|${BASEDIR}/custom/||; s|/Makefile||" | \ + sort > /usr/local/etc/poudriere-pkglist + echo "Pkglist updated: $(wc -l < /usr/local/etc/poudriere-pkglist) ports." echo "Done. Custom ports overlay updated." ;; *) diff --git a/roles/host/templates/usr_local_etc_poudriere_pkglist.j2 b/roles/host/templates/usr_local_etc_poudriere_pkglist.j2 deleted file mode 100644 index debb842..0000000 --- a/roles/host/templates/usr_local_etc_poudriere_pkglist.j2 +++ /dev/null @@ -1,12 +0,0 @@ -databases/py-tinydb -www/py-ua-parser -www/py-user-agents -sysutils/pylogsentinel -net-im/taulubot -net-im/hommabot -www/aggro -www/diddle -www/expense-tracker -www/gdrive-photo-gallery -www/pastebin -multimedia/plexmediaserver diff --git a/roles/jail/tasks/jail_setup.yml b/roles/jail/tasks/jail_setup.yml index 931133f..f50562a 100644 --- a/roles/jail/tasks/jail_setup.yml +++ b/roles/jail/tasks/jail_setup.yml @@ -280,14 +280,6 @@ group: wheel mode: "0644" -- name: Set default Python version - copy: - content: "DEFAULT_VERSIONS+=python=3.12 python3=3.12\n" - dest: /etc/make.conf - owner: root - group: wheel - mode: "0644" - - name: Install packages shell: "pkg install -y {{ pkg | join(' ') }}" environment: diff --git a/roles/jails/02_postgres/defaults/main.yml b/roles/jails/02_postgres/defaults/main.yml index b01e2c3..77097b0 100644 --- a/roles/jails/02_postgres/defaults/main.yml +++ b/roles/jails/02_postgres/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" devfs_ruleset: 5 zfs: diff --git a/roles/jails/03_irc_thelounge/defaults/main.yml b/roles/jails/03_irc_thelounge/defaults/main.yml index 858df0e..cc29940 100644 --- a/roles/jails/03_irc_thelounge/defaults/main.yml +++ b/roles/jails/03_irc_thelounge/defaults/main.yml @@ -1,19 +1,11 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/irc_thelounge mountpoint: /var/db/thelounge -pkg: - - pcre2 - - npm-node24 - - yarn-node24 - - git - -files: - - src: usr_local_etc_rc.d_thelounge - dest: /usr/local/etc/rc.d/thelounge - mode: "0755" +pkg_custom: + - thelounge services: - thelounge diff --git a/roles/jails/03_irc_thelounge/tasks/main.yml b/roles/jails/03_irc_thelounge/tasks/main.yml index f21ff80..2dcc44c 100644 --- a/roles/jails/03_irc_thelounge/tasks/main.yml +++ b/roles/jails/03_irc_thelounge/tasks/main.yml @@ -2,22 +2,13 @@ name: jail tasks_from: jail_setup -- name: Clone thelounge - shell: | - git clone --depth 1 --branch v4.4.3 https://github.com/thelounge/thelounge.git /usr/local/share/thelounge - args: - creates: /usr/local/share/thelounge - -- name: Install thelounge dependencies and build - shell: cd /usr/local/share/thelounge && yarn install && NODE_ENV=production yarn build - args: - creates: /usr/local/share/thelounge/dist - -- name: Link thelounge binary - file: - src: /usr/local/share/thelounge/index.js - dest: /usr/local/bin/thelounge - state: link +- name: Set thelounge user and group + community.general.sysrc: + name: "{{ item.name }}" + value: "{{ item.value }}" + loop: + - { name: thelounge_user, value: root } + - { name: thelounge_group, value: wheel } - name: Deploy thelounge config copy: diff --git a/roles/jails/03_irc_thelounge/templates/usr_local_etc_rc.d_thelounge b/roles/jails/03_irc_thelounge/templates/usr_local_etc_rc.d_thelounge deleted file mode 100644 index 16afd5d..0000000 --- a/roles/jails/03_irc_thelounge/templates/usr_local_etc_rc.d_thelounge +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -# PROVIDE: thelounge -# REQUIRE: NETWORKING -# KEYWORD: shutdown - -. /etc/rc.subr - -name="thelounge" -rcvar="thelounge_enable" - -thelounge_env="THELOUNGE_HOME=/var/db/thelounge PATH=$PATH:/usr/local/bin" -pidfile="/var/run/${name}.pid" - -start_cmd="${name}_start" -stop_cmd="${name}_stop" -status_cmd="${name}_status" - -thelounge_start() -{ - echo "Starting ${name}..." - env ${thelounge_env} daemon -p ${pidfile} -o /var/log/thelounge.log /usr/local/bin/thelounge start -} - -thelounge_stop() -{ - if [ -f ${pidfile} ]; then - echo "Stopping ${name}..." - kill $(cat ${pidfile}) 2>/dev/null - rm -f ${pidfile} - fi -} - -thelounge_status() -{ - if [ -f ${pidfile} ] && kill -0 $(cat ${pidfile}) 2>/dev/null; then - echo "${name} is running as pid $(cat ${pidfile})" - else - echo "${name} is not running" - return 1 - fi -} - -load_rc_config $name -run_rc_command "$1" diff --git a/roles/jails/04_taulubot/defaults/main.yml b/roles/jails/04_taulubot/defaults/main.yml index 6b430a9..1c3f946 100644 --- a/roles/jails/04_taulubot/defaults/main.yml +++ b/roles/jails/04_taulubot/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/taulubot diff --git a/roles/jails/04_taulubot/templates/usr_local_etc_rc.d_taulubot b/roles/jails/04_taulubot/templates/usr_local_etc_rc.d_taulubot deleted file mode 100644 index 8d5fed1..0000000 --- a/roles/jails/04_taulubot/templates/usr_local_etc_rc.d_taulubot +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh - -# PROVIDE: taulubot -# REQUIRE: NETWORKING -# KEYWORD: shutdown - -. /etc/rc.subr - -name="taulubot" -rcvar="taulubot_enable" -pidfile="/var/run/${name}.pid" - -start_cmd="${name}_start" -stop_cmd="${name}_stop" -status_cmd="${name}_status" - -taulubot_start() -{ - echo "Starting ${name}..." - cd /usr/local/taulubot - daemon -p ${pidfile} -o /var/log/taulubot.log env BOT_TOKEN="{{ taulubot_token }}" /usr/local/bin/python3.11 taulubot.py -} - -taulubot_stop() -{ - if [ -f ${pidfile} ]; then - echo "Stopping ${name}..." - kill $(cat ${pidfile}) 2>/dev/null - rm -f ${pidfile} - fi -} - -taulubot_status() -{ - if [ -f ${pidfile} ] && kill -0 $(cat ${pidfile}) 2>/dev/null; then - echo "${name} is running as pid $(cat ${pidfile})" - else - echo "${name} is not running" - return 1 - fi -} - -load_rc_config $name -run_rc_command "$1" diff --git a/roles/jails/05_homepage/defaults/main.yml b/roles/jails/05_homepage/defaults/main.yml index 9412f75..dbf767e 100644 --- a/roles/jails/05_homepage/defaults/main.yml +++ b/roles/jails/05_homepage/defaults/main.yml @@ -1,4 +1,8 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" + +zfs: + - name: zroot/jails/volumes/homepage_www + mountpoint: /var/www pkg: - pcre2 @@ -12,8 +16,5 @@ files: - src: etc_crontab.j2 dest: /etc/crontab -dirs: - - /var/www - services: - nginx diff --git a/roles/jails/06_hommabot/defaults/main.yml b/roles/jails/06_hommabot/defaults/main.yml index 5f85efa..997ee86 100644 --- a/roles/jails/06_hommabot/defaults/main.yml +++ b/roles/jails/06_hommabot/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/hommabot_data diff --git a/roles/jails/07_aggro/defaults/main.yml b/roles/jails/07_aggro/defaults/main.yml index 8ffd217..0077cf3 100644 --- a/roles/jails/07_aggro/defaults/main.yml +++ b/roles/jails/07_aggro/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/aggro_data diff --git a/roles/jails/08_diddle/defaults/main.yml b/roles/jails/08_diddle/defaults/main.yml index c4ab505..090340b 100644 --- a/roles/jails/08_diddle/defaults/main.yml +++ b/roles/jails/08_diddle/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/diddle_data diff --git a/roles/jails/09_redis/defaults/main.yml b/roles/jails/09_redis/defaults/main.yml index 7509f0d..75df5f8 100644 --- a/roles/jails/09_redis/defaults/main.yml +++ b/roles/jails/09_redis/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/valkey_data diff --git a/roles/jails/10_samba/defaults/main.yml b/roles/jails/10_samba/defaults/main.yml index 5cecd95..4416022 100644 --- a/roles/jails/10_samba/defaults/main.yml +++ b/roles/jails/10_samba/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" pkg: - samba419 diff --git a/roles/jails/11_spliit/defaults/main.yml b/roles/jails/11_spliit/defaults/main.yml index e7f9f30..7ce40cd 100644 --- a/roles/jails/11_spliit/defaults/main.yml +++ b/roles/jails/11_spliit/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/spliit_data diff --git a/roles/jails/12_goaccess/defaults/main.yml b/roles/jails/12_goaccess/defaults/main.yml index f1e00be..98a2e43 100644 --- a/roles/jails/12_goaccess/defaults/main.yml +++ b/roles/jails/12_goaccess/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/goaccess_data diff --git a/roles/jails/13_plex/defaults/main.yml b/roles/jails/13_plex/defaults/main.yml index 49e5511..4ae644c 100644 --- a/roles/jails/13_plex/defaults/main.yml +++ b/roles/jails/13_plex/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/plex_data diff --git a/roles/jails/14_freshrss/defaults/main.yml b/roles/jails/14_freshrss/defaults/main.yml index 6804a0f..447d93b 100644 --- a/roles/jails/14_freshrss/defaults/main.yml +++ b/roles/jails/14_freshrss/defaults/main.yml @@ -1,36 +1,16 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/freshrss_data - mountpoint: /usr/local/FreshRSS/data + mountpoint: /var/db/freshrss owner: "80" group: "80" pkg: - - pcre2 - nginx - - php82 - - php82-ctype - - php82-curl - - php82-dom - - php82-filter - - php82-gd - - php82-iconv - - php82-mbstring - - php82-opcache - - php82-pdo - - php82-pdo_sqlite - - php82-phar - - php82-posix - - php82-session - - php82-simplexml - - php82-sqlite3 - - php82-tokenizer - - php82-xml - - php82-xmlreader - - php82-xmlwriter - - php82-zip - - php82-extensions + +pkg_custom: + - freshrss-php84 files: - src: usr_local_etc_nginx_nginx.conf diff --git a/roles/jails/14_freshrss/tasks/main.yml b/roles/jails/14_freshrss/tasks/main.yml index 50b8e7c..460b037 100644 --- a/roles/jails/14_freshrss/tasks/main.yml +++ b/roles/jails/14_freshrss/tasks/main.yml @@ -2,16 +2,6 @@ name: jail tasks_from: jail_setup -- name: Download FreshRSS - shell: | - if [ ! -f /usr/local/FreshRSS/constants.php ]; then - fetch -qo /tmp/freshrss.tar.gz https://github.com/FreshRSS/FreshRSS/archive/refs/heads/edge.tar.gz - tar -xf /tmp/freshrss.tar.gz --strip-components=1 -C /usr/local/FreshRSS - rm -f /tmp/freshrss.tar.gz - fi - register: _freshrss_download - changed_when: "'constants.php' not in _freshrss_download.cmd" - - name: Create php-fpm socket directory file: path: /var/run/php @@ -20,13 +10,6 @@ group: www mode: "0755" -- name: Symlink FreshRSS public to webroot - file: - src: /usr/local/FreshRSS/p - dest: /var/www - state: link - force: true - - import_role: name: jail tasks_from: jail_launch diff --git a/roles/jails/14_freshrss/templates/usr_local_etc_nginx_nginx.conf b/roles/jails/14_freshrss/templates/usr_local_etc_nginx_nginx.conf index f486e13..5bdeede 100644 --- a/roles/jails/14_freshrss/templates/usr_local_etc_nginx_nginx.conf +++ b/roles/jails/14_freshrss/templates/usr_local_etc_nginx_nginx.conf @@ -15,7 +15,7 @@ http { listen 80; server_name freshrss.jan.systems; - root /var/www; + root /usr/local/www/freshrss/p; index index.php index.html index.htm; access_log /var/log/freshrss.access.log; diff --git a/roles/jails/15_paste/defaults/main.yml b/roles/jails/15_paste/defaults/main.yml index 165ddf0..d32f815 100644 --- a/roles/jails/15_paste/defaults/main.yml +++ b/roles/jails/15_paste/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/paste_data diff --git a/roles/jails/16_dl/defaults/main.yml b/roles/jails/16_dl/defaults/main.yml index f94cf26..6ecca6d 100644 --- a/roles/jails/16_dl/defaults/main.yml +++ b/roles/jails/16_dl/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" devfs_ruleset: 4 jail_conf_options: diff --git a/roles/jails/17_syncthing/defaults/main.yml b/roles/jails/17_syncthing/defaults/main.yml index 51a6909..b60c952 100644 --- a/roles/jails/17_syncthing/defaults/main.yml +++ b/roles/jails/17_syncthing/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" nullfs: - src: /usr/local/jails/volumes/storage/docs diff --git a/roles/jails/17_syncthing/tasks/main.yml b/roles/jails/17_syncthing/tasks/main.yml index 91eb61c..9b0a379 100644 --- a/roles/jails/17_syncthing/tasks/main.yml +++ b/roles/jails/17_syncthing/tasks/main.yml @@ -2,13 +2,17 @@ name: jail tasks_from: jail_setup -- name: Set syncthing user UID to 1001 - shell: pw usermod syncthing -u 1001 -g 1001 || true - changed_when: false - - name: Set syncthing group GID to 1001 - shell: pw groupmod syncthing -g 1001 || true - changed_when: false + shell: pw groupmod syncthing -g 1001 + register: _syncthing_group + failed_when: "_syncthing_group.rc != 0 and 'already' not in _syncthing_group.stderr" + changed_when: "_syncthing_group.rc == 0" + +- name: Set syncthing user UID to 1001 + shell: pw usermod syncthing -u 1001 -g 1001 + register: _syncthing_user + failed_when: "_syncthing_user.rc != 0 and 'already' not in _syncthing_user.stderr" + changed_when: "_syncthing_user.rc == 0" - import_role: name: jail diff --git a/roles/jails/18_komga/defaults/main.yml b/roles/jails/18_komga/defaults/main.yml index 70d0877..3010e4f 100644 --- a/roles/jails/18_komga/defaults/main.yml +++ b/roles/jails/18_komga/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/komga_data @@ -9,13 +9,11 @@ nullfs: dst: /mnt/manga pkg: - - openjdk25-jre-headless - poppler-utils - zip -dirs: - - /usr/local/etc/rc.d # no packages to set this up automatically - - /usr/local/komga +pkg_custom: + - komga services: - komga diff --git a/roles/jails/18_komga/tasks/main.yml b/roles/jails/18_komga/tasks/main.yml index b3818e2..41a5ed1 100644 --- a/roles/jails/18_komga/tasks/main.yml +++ b/roles/jails/18_komga/tasks/main.yml @@ -2,31 +2,6 @@ name: jail tasks_from: jail_setup -- name: Download komga jar - shell: | - if [ ! -f /usr/local/komga/komga.jar ]; then - mkdir -p /usr/local/komga - fetch -qo /usr/local/komga/komga.jar https://github.com/gotson/komga/releases/download/1.24.1/komga-1.24.1.jar - fi - register: _komga_download - changed_when: _komga_download.rc == 0 and 'mkdir' in _komga_download.cmd - -- name: Deploy komga wrapper script - template: - src: "{{ jail_role_dir }}/templates/usr_local_bin_komga" - dest: /usr/local/bin/komga - owner: root - group: wheel - mode: "0755" - -- name: Deploy komga rc.d script - template: - src: "{{ jail_role_dir }}/templates/usr_local_etc_rc.d_komga" - dest: /usr/local/etc/rc.d/komga - owner: root - group: wheel - mode: "0755" - - name: Deploy convert-pdfs script template: src: "{{ jail_role_dir }}/templates/usr_local_bin_convert_pdfs" diff --git a/roles/jails/18_komga/templates/usr_local_bin_komga b/roles/jails/18_komga/templates/usr_local_bin_komga deleted file mode 100644 index 47cf18c..0000000 --- a/roles/jails/18_komga/templates/usr_local_bin_komga +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -exec /usr/local/bin/java -jar /usr/local/komga/komga.jar --server.port=80 --komga.config-dir=/var/db/komga diff --git a/roles/jails/18_komga/templates/usr_local_etc_rc.d_komga b/roles/jails/18_komga/templates/usr_local_etc_rc.d_komga deleted file mode 100644 index 750b774..0000000 --- a/roles/jails/18_komga/templates/usr_local_etc_rc.d_komga +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh - -# PROVIDE: komga -# REQUIRE: NETWORKING -# KEYWORD: shutdown - -. /etc/rc.subr - -name="komga" -rcvar="komga_enable" -pidfile="/var/run/${name}.pid" - -load_rc_config "$name" - -: ${komga_enable:="NO"} - -start_cmd="${name}_start" -stop_cmd="${name}_stop" -status_cmd="${name}_status" - -komga_start() -{ - echo "Starting ${name}..." - daemon -p "${pidfile}" -o /var/log/komga.log \ - /usr/local/bin/komga -} - -komga_stop() -{ - if [ -f "${pidfile}" ]; then - echo "Stopping ${name}..." - kill "$(cat "${pidfile}")" 2>/dev/null - rm -f "${pidfile}" - fi -} - -komga_status() -{ - if [ -f "${pidfile}" ] && kill -0 "$(cat "${pidfile}")" 2>/dev/null; then - echo "${name} is running as pid $(cat "${pidfile}")" - else - echo "${name} is not running" - return 1 - fi -} - -run_rc_command "$1" diff --git a/roles/jails/19_leolalla_fi/defaults/main.yml b/roles/jails/19_leolalla_fi/defaults/main.yml index f120db1..a9157e2 100644 --- a/roles/jails/19_leolalla_fi/defaults/main.yml +++ b/roles/jails/19_leolalla_fi/defaults/main.yml @@ -1,4 +1,4 @@ -userland: "15.0-RELEASE" +userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/leolalla_fi_data diff --git a/roles/jails/19_leolalla_fi/templates/usr_local_bin_gdrive_photo_gallery b/roles/jails/19_leolalla_fi/templates/usr_local_bin_gdrive_photo_gallery deleted file mode 100644 index 92b911c..0000000 --- a/roles/jails/19_leolalla_fi/templates/usr_local_bin_gdrive_photo_gallery +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -set -e -. /usr/local/etc/gdrive-photo-gallery.env -export GDRIVE_FOLDER GAPI_KEY AUTHOR IG_LINK BASE_URL -cd /usr/local/gdrive-photo-gallery -exec /usr/local/bin/uv run gunicorn --bind 0.0.0.0:80 app:app -w 1 diff --git a/roles/jails/20_immich/defaults/main.yml b/roles/jails/20_immich/defaults/main.yml index 518dfec..b3347d3 100644 --- a/roles/jails/20_immich/defaults/main.yml +++ b/roles/jails/20_immich/defaults/main.yml @@ -1,5 +1,8 @@ -userland: "15.0-RELEASE" -immich_version: "v2.4.1" +userland: "15.1-RELEASE" +immich_version: "v3.0.3" + +dirs: + - /usr/local/etc/rc.d oci_images: - name: immich-server @@ -33,7 +33,7 @@ PID_FILE="${VM_DIR}/qemu.pid" MONITOR_SOCK="${VM_DIR}/qemu-monitor.sock" SERIAL_SOCK="${VM_DIR}/qemu-serial.sock" -FREEBSD_VERSION="${FREEBSD_VERSION:-15.0}" +FREEBSD_VERSION="${FREEBSD_VERSION:-15.1}" IMAGE_NAME="FreeBSD-${FREEBSD_VERSION}-RELEASE-arm64-aarch64-BASIC-CLOUDINIT-zfs.qcow2" IMAGE_XZ="${VM_DIR}/${IMAGE_NAME}.xz" IMAGE_URL="https://download.freebsd.org/releases/VM-IMAGES/${FREEBSD_VERSION}-RELEASE/aarch64/Latest/${IMAGE_NAME}.xz" |
