summary refs log tree commit diff
path: root/nixos/modules/services/backup
diff options
context:
space:
mode:
authorLyndon Sanche <lsanche@lyndeno.ca>2021-12-24 15:04:39 -0700
committerLyndon Sanche <lsanche@lyndeno.ca>2021-12-29 08:35:41 -0700
commitc7008f8fdf49f1133c7d8d5524649d9ef239712d (patch)
treed3dfc8e729eb9b3bd694dd76a1a3cf02a4c30a27 /nixos/modules/services/backup
parent9c49aab2d21083b536c17ccb36a096ed68f34ac4 (diff)
downloadnixpkgs-c7008f8fdf49f1133c7d8d5524649d9ef239712d.tar
nixpkgs-c7008f8fdf49f1133c7d8d5524649d9ef239712d.tar.gz
nixpkgs-c7008f8fdf49f1133c7d8d5524649d9ef239712d.tar.bz2
nixpkgs-c7008f8fdf49f1133c7d8d5524649d9ef239712d.tar.lz
nixpkgs-c7008f8fdf49f1133c7d8d5524649d9ef239712d.tar.xz
nixpkgs-c7008f8fdf49f1133c7d8d5524649d9ef239712d.tar.zst
nixpkgs-c7008f8fdf49f1133c7d8d5524649d9ef239712d.zip
nixos/duplicati: Add dataDir to service
Other services such as minecraft-server and plex allow configuration of
the dataDir option, allowing the files stored by each service to be in a
custom location.

Co-authored-by: Aaron Andersen <aaron@fosslib.net>
Diffstat (limited to 'nixos/modules/services/backup')
-rw-r--r--nixos/modules/services/backup/duplicati.nix35
1 files changed, 26 insertions, 9 deletions
diff --git a/nixos/modules/services/backup/duplicati.nix b/nixos/modules/services/backup/duplicati.nix
index cf5aebdecd2..97864c44691 100644
--- a/nixos/modules/services/backup/duplicati.nix
+++ b/nixos/modules/services/backup/duplicati.nix
@@ -18,6 +18,20 @@ in
         '';
       };
 
+      dataDir = mkOption {
+        type = types.str;
+        default = "/var/lib/duplicati";
+        description = ''
+          The directory where Duplicati stores its data files.
+
+          <note><para>
+            If left as the default value this directory will automatically be created
+            before the Duplicati server starts, otherwise you are responsible for ensuring
+            the directory exists with appropriate ownership and permissions.
+          </para></note>
+        '';
+      };
+
       interface = mkOption {
         default = "127.0.0.1";
         type = types.str;
@@ -45,20 +59,23 @@ in
       description = "Duplicati backup";
       after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
-      serviceConfig = {
-        User = cfg.user;
-        Group = "duplicati";
-        StateDirectory = "duplicati";
-        ExecStart = "${pkgs.duplicati}/bin/duplicati-server --webservice-interface=${cfg.interface} --webservice-port=${toString cfg.port} --server-datafolder=/var/lib/duplicati";
-        Restart = "on-failure";
-      };
+      serviceConfig = mkMerge [
+        {
+          User = cfg.user;
+          Group = "duplicati";
+          ExecStart = "${pkgs.duplicati}/bin/duplicati-server --webservice-interface=${cfg.interface} --webservice-port=${toString cfg.port} --server-datafolder=${cfg.dataDir}";
+          Restart = "on-failure";
+        }
+        (mkIf (cfg.dataDir == "/var/lib/duplicati") {
+          StateDirectory = "duplicati";
+        })
+      ];
     };
 
     users.users = lib.optionalAttrs (cfg.user == "duplicati") {
       duplicati = {
         uid = config.ids.uids.duplicati;
-        home = "/var/lib/duplicati";
-        createHome = true;
+        home = cfg.dataDir;
         group = "duplicati";
       };
     };