Compare commits

...

3 commits

Author SHA1 Message Date
a0bc8023a6
hermit/configuration.nix: enable nextcloud 2025-03-08 14:37:05 +01:00
3158f69ab3
temperance/configuration.nix: enable nextcloud 2025-03-08 14:36:42 +01:00
9cc2ff512c
nextcloud/module.nix: init
Introduce a hardened systemd service for nextcloud
2025-03-08 14:36:33 +01:00
3 changed files with 54 additions and 0 deletions

View file

@ -27,6 +27,9 @@
modules = { modules = {
system = { system = {
impermanence.enable = false; impermanence.enable = false;
services = {
nextcloud.enable = true;
};
hardware = { hardware = {
nvidia.enable = true; nvidia.enable = true;
bluetooth = { bluetooth = {

View file

@ -41,6 +41,9 @@ in {
modules = { modules = {
system = { system = {
impermanence.enable = true; impermanence.enable = true;
services = {
nextcloud.enable = true;
};
programs = { programs = {
editors = { editors = {
emacs.enable = true; emacs.enable = true;

View file

@ -0,0 +1,48 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib.meta) getExe';
inherit (lib.modules) mkIf;
cfg = config.modules.system.services.nextcloud;
in {
options.modules.system.services.nextcloud.enable = lib.mkEnableOption "nextcloud";
config = {
systemd.user.services.nextcloud = mkIf cfg.enable {
description = "Nextcloud client service";
# makes the graphical session start this service when it starts
wantedBy = ["graphical-session.target"];
# when graphical session restarts or gets stopped, this also gets restarted/stopped.
partOf = ["graphical-session.target"];
# gets started only after graphical session
after = ["graphical-session.target"];
serviceConfig = {
ExecStart = "${getExe' pkgs.nextcloud-client "nextcloud"} --background";
Restart = "always";
RestartSec = 30;
# User = "cr";
# Group = "cr";
Keyringmode = "shared";
DevicePolicy = "closed";
PrivateDevices = true;
PrivateTmp = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectControlGroup = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectSystem = "strict";
SystemCallFilter = "~@clock @cpu-emulation @debug @obsolete @module @mount @raw-io @reboot @swap @privileged";
};
};
};
}