mrrl-containers

MRRL version of container scripts
git clone https://ccx.te2000.cz/git/mrrl-containers
Log | Files | Refs

commit d1501b35f0bba121dedf2f1c616bb2a0acd02607
parent c2bcc84fc15a17ecb166e7bcba3d154b1743fbca
Author: Jan Pobříslo <ccx@te2000.cz>
Date:   Thu, 23 Jun 2022 01:37:10 +0200

Unify tarball unpack, install and cleanup into one step as it's not idempotent
Diffstat:
Mzsh-functions/confz_containers_init | 39+++++++++++++++++++++------------------
1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init @@ -981,27 +981,31 @@ confz_container_nix_bootstrap_utils_check() { [[ -f $vars[root]/bin/test ]] } -confz_container_nix_unpacked_check() { - checkvars containers_dir root user filename - local download_dir=$vars[containers_dir]/download-cache +confz_container_nix_image_installed_check() { + checkvars containers_dir root user filename uid gid + checkvars filename image_name svscan_dir root - do_command=( - s6-setuidgid $vars[user] - tar -xpC "$vars[root]" -f "$download_dir/$vars[filename]" - ) + require fs_r flags=r filename=$vars[root]/${vars[filename]%.tar.*} - [[ -f $vars[root]/${vars[filename]%.tar.*}/install ]] + require fs_d filename="$vars[root]/nix" + require fs_m filename="$vars[root]/nix" mode=0755 + require fs_o filename="$vars[root]/nix" owner=$vars[uid]:$vars[gid] + + [[ -d $vars[root]/nix/store ]] } -confz_container_nix_image_installed_check() { - checkvars filename image_name svscan_dir root +confz_container_nix_image_installed_do() { + s6-setuidgid $vars[user] \ + tar -xpC "$vars[root]" -f "$download_dir/$vars[filename]" \ + || die "Unpacking ${(qqq)vars[filename]} failed" - do_command=( - $commands[cd] $vars[svscan_dir]/container.$vars[image_name].sysroot - container_sysroot_run - /${vars[filename]%.tar.*}/install - ) - [[ -d $vars[root]/nix/store ]] + $commands[cd] $vars[svscan_dir]/container.$vars[image_name].sysroot \ + container_sysroot_run \ + /${vars[filename]%.tar.*}/install \ + || die "Nix installation script failed" + + rm -rf $vars[root]/${vars[filename]%.tar.*} \ + || die "Removing tarball directory failed" } confz_container_nix_image_check() { @@ -1026,9 +1030,8 @@ confz_container_nix_image_check() { require container_nix_bootstrap_utils :user :root :uid :gid :svscan_dir \ :image_name arch=x86_64 # TODO: infer correct arch - require container_nix_unpacked :containers_dir :filename :root :user require container_nix_image_installed :filename :root :image_name \ - :svscan_dir + :svscan_dir :uid :gid } confz_container_nix_packages_installed_check() {