nixos/miniflux: use systemd notify and watchdog

Miniflux supports notifying systemd when it's ready.
It also supports the systemd watchdog, which will restart miniflux when it's stuck.

Changed files
+11 -4
nixos
modules
services
web-apps
+11 -4
nixos/modules/services/web-apps/miniflux.nix
···
{ config, lib, pkgs, ... }:
-
with lib;
let
+
inherit (lib) mkEnableOption mkPackageOption mkOption types literalExpression mkIf mkDefault;
cfg = config.services.miniflux;
defaultAddress = "localhost:8080";
···
package = mkPackageOption pkgs "miniflux" { };
-
createDatabaseLocally = lib.mkOption {
-
type = lib.types.bool;
+
createDatabaseLocally = mkOption {
+
type = types.bool;
default = true;
description = ''
Whether a PostgreSQL database should be automatically created and
···
DATABASE_URL = lib.mkIf cfg.createDatabaseLocally "user=miniflux host=/run/postgresql dbname=miniflux";
RUN_MIGRATIONS = 1;
CREATE_ADMIN = 1;
+
WATCHDOG = 1;
};
services.postgresql = lib.mkIf cfg.createDatabaseLocally {
···
++ lib.optionals cfg.createDatabaseLocally [ "postgresql.service" "miniflux-dbsetup.service" ];
serviceConfig = {
-
ExecStart = "${cfg.package}/bin/miniflux";
+
Type = "notify";
+
ExecStart = lib.getExe cfg.package;
User = "miniflux";
DynamicUser = true;
RuntimeDirectory = "miniflux";
RuntimeDirectoryMode = "0750";
EnvironmentFile = cfg.adminCredentialsFile;
+
WatchdogSec = 60;
+
WatchdogSignal = "SIGKILL";
+
Restart = "always";
+
RestartSec = 5;
+
# Hardening
CapabilityBoundingSet = [ "" ];
DeviceAllow = [ "" ];