summary refs log tree commit diff
path: root/nixos/modules/services/backup/rsnapshot.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/backup/rsnapshot.nix')
-rw-r--r--nixos/modules/services/backup/rsnapshot.nix56
1 files changed, 27 insertions, 29 deletions
diff --git a/nixos/modules/services/backup/rsnapshot.nix b/nixos/modules/services/backup/rsnapshot.nix
index 96657cf17fc..ce628a72036 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;
+    })
+  ]);
 }