wip
This commit is contained in:
@@ -58,8 +58,11 @@
|
|||||||
neovim.dotfiles = inputs.nvim;
|
neovim.dotfiles = inputs.nvim;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# ensure .config exists with correct ownership before automount
|
||||||
|
systemd.tmpfiles.rules = [ "d /home/matej/.config 0755 matej users -" ];
|
||||||
|
|
||||||
# writable claude config via 9p
|
# writable claude config via 9p
|
||||||
fileSystems."/home/matej/.claude" = {
|
fileSystems."/home/matej/.config/claude" = {
|
||||||
device = "claude";
|
device = "claude";
|
||||||
fsType = "9p";
|
fsType = "9p";
|
||||||
options = [
|
options = [
|
||||||
@@ -70,23 +73,7 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# .claude.json passed via qemu fw_cfg
|
environment.sessionVariables.CLAUDE_CONFIG_DIR = "/home/matej/.config/claude";
|
||||||
boot.kernelModules = [ "qemu_fw_cfg" ];
|
|
||||||
systemd.services.claude-json = {
|
|
||||||
after = [ "systemd-modules-load.service" ];
|
|
||||||
wants = [ "systemd-modules-load.service" ];
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
ExecStart = pkgs.writeShellScript "claude-json" ''
|
|
||||||
src="/sys/firmware/qemu_fw_cfg/by_name/opt/claude.json/raw"
|
|
||||||
[ -f "$src" ] || exit 0
|
|
||||||
cp "$src" /home/matej/.claude.json
|
|
||||||
chown matej:users /home/matej/.claude.json
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "25.11";
|
system.stateVersion = "25.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ SSH_PORT=2222
|
|||||||
MEMORY=8G
|
MEMORY=8G
|
||||||
CPUS=4
|
CPUS=4
|
||||||
MOUNTS=()
|
MOUNTS=()
|
||||||
CLAUDE_DIR=""
|
CLAUDE=false
|
||||||
CLAUDE_JSON=""
|
|
||||||
IMAGE=""
|
IMAGE=""
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
@@ -15,8 +14,7 @@ Usage: ephvm-run.sh <image.qcow2> [options]
|
|||||||
|
|
||||||
Options:
|
Options:
|
||||||
--mount <path> Mount host directory into VM (repeatable)
|
--mount <path> Mount host directory into VM (repeatable)
|
||||||
--claude <path> Mount claude config dir writable into VM
|
--claude Mount claude config dir (auto-detects from CLAUDE_CONFIG_DIR or ~/.claude)
|
||||||
--claude-json <path> Copy claude.json into mounted claude dir
|
|
||||||
--memory <size> VM memory (default: 8G)
|
--memory <size> VM memory (default: 8G)
|
||||||
--cpus <n> VM CPUs (default: 4)
|
--cpus <n> VM CPUs (default: 4)
|
||||||
--ssh-port <port> SSH port forward (default: 2222)
|
--ssh-port <port> SSH port forward (default: 2222)
|
||||||
@@ -32,8 +30,7 @@ shift
|
|||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--mount) MOUNTS+=("$2"); shift 2 ;;
|
--mount) MOUNTS+=("$2"); shift 2 ;;
|
||||||
--claude) CLAUDE_DIR="$2"; shift 2 ;;
|
--claude) CLAUDE=true; shift ;;
|
||||||
--claude-json) CLAUDE_JSON="$2"; shift 2 ;;
|
|
||||||
--memory) MEMORY="$2"; shift 2 ;;
|
--memory) MEMORY="$2"; shift 2 ;;
|
||||||
--cpus) CPUS="$2"; shift 2 ;;
|
--cpus) CPUS="$2"; shift 2 ;;
|
||||||
--ssh-port) SSH_PORT="$2"; shift 2 ;;
|
--ssh-port) SSH_PORT="$2"; shift 2 ;;
|
||||||
@@ -73,15 +70,17 @@ for mount_path in "${MOUNTS[@]}"; do
|
|||||||
FS_ID=$((FS_ID + 1))
|
FS_ID=$((FS_ID + 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "$CLAUDE_DIR" ]; then
|
if [ "$CLAUDE" = true ]; then
|
||||||
CLAUDE_DIR=$(realpath "$CLAUDE_DIR")
|
if [ -z "${CLAUDE_CONFIG_DIR:-}" ]; then
|
||||||
|
echo "error: --claude requires CLAUDE_CONFIG_DIR to be set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
mkdir -p "$CLAUDE_CONFIG_DIR"
|
||||||
|
claude_dir=$(realpath "$CLAUDE_CONFIG_DIR")
|
||||||
|
|
||||||
QEMU_ARGS+=(
|
QEMU_ARGS+=(
|
||||||
-virtfs "local,path=$CLAUDE_DIR,mount_tag=claude,security_model=none,id=fs${FS_ID}"
|
-virtfs "local,path=$claude_dir,mount_tag=claude,security_model=none,id=fs${FS_ID}"
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$CLAUDE_JSON" ]; then
|
|
||||||
QEMU_ARGS+=(-fw_cfg "name=opt/claude.json,file=$CLAUDE_JSON")
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec "${QEMU_ARGS[@]}"
|
exec "${QEMU_ARGS[@]}"
|
||||||
|
|||||||
Reference in New Issue
Block a user