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