Watch
1
0
Fork
You've already forked souveraine
0
Commit graph souveraine/packaging
Author SHA1 Message Date
Fimeg
83fab1a1b6 sensord: one reporter for every sensor, replacing the per-sensor scripts
blueline-proximity-lock is 113 lines of shell implementing a subtle contract
(heartbeat inside SOURCE_DOWN_AFTER, seed from the probe banner, report both
edges) that would have been hand-copied for light and again for accel. One
binary, one contract, shipped in the package instead of the rootfs overlay.
2026-07-26 18:46:27 -04:00
Fimeg
c9e11a54f7 upower: bump to aeeb107 (charge thresholds via the supplier walk) 2026-07-26 17:06:00 -04:00
Fimeg
3174e7813c ship souveraine-verify-trail in the package that writes the trail 2026-07-26 14:58:48 -04:00
Fimeg
6eb87a542d publish-edge: ship the bare .files names too
pacman -Fy asks for souveraine-<arch>.files, not .files.tar.zst, so it 404'd.
2026-07-25 18:45:02 -04:00
Fimeg
044c373cad ci: publish into edge additively
edge is a shared archive but ci.yml deleted and recreated it each push, erasing
other producers. publish-edge.sh merges into the live db under a flock and
removes only its own superseded builds. Verifies the merge kept every foreign
entry, and reads the db back before trusting it.
2026-07-25 17:50:30 -04:00
Fimeg
91c0cf800b upower: fix percentage-trusted on real batteries
The heuristic tested charge_full, which qcom-battery lacks and which upower
never uses for the percentage anyway - it reads capacity directly. And like
charge-type it was only set in UpDeviceSupply, so a battery got the FALSE
default. Verified: charge-type now reads fast against the charger's Fast.
2026-07-25 07:49:20 -04:00
Fimeg
bcf4bf2f09 upower: set charge-type on UpDeviceSupplyBattery
Real batteries are backed by UpDeviceSupplyBattery, which never ran the
refresh that set charge-type, so it stayed at the UNKNOWN default.
2026-07-25 07:30:16 -04:00
Fimeg
16aa469505 upower: read charge_type from the supplying charger
SDM845 splits fuel gauge and charger; qcom-battery has no charge_type at
all, so the battery-only read returned UNKNOWN regardless of the N/A
spelling fix. Follows the kernel's device links to the charger instead.
2026-07-25 06:51:34 -04:00
Fimeg
62a3f0b0a8 don't claim gnome-keyring's dbus file; version upower from upstream
Two install blockers found on the phone:
- the package shipped org.freedesktop.secrets.service, which gnome-keyring
  owns. souveraine-secrets holds the bus name at runtime already.
- upower reused souveraine's 0.1.rN version, which sorts below the
  hand-built 1.91.3+sha, so -Syu saw a downgrade and skipped it. Now
  built from upstream version + fork sha (verified vercmp = 1).
2026-07-24 21:56:43 -04:00
Fimeg
07d45c10bc package secrets and machined too
All four repo binaries were hand-copied to the phone and owned by no
package. secrets/machined ship on both arches; sessiond stays aarch64.
secrets unit repointed /usr/local/bin -> /usr/bin.
2026-07-24 21:36:31 -04:00
Fimeg
261d74672f package sessiond (aarch64 only)
It was hand-copied to /usr/local/bin, owned by no package, so it never
updated. Not built for x86_64 — the laptop hits lock-screen errors with
it. Verified both packages assemble correctly.
2026-07-24 21:31:14 -04:00
Fimeg
336dadf006 upower: bump to 628283f (kernel spells CHARGE_TYPE_NONE as N/A)
The submodule was pinned one commit behind the fix, so every CI-built
upower-souveraine fell through to the warning path and reported
charge-type unknown while discharging.
2026-07-24 19:51:33 -04:00
Fimeg
d824ca7f81 secrets: at-rest encryption, passphrase wrap, phone packaging
Seal items AES-256-GCM under a random store key (item id as AAD).
Machine wrap: HKDF over a deterministic machined signature (domain
secrets-store-key, socket /run/souveraine/machined.sock; legacy
seed-id fallback, same framing) — private key never enters the daemon.
Argon2id passphrase wrap slot (64MiB/3, HKDF-mixed with the machine
signature) managed via org.souveraine.Secrets.Manage: SetPassphrase /
VerifyPassphrase / HasPassphrase; rotation re-wraps only.

