aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd
AgeCommit message (Collapse)Author
2025-12-15internal/outcome: expose pipewire via pipewire-pulseOphestra
This no longer exposes the pipewire socket to the container, and instead mediates access via pipewire-pulse. This makes insecure parts of the protocol inaccessible as explained in the doc comment in hst. Closes #29. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-12-12nix: update flake lockOphestra
NixOS 25.11 introduces a crash in cage and an intermittent crash in foot. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-12-08cmd/hakurei: exec instead of fork/exec from shellOphestra
There is no reason to keep the shell process around. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-12-08treewide: include PipeWire op and enforce PulseAudio checkOphestra
This fully replaces PulseAudio with PipeWire and enforces the PulseAudio check and error message. The pipewire-pulse daemon is handled in the NixOS module. Closes #26. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-12-08hst: check for insecure PulseAudio enablementOphestra
This is currently still a noop, but required for #26. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-12-08cmd/hakurei: add pipewire flagOphestra
This is for "run" command, formerly permissive defaults behaviour. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-12-07hst: add pipewire flagOphestra
These are for #26. None of them are implemented yet. This fixes up test cases for the change to happen. Existing source code and JSON configuration continue to have the same effect. Existing flags get its EPulse bit replaced by EPipeWire. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-17internal/wayland: expose WAYLAND_VERSIONOphestra
This might be useful troubleshooting information. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-15internal: relocate packagesOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-14cmd/hakurei: reorder show entriesOphestra
This order semantically makes more sense and generally looks tidier. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-13internal/info: relocate from internalOphestra
This is cleaner and makes more sense. The longer LDFLAGS was never a valid concern since it is always inserted by a script. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-13treewide: document linkname usesOphestra
These provide justification for each use of linkname. Poorly thought out uses of linkname are removed. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-13treewide: import internal/systemOphestra
For #24. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-10treewide: reject impossible user-supplied fdOphestra
These are all trusted user input, however this check reduces the likelihood of hard to debug errors. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-10cmd/hakurei: expose current instance identifierOphestra
This writes the 16-byte instance identifier to file descriptor specified by --identifier-fd if set, and closes the file. This enables safely obtaining the new instance's identifier. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-05treewide: fit test untyped int literals in 32-bitOphestra
This enables hakurei test suite to run on 32-bit targets. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-04hst/grp_pwd: specify new uid formatOphestra
This leaves slots available for additional uid ranges in Rosa OS. This breaks all existing installations! Users are required to fix ownership manually. Closes #18. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-03cmd/hakurei/print: handle nil configOphestra
There is nothing to print in this case, and such a nil check is missing. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-03cmd/hpkg/test: print share directoryOphestra
This is more useful now that state is tracked here. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-03message: rename NewMsg to NewOphestra
Should have done this when relocating this from container. Now is a good time to rename it before v0.3.x. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-03hst/config: make identifier omitemptyOphestra
This is an optional field. Serialise it as such. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-03cmd/hakurei/print: use new store interfaceOphestra
This removes the final uses of the compat interfaces. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02cmd/hakurei/print: serialise array for psOphestra
Wanted to do this for a long time, since the key is redundant. This also makes it easier to migrate to the new store interface. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02cmd/hakurei/parse: use new store interfaceOphestra
This greatly reduces overhead. The iterator also significantly cleans up the usage code. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/outcome: track state in TMPDIROphestra
The SharePath is a more stable path than RunDirPath, since it is available all the time and should remain consistent. This also fits better into the intended use case of XDG_RUNTIME_DIR. Closes #17. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-30internal/store: rename compat interfaceOphestra
The new store implementation will be exported as Store. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-30internal/store: rename from stateOphestra
This reduces collision with local variable names, and generally makes sense for the new store package, since it no longer specifies the state struct. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-29internal/outcome: rename from appOphestra
This is less ambiguous, and more accurately describes the purpose of the package. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-29internal/env: relocate from appOphestra
This package is much cleaner to stub independently, and makes no sense to lump into app. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-26internal/app/state: use absolute pathnamesOphestra
This is less error-prone and fits better into internal/app which already uses check.Absolute for all pathnames. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-26treewide: update doc commentsOphestra
Some internal/app/state types were relocated to hst as part of the API. This change updates doc comments referring to them. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-25internal/app/state: use internal/lockedfileOphestra
This is a pretty solid implementation backed by robust tests, with a much cleaner interface. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-24cmd/hakurei: short identifier from lower halfOphestra
The upper half is now a nanosecond timestamp. Lower half is still random bytes, so use lower half for short identifier. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-24hst/instance: embed config structOphestra
This makes the resulting json easier to parse since it can now be deserialised into the config struct. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-23hst/instance: store priv side pidOphestra
This can receive signals, so is more useful to the caller. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-23hst/instance: define instance stateOphestra
This is now part of the hst API. This change also improves identifier generation and serialisation. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-23cmd/hsu: reduce excessive test rangeOphestra
This is quite a simple piece of code, this many test cases is excessive and wastes time in the integration vm. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-22internal/app/shim: use syscall dispatcherOphestra
This enables instrumented testing of the shim. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-22cmd/hsu: run in locked threadOphestra
Goroutine scheduling is not helpful in the setuid wrapper, it is not particularly harmful but lock here anyway. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-21hst/container: flags string representationOphestra
This is useful for a user-facing representation other than JSON. This also gets rid of the ugly, outdated flags string builder in cmd/hakurei. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-21cmd/hakurei/parse: close config fdOphestra
This is cleaner than relying on the finalizer. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-21cmd/hakurei/json: friendly error messagesOphestra
This change handles errors returned by encoding/json and prints significantly cleaner messages. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-21hst: expose version stringOphestra
The hst API is tied to this version string. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-21internal: clean up build stringsOphestra
These names are less ambiguous and should be understandable without reading the source code. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-19hst/container: optional runtime and tmpdir sharingOphestra
Sharing and persisting these directories do not always make sense. Make it optional here. Closes #16. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-18internal/app/hsu: remove wrapper methodOphestra
This was added to reduce the size of diffs. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-14hst/config: hold acl struct by valueOphestra
Doc comments are also reworded for clarity. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-14hst/container: pack boolean optionsOphestra
The memory saving is relatively insignificant, however this increases serialisation efficiency. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-13treewide: parallel testsOphestra
Most tests already had no global state, however parallel was never enabled. This change enables it for all applicable tests. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-11hst: rename /.hakurei constantOphestra
This provides disambiguation from fhs.AbsTmp. Signed-off-by: Ophestra <cat@gensokyo.uk>