Files
Nina Chlóe Kassandra Reiß 64817ef4ff Add ssh and git configuration
2026-04-20 15:59:52 +02:00

68 lines
1.6 KiB
Nix

{ pkgs, lib, ... }:
let
genv = pkgs.writeShellScriptBin "genv" ''
#!/usr/bin/env bash
set -e
DISTRO="$1"
PRESET="$2"
if [ -z "$DISTRO" ] || [ -z "$PRESET" ]; then
echo "Usage: genv <distro> <preset>"
exit 1
fi
PROJECT=$(basename "$PWD")
BOX="genv-$PROJECT"
# distro mapping
case "$DISTRO" in
ubuntu) IMAGE="docker.io/library/ubuntu:24.04" ;;
arch) IMAGE="docker.io/library/archlinux:latest" ;;
alpine) IMAGE="docker.io/library/alpine:latest" ;;
*) IMAGE="$DISTRO" ;;
esac
echo "[genv] image: $IMAGE"
# container nur erstellen wenn nötig
if ! distrobox list | grep -q "$BOX"; then
distrobox create --name "$BOX" --image "$IMAGE"
fi
mkdir -p .genv
# preset kopieren
cp ${./presets}/$PRESET.sh .genv/setup.sh
chmod +x .genv/setup.sh
# envrc generieren
cat > .envrc <<EOF
export GENV_BOX="$BOX"
# container starten
distrobox start "$GENV_BOX" >/dev/null 2>&1 || true
# setup einmalig
if [ ! -f .genv/.init ]; then
echo "[genv] setup läuft"
distrobox enter "$GENV_BOX" -- bash .genv/setup.sh
touch .genv/.init
fi
# tmux workflow
if [ -z "$TMUX" ]; then
tmux new-session -A -s "$GENV_BOX" \
\; new-window -n editor "nvim" \
\; new-window -n dev "distrobox enter $GENV_BOX"
fi
EOF
echo "[genv] fertig direnv allow"
'';
in
{
home.packages = [ genv ];
}