modular services meeting #3 2026-06-26
Attendees: @EveeifyiEve, @lassulus, @roberth, @aanderse
Sync
- @EveeifyiEve has worked on code changes from previous meeting, @aanderse likes and thinks this is the right direction
- @roberth has done some work on a generic test suite to be used with modular services
- @lassulus finished work on PR adding flags
- @Evee: what’s the community working on?
- @aanderse: @ehmry was doing some work on a platform that would be solely modular services based, s6 / runit style stuff. Lower level so not sure if I would recommend looking at that
- @aanderse: we could create a repo in nix-community, lower stakes where people can contribute easily. Having a lot of them in nixpkgs is not quite right yet
- @aanderse: @artemist has started work on a BSD implementation

Review lib/services: add some generalization options by Eveeifyeve · Pull Request #535695 · NixOS/nixpkgs · GitHub
Adds generalization support for reloading, readiness and runtime directory.
New options
reloadSignal- @aanderse: seems unused
- @evee: not sure what @roberth wanted
- @roberth: reloadCommand defaulting to signal should be fine
- @roberth: we should specify what happens when both are specified. I’d lean towards forbidding by means of assertion
- something with
options.reloadCommand.highestPrio == optionDefaultPrio
- something with
reloadCommandruntimeDirectory- @roberth: It’s not clear to me who is supposed to set this, e.g. systemd vs user (probably not module author)
- @aanderse: We had this idea where options are about declaring the intent of a module
- @aanderse: Only systemd supports this out of the box. Other service managers [integrations] can fill the gap if they need to
runtimePermissionserviceManager.notificationProtocol- @roberth: I would expect this option path to say "the service manager supports this protocol (/ maybe these protocols)
- @aanderse: with finit we might want to expose what we support
- @aanderse: I’d move it to top level because it’s about the service itself. I’d punt on the service manager introspection until we have a real need
- @roberth: I agree
serviceManager.preserveRuntimeDirectory
Implementation
- @aanderse: setting
Typethere is nice - @roberth:
mainExecReloadis analogous tomainExecStart, allowingsystemd-specific escape hatch for%ninterpolation support
Please split out runtimeDirectory so we can settle the reload options sooner
Action items
- roberth: review
environmentPR - lassulus: flags
- aanderse: will port new options to finit when done
- evee: implement review feedback