Closes the loop end-to-end. The ISO build now bundles the furtka/ package and the apps/ tree as a tarball; webinstaller hands it to archinstall via custom_commands; the installed system gets the `furtka` CLI, a boot-scan systemd unit, and the fileshare app ready to install. - iso/build.sh: stages furtka/ + apps/ into a tmpdir, drops __pycache__, tarballs into airootfs/opt/furtka-resource-manager.tar.gz. - webinstaller/app.py: _resource_manager_commands() reads the staged payload at request-time, base64-encodes it into a single untar command, and writes /usr/local/bin/furtka (PYTHONPATH wrapper, no pip needed) + furtka-reconcile.service. Python pacstrapped so the wrapper has an interpreter. - Graceful degradation: dev box / CI without an ISO build has no payload tarball, so those commands are skipped (logs a warning). Tests cover both branches. - furtka-reconcile.service is conditionally enabled only if the unit file actually landed — keeps the systemctl enable line green when the payload was absent. - apps/fileshare/: first real Furtka app. dperson/samba on host network, single named volume, .env.example with placeholder creds. Manifest matches the schema locked in slice 1. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
9 lines
238 B
JSON
9 lines
238 B
JSON
{
|
|
"name": "fileshare",
|
|
"display_name": "Network Files",
|
|
"version": "0.1.0",
|
|
"description": "SMB share for Mac, Windows, Linux and Android devices on the LAN.",
|
|
"volumes": ["files"],
|
|
"ports": [445, 139],
|
|
"icon": "icon.svg"
|
|
}
|