Client-found spec fixes: DH prime was the 2048-bit group-14 constant,
not the 1024-bit Second Oakley group libsecret uses (pinned by test);
item ids now simple UUIDs (hyphens illegal in object paths); collection
also served at /aliases/default; interfaces registered before name
claim. Added spec signals, real timestamps, content types, atomic 0600
store writes.

packaging: systemd user unit, D-Bus activation shadow, idempotent
phone deploy script (masks gnome-keyring, verifies round-trip).
2026-07-20 21:16:32 -04:00
Fimeg
5cb1be06cd lock primitives: power-from-lock, login1 polkit rule, gesture rail progress
seat0-active polkit rule so power off/reboot/suspend stop returning
challenge into a session with no polkit agent on the lock surface.
Lock-surface buttons stay gated behind allowPowerFromLock (opt-in) and
requirePasswordToPower. SystemGestureRail progressive gesture + mission
control nav flag.
2026-07-19 22:13:08 -04:00
Fimeg
63a39ab5d0 upower fork: submodule, prebuilt packaging, CI build, lock-surface charge state
- packaging/upower-souveraine submodule pinned at fork head (f18b1a4,
  souveraine/charge-type): ChargeType + PercentageTrusted on Device
- PKGBUILD.upower.prebuilt: prebuilt meson install tree, provides/
  conflicts upower, replaces stock (IgnorePkg=upower on the phone)
- ci.yml: build the fork per-arch against the aarch64 sysroot, assert
  binary arch, fold into the souveraine-{arch} pacman db
- LockSurfaceHost: charge line driven by device state, not onBattery —
  no more eternal 'Charging N%' on a topped-off pack
- docs/tasks/power-indication.md force-added past the docs/ gitignore
2026-07-17 16:33:37 -04:00
Fimeg
5039163a52 machined: system-tier machine identity daemon
The machine seed moves out of the user session: souveraine-machined owns
/var/lib/souveraine/seed-id as the souveraine system user and serves
pubkey/sign over /run/souveraine/machined.sock (SO_PEERCRED logged,
domain-separated signatures, group-gated socket). Seed is a precondition
- provision via 'souveraine machine init --fresh|--migrate-from', the
daemon never generates. reach/consult now resolves the machine key
through the daemon with a loud legacy fallback. Hardened system unit +
sysusers shipped in the Arch package.
2026-07-16 10:08:33 -04:00
Fimeg
048f180105 docs: bootstrap private pacman archive securely 2026-07-12 22:46:37 -04:00
Fimeg
c8c72ecbf2 ci: split signed pacman databases by architecture 2026-07-12 22:19:44 -04:00
Fimeg
16ba8cfbf4 docs: bootstrap pacman from local Gitea 2026-07-12 21:58:02 -04:00
Fimeg
3a83666ef5 ci: sign multi-architecture package repository 2026-07-12 21:11:34 -04:00
Fimeg
e0c8128832 ci: publish aarch64 pacman package artifacts 2026-07-12 20:57:00 -04:00
Fimeg
2c14da0dbe federation: document node enrolment trust boundary 2026-07-12 15:34:41 -04:00
Fimeg
ad56206294 track cross-build cargo config + souveraine user unit
.cargo/config.toml + aarch64-pkg-config wrapper are load-bearing for the
cross build (CI artifact job + local build-cross.sh both depend on them);
were gitignored before. souveraine.service is the systemd user unit the
packaging/deploy scripts template.
2026-07-12 14:57:19 -04:00
Fimeg
2c218fb075 packaging: adopt the phone deploy script and Arch PKGBUILD
Both were stranded untracked in the Pixel3Arch tree; they source from
this repo, so they live here. deploy-phone.sh ships the cross-built
binary + user unit (seed-id excluded, machine binding stays doctrine);
PKGBUILD builds from a synced local checkout, no network fetch.
2026-07-12 09:01:13 -04:00