From e50539f7b5a50e57c5807617abe089d467d60f7a Mon Sep 17 00:00:00 2001 From: Alexey Shmalko Date: Mon, 29 Jul 2019 21:56:12 +0300 Subject: syncthing: create default group if not overridden The following configuration generates a systemd unit that doesn't start. ```nix { services.syncthing = { enable = true; user = "my-user"; }; } ``` It fails with ``` systemd[1]: Started Syncthing service. systemd[6745]: syncthing.service: Failed to determine group credentials: No such process systemd[6745]: syncthing.service: Failed at step GROUP spawning /nix/store/n1ydz3i08nqp1ajc50ycy1zribmphqc9-syncthing-1.1.4-bin/bin/syncthing: No such process systemd[1]: syncthing.service: Main process exited, code=exited, status=216/GROUP systemd[1]: syncthing.service: Failed with result 'exit-code'. ``` This is due to the fact that `syncthing` group (default) is not created if the user is overridden. Add a separate check for setting up the default group, so that user/group are created independently. --- nixos/modules/services/networking/syncthing.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/networking/syncthing.nix b/nixos/modules/services/networking/syncthing.nix index 8148139c3a81..126f5b7b527b 100644 --- a/nixos/modules/services/networking/syncthing.nix +++ b/nixos/modules/services/networking/syncthing.nix @@ -372,16 +372,18 @@ in { systemd.packages = [ pkgs.syncthing ]; - users = mkIf (cfg.systemService && cfg.user == defaultUser) { - users."${defaultUser}" = + users.users = mkIf (cfg.systemService && cfg.user == defaultUser) { + "${defaultUser}" = { group = cfg.group; home = cfg.dataDir; createHome = true; uid = config.ids.uids.syncthing; description = "Syncthing daemon user"; }; + }; - groups."${defaultUser}".gid = + users.groups = mkIf (cfg.systemService && cfg.group == defaultUser) { + "${defaultUser}".gid = config.ids.gids.syncthing; }; -- cgit 1.4.1