#!/usr/bin/env bash
# Sacar a JARVIS de la burbuja: que lo que ejecute sea en la maquina de verdad.
#
# El sintoma era que el asistente contestaba que "esta en un contenedor" y no
# podia hacer casi nada. Las 134 acciones del catalogo ya salian al host (todas
# llevan host:true), pero los comandos LIBRES —los que se inventa el modelo
# cuando lo que pides no esta en el catalogo— corrian dentro del sandbox, donde
# no hay ni tu Debian ni tus discos:
#
#   dentro:  PRETTY_NAME="GNOME 50 (Flatpak runtime)"   sin /media, sin systemctl
#   fuera:   PRETTY_NAME="Debian GNU/Linux 12"          /media, systemctl, docker
#
# Son dos capas distintas y hacen falta las dos:
#
# 1. `virtualization` (ajuste de Newelle). Decide si los comandos del modelo
#    llevan delante `flatpak-spawn --host`. Estaba en true = todo dentro.
#    Es lo que mira _host_prefix() en integrations/default_tools.py.
#
# 2. Los permisos del flatpak. Aunque los comandos salgan al host, las
#    herramientas de FICHEROS de la app (leer, editar, indexar) son Python
#    corriendo dentro: solo ven lo que el sandbox les deje. Estaba en
#    `filesystems=home`, asi que fuera de tu carpeta personal no veia nada.
#
# Lo que esto NO quita: el candado de la contraseña al abrir, la confirmacion
# de lo destructivo, ni el dialogo de root. Esos siguen. Lo que cambia es que
# cuando TU autorizas algo, se ejecuta donde tiene que ejecutarse.
set -eu

APPID=io.github.qwersyk.Newelle
RAMA=${1:-master}

echo "1. comandos del modelo -> a la maquina, no a la burbuja"
flatpak run --command=gsettings "$APPID//$RAMA" set "$APPID" virtualization false

echo "2. permisos de ficheros -> todo el disco"
# host      = el sistema de ficheros (salvo /usr y /etc, que van aparte)
# host-etc  = /etc, para leer configuracion del sistema
# host-os   = /usr, para mirar lo instalado
flatpak override --user \
    --filesystem=host \
    --filesystem=host-etc \
    --filesystem=host-os \
    "$APPID"

echo
echo "como queda:"
printf '  virtualization = %s\n' \
    "$(flatpak run --command=gsettings "$APPID//$RAMA" get "$APPID" virtualization)"
flatpak info --show-permissions "$APPID//$RAMA" 2>/dev/null | grep -E "^filesystems=" | sed 's/^/  /'
