1
0
Fork 0
selfhostblocks/ttrss/update.nix

68 lines
1.4 KiB
Nix
Raw Normal View History

{ stdenv
, pkgs
, lib
2022-05-20 05:00:12 +02:00
, utils
}:
{ document_root
2022-09-09 08:26:33 +02:00
, user
, group
, readOnlyPaths ? []
, readWritePaths ? []
, postgresServiceName
}:
2022-09-09 08:26:33 +02:00
{ ...
}:
# Assumptions:
# - Do not run as root.
# - Image cache should be writable.
# - Upload cache should be writable.
# - Data export cache should be writable.
# - ICONS_DIR should be writable.
# - LOCK_DIRECTORY should be writable.
let
fullPath = "${document_root}";
roPaths = [fullPath] ++ readOnlyPaths;
in
utils.systemd.mkService rec {
name = "ttrss-update";
2022-05-20 05:00:12 +02:00
content = ''
[Unit]
Description=${name}
After=network.target ${postgresServiceName}
[Service]
2022-09-09 08:26:33 +02:00
User=${user}
Group=${group}
ExecStart=${pkgs.php}/bin/php ${fullPath}/update_daemon2.php
RuntimeDirectory=${name}
PrivateDevices=true
PrivateTmp=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
ProtectKernelLogs=true
ProtectHome=true
ProtectHostname=true
ProtectClock=true
RestrictSUIDSGID=true
LockPersonality=true
NoNewPrivileges=true
SystemCallFilter=@basic-io @file-system @process @system-service
ProtectSystem=strict
ReadOnlyPaths=${builtins.concatStringsSep " " roPaths}
ReadWritePaths=${builtins.concatStringsSep " " readWritePaths}
# NoExecPaths=/
# ExecPaths=${pkgs.php}/bin
[Install]
WantedBy=multi-user.target
'';
}