# docs: # docs: `man rsyslogd` # i have systemd-journald -> rsyslogd # this escapes issues i'd otherwise have persisting journald itself to disk # since that component needs to run in initrd and before service setup. # # TODO: log rotation / retention policy. don't want to eat the whole HDD. # TODO: store these logs in /var/log/... # and at that point it makes more sense to use a systemd service. # i.e. revert `3a6a5ffe014761ff23220f5b4ecb74d8a9fdb8fd` { config, lib, ... }: { sane.programs.rsyslog = { persist.byStore.private = [ ".local/share/rsyslog/logs" ]; # rsyslogd can't handle $HOME or ~ or anything like that, # so assume a single-user install and just substitute the default user: fs.".config/rsyslog/rsyslog.conf".symlink.text = lib.replaceStrings [ "$HOME" ] [ "/home/${config.sane.defaultUser}" ] (builtins.readFile ./rsyslog.conf); services.rsyslogd = { description = "rsyslogd: ingests journald (system log) messages into persistent storage"; partOf = [ "default" ]; # XXX(2024-07-27): rsyslog tends to be launched early, before the logs dir has been created. # that's a problem all my programs are susceptible to, but hack rsyslog to wait for its log dir else it'll create it on non-persisted storage command = "test -L ~/.local/share/rsyslog/logs && rsyslogd -f ~/.config/rsyslog/rsyslog.conf -i ~/.local/share/rsyslog/rsyslogd.pid -n"; }; }; }