forked from fabian/nix
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   config,
 | |
|   lib,
 | |
|   pkgs,
 | |
|   ...
 | |
| }:
 | |
| with lib; let
 | |
|   cfg = config.local.sys.borgsync;
 | |
| in {
 | |
|   options.local.sys.borgsync = {
 | |
|     enable = mkEnableOption "borg backup to an rsync.net repo";
 | |
|     paths = mkOption {
 | |
|       type = with types; nullOr (coercedTo str singleton (listOf str));
 | |
|       default = null;
 | |
|       description = "Paths to back up.";
 | |
|     };
 | |
|     exclude = mkOption {
 | |
|       type = with types; listOf str;
 | |
|       description = "Exclude paths.";
 | |
|       default = [];
 | |
|     };
 | |
|     repoName = mkOption {
 | |
|       type = types.str;
 | |
|       description = "Remote rsync repository to back up to.";
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
|     services.borgbackup.jobs.rsync = {
 | |
|       paths = cfg.paths;
 | |
|       exclude = cfg.exclude;
 | |
|       user = "root";
 | |
|       group = "root";
 | |
|       doInit = true;
 | |
|       startAt = [
 | |
|         "hourly"
 | |
|       ];
 | |
|       inhibitsSleep = true;
 | |
|       persistentTimer = true;
 | |
| 
 | |
|       repo = "zh5777@zh5777.rsync.net:${cfg.repoName}";
 | |
|       encryption = {
 | |
|         mode = "repokey-blake2";
 | |
|         passCommand = "cat /var/trust/borg/${cfg.repoName}_passphrase";
 | |
|       };
 | |
|       compression = "auto,lz4";
 | |
|       prune = {
 | |
|         keep = {
 | |
|           hourly = 24;
 | |
|           daily = 7;
 | |
|           weekly = 4;
 | |
|           monthly = 12;
 | |
|           yearly = 99;
 | |
|         };
 | |
|       };
 | |
|       extraArgs = [
 | |
|         "--remote-path=borg14"
 | |
|       ];
 | |
|     };
 | |
| 
 | |
|     environment.sessionVariables.BORG_REMOTE_PATH = "borg14";
 | |
|   };
 | |
| }
 |