name: "{LANG} run script"

mode: ONCE
hostname: "{LANG}"
log_level: ERROR
time_limit: {TIMEOUT}

disable_rl: true

mount_proc: true

cwd: "/tmp/{LANG}"

clone_newnet: false
clone_newuser: {CLONE_NEWUSER}
clone_newcgroup: false

{UIDGIDMAP}

skip_setsid: true
keep_caps: false
keep_env: true

mount {
    src: "/bin"
    dst: "/bin"
	is_bind: true
}

mount {
    src: "/lib"
    dst: "/lib"
	is_bind: true
}

mount {
    src: "/sys/fs"
    dst: "/sys/fs"
	is_bind: true
}

mount {
    src: "/lib64"
    dst: "/lib64"
	is_bind: true
    mandatory: false
}


mount {
    src: "/usr"
    dst: "/usr"
	is_bind: true
}

mount {
	src: "/dev/null"
	dst: "/dev/null"
	is_bind: true
	rw: true
}

{TMP_MOUNT_BLOCK}

mount {
    src: "{JOB_DIR}/package.json"
    dst: "/tmp/{LANG}/package.json"
    is_bind: true
    mandatory: false
}

mount {
    src: "{JOB_DIR}/bun.lockb"
    dst: "/tmp/{LANG}/bun.lockb"
    is_bind: true
    mandatory: false
}

mount {
    src: "{JOB_DIR}/bun.lock"
    dst: "/tmp/{LANG}/bun.lock"
    is_bind: true
    mandatory: false
}

mount {
    src: "{JOB_DIR}/wrapper.mjs"
    dst: "/tmp/{LANG}/wrapper.mjs"
    is_bind: true
    mandatory: false
}


mount {
    src: "{JOB_DIR}/loader.bun.js"
    dst: "/tmp/{LANG}/loader.bun.js"
    is_bind: true
    mandatory: false
}

mount {
    src: "{JOB_DIR}/node_modules"
    dst: "/tmp/{LANG}/node_modules"
    is_bind: true
    mandatory: false
}


mount {
    src: "{JOB_DIR}/main.ts"
    dst: "/tmp/{LANG}/main.ts"
    is_bind: true
    mandatory: false
}

mount {
    src: "{JOB_DIR}/main.js"
    dst: "/tmp/{LANG}/main.js"
    is_bind: true
    mandatory: false
}


mount {
    src: "{JOB_DIR}/args.json"
    dst: "/tmp/{LANG}/args.json"
    is_bind: true
    rw: true
}

mount {
    src: "{JOB_DIR}/checkpoint.json"
    dst: "/tmp/{LANG}/checkpoint.json"
    is_bind: true
    mandatory: false
}

mount {
    src: "{JOB_DIR}/result.json"
    dst: "/tmp/{LANG}/result.json"
    rw: true
    is_bind: true
}

mount {
    src: "/etc"
    dst: "/etc"
	is_bind: true
}

# Container runtimes bind exactly these 3 files as separate submounts over
# /etc; nsjail's ro remount of /etc is non-recursive so they stay writable.
# Load-bearing -- do not remove as redundant with the /etc bind above.
mount {
    src: "/etc/resolv.conf"
    dst: "/etc/resolv.conf"
    is_bind: true
    mandatory: false
}

mount {
    src: "/etc/hosts"
    dst: "/etc/hosts"
    is_bind: true
    mandatory: false
}

mount {
    src: "/etc/hostname"
    dst: "/etc/hostname"
    is_bind: true
    mandatory: false
}

mount {
    src: "/dev/random"
    dst: "/dev/random"
    is_bind: true
}

mount {
    src: "/dev/urandom"
    dst: "/dev/urandom"
    is_bind: true
}

iface_no_lo: true

{SHARED_MOUNT}

envar: "HOME=/tmp/{LANG}"

mount {
    src: "{TRACING_PROXY_CA_CERT_PATH}"
    dst: "{TRACING_PROXY_CA_CERT_PATH}"
    is_bind: true
    mandatory: false
}

#{DEV}
