{ config, lib, pkgs, ... }: let inherit (lib.meta) getExe'; inherit (lib.modules) mkIf; cfg = config.modules.system.services.owncloud; in { options.modules.system.services.owncloud.enable = lib.mkEnableOption "owncloud"; config = { systemd.user.services.owncloud = mkIf cfg.enable { description = "Owncloud 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.owncloud-client "owncloud"}"; Restart = "always"; RestartSec = 30; }; }; }; }