{ pkgs, lib, config, ... }: with lib; let cfg = config.niveum.dropbox; in { options.niveum.dropbox = {enable = mkEnableOption "Dropbox";}; config = mkIf cfg.enable { environment.systemPackages = [pkgs.dropbox-cli]; networking.firewall = { allowedTCPPorts = [17500]; allowedUDPPorts = [17500]; }; systemd.user.services.dropbox = { description = "Dropbox synchronisation service"; wantedBy = ["graphical-session.target"]; serviceConfig = { ExecStart = "${pkgs.dropbox.out}/bin/dropbox"; ExecReload = "${pkgs.coreutils.out}/bin/kill -HUP $MAINPID"; KillMode = "control-group"; # upstream recommends process Restart = "on-failure"; PrivateTmp = true; ProtectSystem = "full"; Nice = 10; }; }; }; }