From 541377e5f0189819cfa50dacbb7569e26c06a3c0 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Fri, 21 Jul 2017 19:14:03 +0100 Subject: [PATCH 1/3] rsync service: modernize config file generation --- .../services/network-filesystems/rsyncd.nix | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/nixos/modules/services/network-filesystems/rsyncd.nix b/nixos/modules/services/network-filesystems/rsyncd.nix index 2018bfa14a5..a52fec4c407 100644 --- a/nixos/modules/services/network-filesystems/rsyncd.nix +++ b/nixos/modules/services/network-filesystems/rsyncd.nix @@ -8,22 +8,21 @@ let motdFile = builtins.toFile "rsyncd-motd" cfg.motd; - moduleConfig = name: - let module = getAttr name cfg.modules; in - "[${name}]\n " + (toString ( - map - (key: "${key} = ${toString (getAttr key module)}\n") - (attrNames module) - )); + foreach = attrs: f: + concatStringsSep "\n" (mapAttrsToList f attrs); - cfgFile = builtins.toFile "rsyncd.conf" - '' + cfgFile = '' ${optionalString (cfg.motd != "") "motd file = ${motdFile}"} ${optionalString (cfg.address != "") "address = ${cfg.address}"} ${optionalString (cfg.port != 873) "port = ${toString cfg.port}"} ${cfg.extraConfig} - ${toString (map moduleConfig (attrNames cfg.modules))} - ''; + ${foreach cfg.modules (name: module: '' + [${name}] + ${foreach module (k: v: + "${k} = ${v}" + )} + '')} + ''; in { @@ -91,10 +90,7 @@ in config = mkIf cfg.enable { - environment.etc = singleton { - source = cfgFile; - target = "rsyncd.conf"; - }; + environment.etc."rsyncd.conf".text = cfgFile; systemd.services.rsyncd = { description = "Rsync daemon"; From 94fc613cc7b2be6fb92ddfd5f2c1649b27459be0 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Fri, 21 Jul 2017 19:14:21 +0100 Subject: [PATCH 2/3] rsync service: restart service on configuration change --- nixos/modules/services/network-filesystems/rsyncd.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nixos/modules/services/network-filesystems/rsyncd.nix b/nixos/modules/services/network-filesystems/rsyncd.nix index a52fec4c407..0759fcc2a3b 100644 --- a/nixos/modules/services/network-filesystems/rsyncd.nix +++ b/nixos/modules/services/network-filesystems/rsyncd.nix @@ -95,6 +95,7 @@ in systemd.services.rsyncd = { description = "Rsync daemon"; wantedBy = [ "multi-user.target" ]; + restartTriggers = [ config.environment.etc."rsyncd.conf".source ]; serviceConfig.ExecStart = "${pkgs.rsync}/bin/rsync --daemon --no-detach"; }; From a4d07290cba3208a2ff930c8cfb594ff809ec7ad Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Fri, 21 Jul 2017 20:15:27 +0100 Subject: [PATCH 3/3] rsync service: allow running as not root --- .../services/network-filesystems/rsyncd.nix | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/network-filesystems/rsyncd.nix b/nixos/modules/services/network-filesystems/rsyncd.nix index 0759fcc2a3b..054057d52ab 100644 --- a/nixos/modules/services/network-filesystems/rsyncd.nix +++ b/nixos/modules/services/network-filesystems/rsyncd.nix @@ -83,6 +83,24 @@ in }; }; + user = mkOption { + type = types.str; + default = "root"; + description = '' + The user to run the daemon as. + By default the daemon runs as root. + ''; + }; + + group = mkOption { + type = types.str; + default = "root"; + description = '' + The group to run the daemon as. + By default the daemon runs as root. + ''; + }; + }; }; @@ -96,8 +114,11 @@ in description = "Rsync daemon"; wantedBy = [ "multi-user.target" ]; restartTriggers = [ config.environment.etc."rsyncd.conf".source ]; - serviceConfig.ExecStart = "${pkgs.rsync}/bin/rsync --daemon --no-detach"; + serviceConfig = { + ExecStart = "${pkgs.rsync}/bin/rsync --daemon --no-detach"; + User = cfg.user; + Group = cfg.group; + }; }; - }; }