v1
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
ARG BASE_IMAGE_DIGEST
|
||||||
|
FROM archlinux@${BASE_IMAGE_DIGEST}
|
||||||
|
|
||||||
|
ARG ALA_DATE
|
||||||
|
|
||||||
|
COPY pacman.conf /etc/pacman.conf
|
||||||
|
COPY packages.list /tmp/packages.list
|
||||||
|
COPY config/ /usr/share/nnm/config/
|
||||||
|
|
||||||
|
RUN sed "s|\$ala_date|$ALA_DATE|g" -i /etc/pacman.conf && \
|
||||||
|
pacman -Syu --noconfirm && \
|
||||||
|
pacman -S --noconfirm $(grep -v '^#' /tmp/packages.list | grep -v '^$') && \
|
||||||
|
rm -f /tmp/packages.list
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
font_family JetBrainsMono Nerd Font
|
||||||
|
font_size 13.0
|
||||||
|
disable_ligatures never
|
||||||
|
cursor_shape beam
|
||||||
|
cursor_blink_interval 0.5
|
||||||
|
window_padding_width 6
|
||||||
|
hide_window_decorations no
|
||||||
|
background_opacity 0.97
|
||||||
|
|
||||||
|
foreground #c0caf5
|
||||||
|
background #1a1b26
|
||||||
|
selection_foreground #1a1b26
|
||||||
|
selection_background #c0caf5
|
||||||
|
color0 #15161e
|
||||||
|
color1 #f7768e
|
||||||
|
color2 #9ece6a
|
||||||
|
color3 #e0af68
|
||||||
|
color4 #7aa2f7
|
||||||
|
color5 #bb9af7
|
||||||
|
color6 #7dcfff
|
||||||
|
color7 #a9b1d6
|
||||||
|
color8 #414868
|
||||||
|
color9 #f7768e
|
||||||
|
color10 #9ece6a
|
||||||
|
color11 #e0af68
|
||||||
|
color12 #7aa2f7
|
||||||
|
color13 #bb9af7
|
||||||
|
color14 #7dcfff
|
||||||
|
color15 #c0caf5
|
||||||
|
|
||||||
|
map ctrl+grave send_text all \x1b[96;5u
|
||||||
|
|
||||||
|
tab_bar_style powerline
|
||||||
|
tab_powerline_style slanted
|
||||||
|
map ctrl+shift+t new_tab_with_cwd
|
||||||
|
|
||||||
|
enabled_layouts splits,stack
|
||||||
|
map ctrl+shift+\ launch --location=vsplit --cwd=current
|
||||||
|
map ctrl+shift+- launch --location=hsplit --cwd=current
|
||||||
|
|
||||||
|
scrollback_pager nvim --noplugin -R -c "set nonumber norelativenumber" -
|
||||||
|
|
||||||
|
map ctrl+shift+enter launch --cwd=current --type=window nvim
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
vim.opt.number = true
|
||||||
|
vim.notify("nnm nvim (stub config)")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
PROMPT='%F{green}nnm%f %F{blue}%~%f %# '
|
||||||
Executable
+45
@@ -0,0 +1,45 @@
|
|||||||
|
#!/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"
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ala_date = "2026/05/17"
|
||||||
|
base_image_digest = "sha256:445aaca11be510adf10b9ddcf30259d4ae4c8474530a8d5d71ca93199184ee70"
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
CONTAINER="nnm"
|
||||||
|
CONFIG_DIR="$HOME/.config/nvimnemodel"
|
||||||
|
|
||||||
|
case "${1:-}" in
|
||||||
|
init)
|
||||||
|
DIR="${2:-$PWD}"
|
||||||
|
ENVRC="$DIR/.envrc"
|
||||||
|
if [[ -f "$ENVRC" ]]; then
|
||||||
|
echo ".envrc already exists at $ENVRC"
|
||||||
|
else
|
||||||
|
cat > "$ENVRC" <<-ENVEOF
|
||||||
|
if [ -z "\${NNM_ACTIVE:-}" ]; then
|
||||||
|
export NNM_ACTIVE=1
|
||||||
|
distrobox-enter $CONTAINER
|
||||||
|
fi
|
||||||
|
ENVEOF
|
||||||
|
echo "Created $ENVRC — run 'direnv allow' to activate"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-)
|
||||||
|
shift
|
||||||
|
exec distrobox-enter "$CONTAINER" -- "$@"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
distrobox-enter "$CONTAINER" -- \
|
||||||
|
env XDG_CONFIG_HOME="$CONFIG_DIR" \
|
||||||
|
ZDOTDIR="$CONFIG_DIR/zsh" \
|
||||||
|
kitty --class="nnm" \
|
||||||
|
--config "$CONFIG_DIR/kitty/kitty.conf" \
|
||||||
|
--directory "$PWD" \
|
||||||
|
zsh </dev/null &
|
||||||
|
disown
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
kitty
|
||||||
|
neovim
|
||||||
|
zsh
|
||||||
|
git
|
||||||
|
base-devel
|
||||||
|
mesa
|
||||||
|
vulkan-intel
|
||||||
|
vulkan-radeon
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[options]
|
||||||
|
HoldPkg = pacman glibc
|
||||||
|
Architecture = auto
|
||||||
|
SigLevel = Required DatabaseOptional
|
||||||
|
LocalFileSigLevel = Optional
|
||||||
|
|
||||||
|
[core]
|
||||||
|
Server = https://archive.archlinux.org/repos/$ala_date/$repo/os/$arch
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
Server = https://archive.archlinux.org/repos/$ala_date/$repo/os/$arch
|
||||||
Executable
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
echo "This will remove the nnm container and /usr/local/bin/nnm."
|
||||||
|
read -rp "Are you sure? [y/N] " confirm
|
||||||
|
[[ "$confirm" =~ ^[yY] ]] || { echo "Aborted."; exit 0; }
|
||||||
|
|
||||||
|
echo "==> Removing container..."
|
||||||
|
distrobox rm --force nnm 2>/dev/null || true
|
||||||
|
|
||||||
|
echo "==> Removing image..."
|
||||||
|
podman image rm localhost/nnm:* 2>/dev/null || true
|
||||||
|
|
||||||
|
echo "==> Removing /usr/local/bin/nnm..."
|
||||||
|
sudo rm -f /usr/local/bin/nnm
|
||||||
|
|
||||||
|
echo "==> nnm uninstalled."
|
||||||
Reference in New Issue
Block a user