From 374abe15caecc2f55c2bba4509af642ca320b4df Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Fri, 4 Oct 2019 10:01:24 -0700 Subject: [PATCH] rsync: Correctly support using a non-default local user account Prior to this commit if the local user name was changed but the group was left at the default then neither the user nor group was created. This resulted in a failed `chown'. --- modules/backup/rsync.nix | 10 +++++++--- test/backup/rsync/default.nix | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/backup/rsync.nix b/modules/backup/rsync.nix index 8716ff1..5e5cd84 100644 --- a/modules/backup/rsync.nix +++ b/modules/backup/rsync.nix @@ -5,7 +5,6 @@ let cfg = config.phoebe.backup.rsync; cdir = config.phoebe.backup.directory; plib = config.phoebe.lib; - user = "backup"; port = builtins.head config.services.openssh.ports; scripts = (import ../../pkgs/default.nix { inherit pkgs; }).backup-scripts; @@ -157,7 +156,7 @@ in user = mkOption { type = types.str; - default = user; + default = config.phoebe.backup.user.name; description = "User to perform backups as."; }; @@ -176,7 +175,12 @@ in #### Implementation config = mkIf cfg.enable { - phoebe.backup.user.enable = cfg.user == user; + # Create user/group if necessary: + phoebe.backup.user.enable = + let user = config.phoebe.backup.user.name; + group = config.phoebe.backup.user.group; + in cfg.user == user || cfg.group == group; + systemd.services = toSystemd service; systemd.timers = toSystemd timer; }; diff --git a/test/backup/rsync/default.nix b/test/backup/rsync/default.nix index 96c3213..43c1025 100644 --- a/test/backup/rsync/default.nix +++ b/test/backup/rsync/default.nix @@ -20,6 +20,7 @@ pkgs.nixosTest { phoebe.backup.rsync = { enable = true; + user = "root"; schedules = [ { host = "localhost"; directory = "/tmp/backup";