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