at 18.09-beta 2.0 kB view raw
1{ config, pkgs, lib, ... }: 2 3let 4 cfg = config.services.crashplan; 5 crashplan = pkgs.crashplan; 6in 7 8with lib; 9 10{ 11 options = { 12 services.crashplan = { 13 enable = mkOption { 14 default = false; 15 type = types.bool; 16 description = '' 17 Starts crashplan background service. 18 ''; 19 }; 20 }; 21 }; 22 23 config = mkIf cfg.enable { 24 environment.systemPackages = [ crashplan ]; 25 26 systemd.services.crashplan = { 27 description = "CrashPlan Backup Engine"; 28 29 wantedBy = [ "multi-user.target" ]; 30 after = [ "network.target" "local-fs.target" ]; 31 32 preStart = '' 33 ensureDir() { 34 dir=$1 35 mode=$2 36 37 if ! test -e $dir; then 38 ${pkgs.coreutils}/bin/mkdir -m $mode -p $dir 39 elif [ "$(${pkgs.coreutils}/bin/stat -c %a $dir)" != "$mode" ]; then 40 ${pkgs.coreutils}/bin/chmod $mode $dir 41 fi 42 } 43 44 ensureDir ${crashplan.vardir} 755 45 ensureDir ${crashplan.vardir}/conf 700 46 ensureDir ${crashplan.manifestdir} 700 47 ensureDir ${crashplan.vardir}/cache 700 48 ensureDir ${crashplan.vardir}/backupArchives 700 49 ensureDir ${crashplan.vardir}/log 777 50 cp -avn ${crashplan}/conf.template/* ${crashplan.vardir}/conf 51 for x in app.asar bin install.vars lang lib libc42archive64.so libc52archive.so libjniwrap64.so libjniwrap.so libjtux64.so libjtux.so libleveldb64.so libleveldb.so libmd564.so libmd5.so share skin upgrade; do 52 rm -f ${crashplan.vardir}/$x; 53 ln -sf ${crashplan}/$x ${crashplan.vardir}/$x; 54 done 55 ''; 56 57 serviceConfig = { 58 Type = "forking"; 59 EnvironmentFile = "${crashplan}/bin/run.conf"; 60 ExecStart = "${crashplan}/bin/CrashPlanEngine start"; 61 ExecStop = "${crashplan}/bin/CrashPlanEngine stop"; 62 PIDFile = "${crashplan.vardir}/CrashPlanEngine.pid"; 63 WorkingDirectory = crashplan; 64 }; 65 }; 66 }; 67}