Files
dockernecontainer/nnm/install.sh
T
2026-05-21 18:42:57 +03:00

46 lines
1.5 KiB
Bash
Executable File

#!/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"