I think it is sufficient! I think we should heavily document this; it seems very useful!!
Example usage that I am now using in a module I’m building
{ lib, config, ...}:
let
inherit (lib) mkIf mkMerge mkOption mkEnableOption ;
inherit (lib.types) attrsOf str;
in
{
options.services.journal-upload = {
enable = mkEnableOption "journal-upload";
config = mkOption {
type = attrsOf str;
};
};
options.services.journal-remote = {
enable = mkEnableOption "journal-remote";
config = mkOption {
type = attrsOf str;
};
};
config = mkMerge [
(mkIf config.journal-upload.enable {
systemd.sockets.systemd-journal-upload.wantedBy = [ "sockets.target"];
environment.etc."journal-upload.conf".text = "";
})
(mkIf config.journal-remote.enable {
systemd.sockets.systemd-journal-remote.wantedBy = [ "sockets.target"];
environment.etc."journal-remote.conf".text = "";
})
];
}