about summary refs log tree commit diff
path: root/nixos/modules/services/networking/teamspeak3.nix
diff options
context:
space:
mode:
authorAlexei Robyn <shados@shados.net>2016-05-12 15:10:17 +1000
committerAlexei Robyn <shados@shados.net>2016-05-12 20:49:17 +1000
commit11b0972544d6761a56d922af9a48b9e05863d6b2 (patch)
tree8a7501676411da20eb37892bbd5e0576dd653bf4 /nixos/modules/services/networking/teamspeak3.nix
parentb874447eefdcb3ba8542fd4caed147742b98890b (diff)
downloadnixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar
nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.gz
nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.bz2
nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.lz
nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.xz
nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.tar.zst
nixlib-11b0972544d6761a56d922af9a48b9e05863d6b2.zip
teamspeak-server module: Create data directory by
leveraging users.users.<user>.createHome instead of a preStart script.
preStart script is still required to ensure proper creation of logging
directory.
Diffstat (limited to 'nixos/modules/services/networking/teamspeak3.nix')
-rw-r--r--nixos/modules/services/networking/teamspeak3.nix47
1 files changed, 23 insertions, 24 deletions
diff --git a/nixos/modules/services/networking/teamspeak3.nix b/nixos/modules/services/networking/teamspeak3.nix
index b3656d73dec0..5f04926eed24 100644
--- a/nixos/modules/services/networking/teamspeak3.nix
+++ b/nixos/modules/services/networking/teamspeak3.nix
@@ -10,13 +10,12 @@ let
 in
 
 {
-  
+
   ###### interface
 
   options = {
 
     services.teamspeak3 = {
-
       enable = mkOption {
         type = types.bool;
         default = false;
@@ -96,34 +95,32 @@ in
 
   ###### implementation
 
-  config = mkIf cfg.enable {
-
-    users.extraUsers.teamspeak =
-      { name = "teamspeak";
+  config = mkMerge [
+    (mkIf cfg.enable {
+      users.users.teamspeak = {
         description = "Teamspeak3 voice communication server daemon";
         group = group;
         uid = config.ids.uids.teamspeak;
+        home = cfg.dataDir;
+        createHome = true;
       };
 
-    users.extraGroups.teamspeak =
-      { name = "teamspeak";
+      users.groups.teamspeak = {
         gid = config.ids.gids.teamspeak;
       };
 
-    systemd.services.teamspeak3-server = { 
-      description = "Teamspeak3 voice communication server daemon";
-      after = [ "network.target" ];
-      wantedBy = [ "multi-user.target" ];
+      systemd.services.teamspeak3-server = {
+        description = "Teamspeak3 voice communication server daemon";
+        after = [ "network.target" ];
+        wantedBy = [ "multi-user.target" ];
 
-      preStart = ''
-        mkdir -p ${cfg.dataDir}
-        mkdir -p ${cfg.logPath}
-        chown ${user}:${group} ${cfg.dataDir}
-        chown ${user}:${group} ${cfg.logPath}
-      '';
+        preStart = ''
+          mkdir -p ${cfg.logPath}
+          chown ${user}:${group} ${cfg.logPath}
+        '';
 
-      serviceConfig =
-        { ExecStart = ''
+        serviceConfig = {
+          ExecStart = ''
             ${ts3}/bin/ts3server \
               dbsqlpath=${ts3}/lib/teamspeak/sql/ logpath=${cfg.logPath} \
               voice_ip=${cfg.voiceIP} default_voice_port=${toString cfg.defaultVoicePort} \
@@ -133,10 +130,12 @@ in
           WorkingDirectory = cfg.dataDir;
           User = user;
           Group = group;
-          PermissionsStartOnly = true; # preStart needs to run with root permissions
+          PermissionsStartOnly = true;
         };
       };
-
-  };
-
+    })
+    {
+      meta.maintainers = with lib.maintainers; [ arobyn ];
+    }
+  ];
 }