Boot flipctl on the panel instead of the flipctl2 prototype - #169
Open
Yury-MonZon wants to merge 1 commit into
Open
Boot flipctl on the panel instead of the flipctl2 prototype#169Yury-MonZon wants to merge 1 commit into
Yury-MonZon wants to merge 1 commit into
Conversation
Yury-MonZon
marked this pull request as ready for review
September 1, 2026 20:23
build-flipctl.sh builds flipctl from flipctl-slint for arm64, natively on an arm64 builder and cross anywhere else, and stages the tree the ospack overlays onto /usr: /usr/bin/flipctl, its apps and remote-view assets under /usr/share/flipctl, and the unit the repository itself ships, so the image and a deploy from a checkout run the same one. Nothing there links a C library, so a cross build needs only the aarch64 std and a linker. slint 1.17.1 wants rustc 1.92 where trixie has 1.85, so the container and the prerequisites take cargo from trixie-backports with the arm64 std beside it, and the build stops with one line when either is missing rather than a hundred lines into the resolver. stage_repo is split so the flipctl checkout is fetched without being copied: a copy would drag its build tree into prebuilt/. sway is the only package added on flipctl's behalf, being the compositor it hosts apps in. What an app itself needs is left out: each manifest names its packages and flipctl offers to install them when that app is opened. The prototype is unenabled rather than removed, so the Testing row can still hand the panel over: the two wants symlinks go, and cog-seat1 loses its [Install] section. Dropping the symlinks alone would not hold. systemd makes a preset pass on a profile's first boot, which every profile here has since the image ships no machine-id, and boot-profile switches profiles with soft-reboot, where /etc is writable and that pass succeeds rather than skipping as it does on a cold boot. With no policy of ours its default is to enable anything carrying an [Install] section, and the prototype's node server then held port 8899 before flipctl could bind its own browser view. Nothing enables a static unit, and starting one still works.
Yury-MonZon
force-pushed
the
flipctl-slint-default
branch
from
September 2, 2026 15:46
25e6920 to
2b81278
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #168.
flipctl becomes what the image boots on the panel, in place of the flipctl2 prototype.
build-flipctl.shbuilds it fromflipctl-slintfor arm64, natively on an arm64 builder and cross anywhere else, and stages the tree the ospack overlays onto/usr:/usr/bin/flipctl, its apps and remote-view assets under/usr/share/flipctl, and the unit the repository itself ships, so the image and a deploy from a checkout restart the same one. Nothing there links a C library (EGL and GBM are dlopened, wayland-client uses its Rust backend, slint renders in software), so a cross build needs only the aarch64 std and a linker.slint 1.17.1 wants rustc 1.92 where trixie has 1.85, so the container and the documented prerequisites take cargo from
trixie-backportswith the arm64 std beside it, and the build stops with one line when either is missing rather than a hundred lines into the resolver.swayis the only package added on flipctl's behalf, being the compositor it hosts apps in. What an app itself needs is left out: each manifest names its packages and flipctl offers to install them when that app is opened.The prototype is unenabled rather than removed, so the Testing row can still hand the panel over: the two wants symlinks go, and
cog-seat1loses its[Install]. The other half of that, the node server's own[Install], is in flipperone-testing02f67fd, which the ospack already stages fromdev.Verified on a Flipper One from a freshly flashed image: flipctl active on the panel and serving its remote view,
cog-seat1andfake-flipctl-node-serverbothloadedbut not autostarted, and the Testing row able to hand the panel over.Note for whoever builds this: the ospack step must actually rebuild,
UPDATE_OSPACK=1or a cleanout/images/, or an existingdebian-ospack.tar.zstis reused and none of this lands in the image.