#!/bin/bash set -euo pipefail command -v podman >/dev/null 2>&1 || { echo "Error: podman not found"; exit 1; } command -v distrobox >/dev/null 2>&1 || { echo "Error: distrobox not found"; exit 1; } SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" CONTAINER="nnm" ALA_DATE="$(grep '^ala_date' "$SCRIPT_DIR/manifest.toml" | sed 's/.*"\(.*\)"/\1/')" BASE_DIGEST="$(grep '^base_image_digest' "$SCRIPT_DIR/manifest.toml" | sed 's/.*"\(.*\)"/\1/')" TAG_INPUT="$(cat "$SCRIPT_DIR/packages.list" "$SCRIPT_DIR/manifest.toml")" IMAGE_TAG="nnm:$(echo -n "$TAG_INPUT" | sha256sum | cut -c1-16)" IMAGE="localhost/$IMAGE_TAG" if ! podman image exists "$IMAGE"; then echo "==> Building image..." podman build \ --build-arg "ALA_DATE=$ALA_DATE" \ --build-arg "BASE_IMAGE_DIGEST=$BASE_DIGEST" \ -t "$IMAGE" -f "$SCRIPT_DIR/Containerfile" "$SCRIPT_DIR" fi echo "==> Copying configs to ~/.config/nvimnemodel/..." mkdir -p ~/.config/nvimnemodel cp -r "$SCRIPT_DIR/config/"* ~/.config/nvimnemodel/ if ! distrobox list 2>/dev/null | grep -qw "$CONTAINER"; then echo "==> Creating distrobox container..." NVIDIA_FLAG="" [[ -d /dev/nvidia0 ]] && NVIDIA_FLAG="--nvidia" distrobox create --name "$CONTAINER" --image "$IMAGE" $NVIDIA_FLAG else echo "==> Container '$CONTAINER' already exists." fi echo "==> Installing /usr/local/bin/nnm..." sudo cp "$SCRIPT_DIR/nnm" /usr/local/bin/nnm sudo chmod +x /usr/local/bin/nnm echo "" echo "==> nnm installed" echo " Run 'nnm' to open a container terminal" echo " Run 'nnm init' to create .envrc for direnv"