From c515f7036ecd42456c01411bfd79bfc99c6cfbc4 Mon Sep 17 00:00:00 2001 From: Michishige Kaito Date: Tue, 27 Mar 2018 16:35:54 +0100 Subject: Address @yegortimoshenko review --- nixos/modules/services/backup/tarsnap.nix | 52 ++++++++++++++----------------- 1 file changed, 23 insertions(+), 29 deletions(-) (limited to 'nixos/modules') diff --git a/nixos/modules/services/backup/tarsnap.nix b/nixos/modules/services/backup/tarsnap.nix index 88c847ed92cd..4fc7c24813a5 100644 --- a/nixos/modules/services/backup/tarsnap.nix +++ b/nixos/modules/services/backup/tarsnap.nix @@ -304,7 +304,7 @@ in requires = [ "network-online.target" ]; after = [ "network-online.target" ]; - path = [ pkgs.iputils pkgs.tarsnap pkgs.utillinux ]; + path = with pkgs; [ iputils tarsnap utillinux ]; # In order for the persistent tarsnap timer to work reliably, we have to # make sure that the tarsnap server is reachable after systemd starts up @@ -314,9 +314,9 @@ in while ! ping -q -c 1 v1-0-0-server.tarsnap.com &> /dev/null; do sleep 3; done ''; - script = - let run = ''tarsnap --configfile "/etc/tarsnap/${name}.conf" \ - -c -f "${name}-$(date +"%Y%m%d%H%M%S")" \ + script = let + tarsnap = ''tarsnap --configfile "/etc/tarsnap/${name}.conf"''; + run = ''${tarsnap} -c -f "${name}-$(date +"%Y%m%d%H%M%S")" \ ${optionalString cfg.verbose "-v"} \ ${optionalString cfg.explicitSymlinks "-H"} \ ${optionalString cfg.followSymlinks "-L"} \ @@ -329,7 +329,7 @@ in if [ ! -e ${cfg.cachedir}/firstrun ]; then ( flock 10 flock -u 9 - tarsnap --configfile "/etc/tarsnap/${name}.conf" --fsck + ${tarsnap} --fsck flock 9 ) 10>${cfg.cachedir}/firstrun fi @@ -351,35 +351,29 @@ in description = "Tarsnap restore '${name}'"; requires = [ "network-online.target" ]; - path = [ pkgs.iputils pkgs.tarsnap pkgs.utillinux ]; - - ## - preStart = '' - while ! ping -q -c 1 v1-0-0-server.tarsnap.com &> /dev/null; do sleep 3; done - ''; + path = with pkgs; [ iputils tarsnap utillinux ]; - script = - let + script = let tarsnap = ''tarsnap --configfile "/etc/tarsnap/${name}.conf"''; lastArchive = ''$(${tarsnap} --list-archives | sort | tail -1)''; run = ''${tarsnap} -x -f "${lastArchive}" ${optionalString cfg.verbose "-v"}''; - in if (cfg.cachedir != null) then '' - mkdir -p ${cfg.cachedir} - chmod 0700 ${cfg.cachedir} - - ( flock 9 - if [ ! -e ${cfg.cachedir}/firstrun ]; then - ( flock 10 - flock -u 9 - ${tarsnap} --fsck - flock 9 - ) 10>${cfg.cachedir}/firstrun - fi - ) 9>${cfg.cachedir}/lockf - - exec flock ${cfg.cachedir}/firstrun ${run} - '' else "exec ${run}"; + in if (cfg.cachedir != null) then '' + mkdir -p ${cfg.cachedir} + chmod 0700 ${cfg.cachedir} + + ( flock 9 + if [ ! -e ${cfg.cachedir}/firstrun ]; then + ( flock 10 + flock -u 9 + ${tarsnap} --fsck + flock 9 + ) 10>${cfg.cachedir}/firstrun + fi + ) 9>${cfg.cachedir}/lockf + + exec flock ${cfg.cachedir}/firstrun ${run} + '' else "exec ${run}"; serviceConfig = { Type = "oneshot"; -- cgit 1.4.1