diff options
author | Joachim Fasting <joachifm@users.noreply.github.com> | 2016-05-12 05:24:01 +0200 |
---|---|---|
committer | Joachim Fasting <joachifm@users.noreply.github.com> | 2016-05-12 05:24:01 +0200 |
commit | 1aff127b561d57e510861c83d69b567469481bdd (patch) | |
tree | a6be6ccee81324d21ca73aaf93c3c7fe6f4b1534 /nixos/modules/services | |
parent | 5ac6c666a128aa7248896645237a787684f36d0e (diff) | |
parent | 1e2ec5817c6f5642df34285fd2c74f100064c485 (diff) | |
download | nixlib-1aff127b561d57e510861c83d69b567469481bdd.tar nixlib-1aff127b561d57e510861c83d69b567469481bdd.tar.gz nixlib-1aff127b561d57e510861c83d69b567469481bdd.tar.bz2 nixlib-1aff127b561d57e510861c83d69b567469481bdd.tar.lz nixlib-1aff127b561d57e510861c83d69b567469481bdd.tar.xz nixlib-1aff127b561d57e510861c83d69b567469481bdd.tar.zst nixlib-1aff127b561d57e510861c83d69b567469481bdd.zip |
Merge pull request #10988 from Shados/improve-rsnapshot-service
rsnapshot service: Avoid package rebuild, create+use /etc/rsnapshot.conf
Diffstat (limited to 'nixos/modules/services')
-rw-r--r-- | nixos/modules/services/backup/rsnapshot.nix | 56 |
1 files changed, 27 insertions, 29 deletions
diff --git a/nixos/modules/services/backup/rsnapshot.nix b/nixos/modules/services/backup/rsnapshot.nix index 96657cf17fc5..ce628a720363 100644 --- a/nixos/modules/services/backup/rsnapshot.nix +++ b/nixos/modules/services/backup/rsnapshot.nix @@ -2,12 +2,30 @@ with lib; -let cfg = config.services.rsnapshot; +let + cfg = config.services.rsnapshot; + cfgfile = pkgs.writeText "rsnapshot.conf" '' + config_version 1.2 + cmd_cp ${pkgs.coreutils}/bin/cp + cmd_rsync ${pkgs.rsync}/bin/rsync + cmd_ssh ${pkgs.openssh}/bin/ssh + cmd_logger ${pkgs.inetutils}/bin/logger + cmd_du ${pkgs.coreutils}/bin/du + lockfile /run/rsnapshot.pid + + ${cfg.extraConfig} + ''; in { options = { services.rsnapshot = { enable = mkEnableOption "rsnapshot backups"; + enableManualRsnapshot = mkOption { + description = "Whether to enable manual usage of the rsnapshot command with this module."; + default = true; + example = false; + type = types.bool; + }; extraConfig = mkOption { default = ""; @@ -39,37 +57,17 @@ in as retain options. ''; }; - - package = mkOption { - type = types.package; - default = pkgs.rsnapshot; - defaultText = "pkgs.rsnapshot"; - example = literalExample "pkgs.rsnapshotGit"; - description = '' - RSnapshot package to use. - ''; - }; }; }; - config = mkIf cfg.enable (let - myRsnapshot = cfg.package.override { configFile = rsnapshotCfg; }; - rsnapshotCfg = with pkgs; writeText "gen-rsnapshot.conf" ('' - config_version 1.2 - cmd_cp ${coreutils}/bin/cp - cmd_rsync ${rsync}/bin/rsync - cmd_ssh ${openssh}/bin/ssh - cmd_logger ${inetutils}/bin/logger - cmd_du ${coreutils}/bin/du - lockfile /run/rsnapshot.pid - - ${cfg.extraConfig} - ''); - in { - environment.systemPackages = [ myRsnapshot ]; - + config = mkIf cfg.enable (mkMerge [ + { services.cron.systemCronJobs = - mapAttrsToList (interval: time: "${time} root ${myRsnapshot}/bin/rsnapshot ${interval}") cfg.cronIntervals; + mapAttrsToList (interval: time: "${time} root ${pkgs.rsnapshot}/bin/rsnapshot -c ${cfgfile} ${interval}") cfg.cronIntervals; } - ); + (mkIf cfg.enableManualRsnapshot { + environment.systemPackages = [ pkgs.rsnapshot ]; + environment.etc."rsnapshot.conf".source = cfgfile; + }) + ]); } |